From efd98eb084327f52bf2465dd60720b5e4cb7e937 Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Thu, 13 Jan 2022 09:20:59 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B8=85=E9=99=A4=E8=BF=87=E6=9C=9F=E6=96=87?= =?UTF-8?q?=E7=AB=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sources/talk/20170928 The Lineage of Man.md | 113 --- ...mportant Database You-ve Never Heard of.md | 50 - ...71128 The politics of the Linux desktop.md | 110 --- ...t Papers- Codd and the Relational Model.md | 44 - ... pivotal moments in open source history.md | 94 -- ... Did Ada Lovelace-s Program Actually Do.md | 138 --- .../talk/20181031 3 scary sysadmin stories.md | 124 --- .../20181218 The Rise and Demise of RSS.md | 146 --- ...r engineers choose the license- A guide.md | 62 -- ...90228 A Brief History of FOSS Practices.md | 113 --- ...nban- Which agile methodology is better.md | 95 -- ...ource- Strategies from around the world.md | 57 -- ...essentials- Physical, network, software.md | 64 -- .../20191001 The monumental impact of C.md | 143 --- ...lic- The real definition of open source.md | 85 -- ... Rust as your next programming language.md | 112 --- ...to know about Grace Hopper in six books.md | 65 -- ...siness value of open source communities.md | 117 --- .../20191029 5 reasons why I love Python.md | 168 ---- ...to get started with open source in 2020.md | 88 -- ... solution to burnout worth investing in.md | 100 -- ... with blockchain-focused security group.md | 52 -- ...5 7 Ways NOT to manage your remote team.md | 116 --- ...that compute and store in one component.md | 56 -- ...00107 Wi-Fi 6 is slowly gathering steam.md | 79 -- ... Application Access Worldwide with SASE.md | 86 -- ...f practice can do for your organization.md | 65 -- ...re ‘teleportation- of data in the works.md | 68 -- ...ls to level-up your tech career in 2020.md | 160 ---- ...d launches Archive cold storage service.md | 73 -- ...GNU-Linux is Turning into Hyperbola BSD.md | 174 ---- ...ed from starting an open source project.md | 97 -- ...ond Moore-s Law- Neuromorphic computing.md | 86 -- ...ver enough- Working openly with anxiety.md | 93 -- ...System76-s open source firmware project.md | 67 -- ...formation can reveal network weaknesses.md | 102 --- ...-center spending will inch up this year.md | 54 -- ...00124 How Open-RAN could ‘white-box- 5G.md | 70 -- ... cloud instances available- from Google.md | 60 -- ...obability Facts for Systems Programming.md | 117 --- ...nization-s approach to new technologies.md | 84 -- ... now have a Mac Pro in your data center.md | 66 -- ...0 Intel denies reports of Xeon shortage.md | 64 -- ...cteria could run the Internet of Things.md | 70 -- ...e replaced by its cloud, Red Hat chiefs.md | 62 -- ...questions every project needs to answer.md | 80 -- ...Bulletin Board Systems- The VICE Exposé.md | 127 --- ...uity firms are gobbling up data centers.md | 66 -- ...igns anxiety may be affecting your work.md | 92 -- ...06 How Drupal 8 aims to be future-proof.md | 114 --- ... vs. proprietary- What-s the difference.md | 72 -- ...os should know about but probably don-t.md | 106 --- ...0200211 Future ‘smart walls- key to IoT.md | 74 -- ...o should lead the push for IoT security.md | 75 -- ...on can-t happen without standardization.md | 91 -- sources/talk/20200212 A SASE Crash Course.md | 67 -- ...ected to decline 10- due to coronavirus.md | 63 -- ...duct marketing your open source project.md | 115 --- ...Background Story of AppImage -Interview.md | 128 --- ...computers and The Soul of a New Machine.md | 95 -- ...ding a community of practice in 5 steps.md | 99 -- ...tes brain signals into digital commands.md | 62 -- ...he Czech National Library of Technology.md | 54 -- ... Cloud moves to aid mainframe migration.md | 64 -- ...rm announces potential 80TB hard drives.md | 57 -- ..., Present and Future of FreeBSD Project.md | 106 --- ...ing openly with anxiety affects my team.md | 86 -- ...26 How we decide when to release Fedora.md | 74 -- ...- Balancing Open Source with Guardrails.md | 86 -- ...ssa Di Donato Is Going To Reinvent SUSE.md | 91 -- ... takes aim at Huawei 5G market presence.md | 59 -- ... To ‘Signal- For Internal Communication.md | 70 -- ...ness With a New Open Source Game Engine.md | 120 --- ...ged infrastructure for your data center.md | 113 --- ...r organization-s technological maturity.md | 173 ---- ...ays from Cisco-s Annual Internet Report.md | 78 -- ...urce adoption, and more industry trends.md | 61 -- ...dity inspire new ways to generate power.md | 79 -- ... network to support autonomous vehicles.md | 61 -- ...t- Most IoT transactions are not secure.md | 61 -- ...ow I learned about burnout the hard way.md | 111 --- ... There are 100-s of Linux Distributions.md | 193 ---- ...ed Android Fork is Making Good Progress.md | 115 --- ...a-center power consumption holds steady.md | 60 -- ...f up for success while working remotely.md | 61 -- ...on requires better security, automation.md | 92 -- ...prises need to rethink network security.md | 81 -- ...6 How to be the right person for DevOps.md | 108 --- ...I everywhere- IoT chips coming from Arm.md | 61 -- ...uld sweat to cool down, say researchers.md | 61 -- ...arns of five SD-WAN security weaknesses.md | 74 -- ...technical debt is risking your security.md | 85 -- ...asure your open source community health.md | 110 --- ...acity, but core networks are holding up.md | 107 --- ...oud providers and conferencing services.md | 96 -- ...ing IoT technology to disease detection.md | 55 -- ...The coming together of SD-WAN and AIOps.md | 104 --- ...OVID-19 on public networks and security.md | 119 --- ...or developing a work from home schedule.md | 108 --- ...its of cloud-native networking for SASE.md | 82 -- ...Ns for quickly ramping up remote access.md | 98 -- ... changing with a work-at-home workforce.md | 114 --- ...2 When debugging, your attitude matters.md | 101 --- ...00405 Book review- Nine Lies About Work.md | 106 --- ...ifferential Analyzer (to Murder People).md | 147 --- ...ood documentation for software projects.md | 156 ---- ...rce activities while you work from home.md | 99 -- ...orld of Warcraft introduced me to Linux.md | 82 -- .../talk/20200415 Fedora Origins - Part 01.md | 126 --- ...ardware without hurting the environment.md | 102 --- ...rame family, intensifies Linux security.md | 75 -- ...N, edge networking and security are hot.md | 96 -- ... could help track COVID-19 transmission.md | 55 -- ...t energy will power IoT, scientists say.md | 66 -- ... I-ve adjusted my work-from-home habits.md | 86 -- ...o become more impactful - Chip Childers.md | 58 -- ...es for open source community management.md | 116 --- ...n source technology for web development.md | 102 --- ...underwater Internet of Things will work.md | 61 -- ...20200421 What is a High Traffic Website.md | 98 -- ... Getting to know our new, virtual world.md | 72 -- ...4 FCC boosts Wi-Fi 6 spectrum five-fold.md | 72 -- ...Hat Enterprise Linux 8.2 Hits the stage.md | 89 -- ...and consulting software business models.md | 81 -- ... Agile- Do they have anything in common.md | 85 -- ... and reach millions through open source.md | 78 -- ...s could -eat metal- to power themselves.md | 67 -- ... Red Hat Summit 2020 virtual experience.md | 64 -- ...pact of canceling PyCon due to COVID-19.md | 129 --- ...5 11 DevOps lessons from My Little Pony.md | 96 -- ...t into edge, AI, hybrid-cloud expansion.md | 78 -- ... study finds Power over Ethernet issues.md | 67 -- ...Jerry Bezencon of Linux Lite -Interview.md | 95 -- ...standards guide us in a world of change.md | 59 -- ... Own and Fueling Open Source Innovation.md | 59 -- ...mmon open source testing myths debunked.md | 86 -- ...s what it needs from the the technology.md | 77 -- .../20200607 Is your team a -glue team.md | 121 --- ... make your next meeting more productive.md | 87 -- ...eetings we-re taking back to the office.md | 92 -- ...troducing the Open Management Practices.md | 97 -- ...614 Who is the glue person on your team.md | 113 --- ...ource- GNOME president shares her story.md | 164 ---- ...packs Mean for Developers and Operators.md | 83 -- ...ing-s Misappropriated REST Dissertation.md | 125 --- ...ricting licenses qualify as open source.md | 79 -- ...The open organization everyone deserves.md | 70 -- ...open project-s governance model evolves.md | 97 -- ...w wireless networks can battle COVID-19.md | 52 -- ... COVID-19 on the Global Digital Economy.md | 79 -- ...r migrating mainframe apps to the cloud.md | 87 -- ...nting software developed by accountants.md | 151 ---- ...ks to improve contact tracing in Europe.md | 201 ----- ... faster switches, intelligent computing.md | 58 -- ... computers to support distance learning.md | 70 -- ...26 Globalization- A history of openness.md | 82 -- ...l IoT devices less secure than old ones.md | 72 -- ...for business and consumers collectively.md | 105 --- ...s to Tesla for renewable energy storage.md | 62 -- ...source as a Linux systems administrator.md | 70 -- ...DX In Open Source Software Supply Chain.md | 84 -- ... management framework for data mobility.md | 67 -- ...20200731 Linux dominates supercomputing.md | 76 -- ... 8 tips for running a virtual hackathon.md | 123 --- ...tion a priority in open source projects.md | 68 -- ...egree to work with open source software.md | 55 -- ...r 26 years of open source collaboration.md | 53 -- ... IoT release, and more open source news.md | 79 -- ...its Workforce Tells us About its Future.md | 107 --- .../20200817 What makes Java open source.md | 68 -- ...ets customers try out quantum computing.md | 70 -- ...ays a legal team can enable open source.md | 86 -- ... open source tools for remote employees.md | 77 -- ...823 Open organizations through the ages.md | 69 -- .../20200824 Origin stories about Unix.md | 75 -- ...hy we open sourced our security project.md | 102 --- ...st open sourced its DNS management tool.md | 95 -- ... power of open source during a pandemic.md | 71 -- .../20200831 Making Zephyr More Secure.md | 59 -- ... Project For Earthquake Warning Systems.md | 94 -- ...ns Jamstack is changing web development.md | 115 --- ...ney to becoming an open source engineer.md | 137 --- ...rce project needs more than just coders.md | 68 -- ...20200911 Ankur Sinha- How do you Fedora.md | 151 ---- ... open source legal teams can get to yes.md | 77 -- ...enovo introduces four new HCI solutions.md | 78 -- ...he future of IoT depends on open source.md | 80 -- ... breaking my back led me to open source.md | 97 -- ...vercoming resistance to open management.md | 58 -- ...00923 How my students taught me to code.md | 67 -- ...on, sustained by Linux and hybrid cloud.md | 135 --- ...ld a global open organization look like.md | 121 --- ...er research with an open source mindset.md | 117 --- ...ads network virtualization and security.md | 71 -- ...lights security in COVID-era networking.md | 85 -- ...os Move from Black boxes to Open Source.md | 92 -- ...f great open source developer advocates.md | 91 -- ...odel, business model, or something else.md | 130 --- ...te to open source software in their job.md | 77 -- ...y it-s important to keep the cloud open.md | 87 -- ...n the open source software supply chain.md | 75 -- ...ings I-ve learned about email marketing.md | 139 --- ...urney to becoming an open source mentor.md | 92 -- ...ments are where innovative ideas thrive.md | 104 --- ...velopers As Most Sought After Skill Set.md | 76 -- ...sistant for open source home automation.md | 105 --- ...inability by tracking these two metrics.md | 146 --- ...s build team culture around open source.md | 67 -- ...tificial intelligence using open source.md | 60 -- ...el my inner Star Trek character at work.md | 57 -- ...hing to say- How to get started writing.md | 87 -- ... AI ethics and how open source can help.md | 85 -- ...es between inner source and open source.md | 87 -- ...e should be normalized and how to do it.md | 90 -- ...is the key to innovation, history shows.md | 106 --- ...Ops culture with open source principles.md | 85 -- .../20201214 Ben Cotton- How Do You Fedora.md | 103 --- ...g to an open source alternative in 2020.md | 79 -- ...e my open source virtual reality server.md | 153 ---- ...ts from pivoting to remote work in 2020.md | 96 -- ...ty developer got started in open source.md | 119 --- ...rverless strategies to look for in 2021.md | 62 -- ...your calendar with this simple strategy.md | 73 -- ...ons from my internship with open source.md | 99 -- ...ource was essential to business in 2020.md | 72 -- ... Understanding Open Governance Networks.md | 100 -- ...source products from upstream suppliers.md | 124 --- ...212 How to adopt DevSecOps successfully.md | 128 --- ...13 5 reasons why I love coding on Linux.md | 102 --- ...des students with real-world experience.md | 112 --- ...ing from the heart to the public domain.md | 70 -- ...210216 How Ansible got started and grew.md | 86 -- ...y job in the tech industry is technical.md | 69 -- ... What makes the Linux community special.md | 57 -- ...Why Linux is critical to edge computing.md | 58 -- ...Kubernetes maintainer in 4 hours a week.md | 104 --- ...ses and open source license enforcement.md | 63 -- ...ic for Fun, Relaxation and Productivity.md | 134 --- ...programming by learning how things work.md | 222 ----- ...pen leaders by getting out of their way.md | 80 -- ...vates open source software contributors.md | 93 -- ...JDK Business- What Does it Mean for You.md | 98 -- ... with your favorite open source project.md | 116 --- ...r open source project to the next level.md | 116 --- ...ses open source to fight climate change.md | 74 -- ...c development begins with open thinking.md | 124 --- .../talk/20210502 15 unusual paths to tech.md | 92 -- ... organizations where leaders can emerge.md | 122 --- ...practices in knowledge-sharing projects.md | 112 --- ... tech job- 8 stories from the community.md | 58 -- ...true stories about switching to Linux.md、 | 92 -- ... How Linux made a school pandemic-ready.md | 75 -- ... to your open source project-s security.md | 82 -- ...a free and open source operating system.md | 150 --- ... principles to your open source project.md | 224 ----- ...ve This Annoying ‘Feature- from Firefox.md | 66 -- ...sts share their work-from-home uniforms.md | 117 --- ... this common open source scanning error.md | 90 -- ... call post-modern system administrators.md | 76 -- ...731 Dealing with burnout in open source.md | 105 --- ...one meeting doesn-t have to be this way.md | 86 -- ...ogramming language and early adventures.md | 116 --- ...xpectations for open source maintainers.md | 104 --- ... open, focused, and energizing meetings.md | 99 -- ...pen source learning experience platform.md | 64 -- ...at I miss about open source conferences.md | 45 - ...ganizations choose open source software.md | 90 -- ...0928 Modeling open management practices.md | 101 --- ...source community with content marketing.md | 88 -- ...g- gene signatures and connectivity map.md | 133 --- ...iting Advanced Web Applications with Go.md | 658 -------------- ...ications on an embedded key value store.md | 93 -- ...s in Linux- What every user should know.md | 103 --- ...vices- Monitoring Files and Directories.md | 152 ---- ...oot Password on RHEL 7-CentOS 7 Systems.md | 254 ------ ...ets management tools for Git encryption.md | 161 ---- ...e real world using Rust on Raspberry Pi.md | 141 --- ... Using Idempotency with Ansible- Part 1.md | 94 -- ...e Everything In Single Command On Linux.md | 207 ----- ... Using Idempotency with Ansible- Part 2.md | 116 --- ... Using Idempotency with Ansible- Part 3.md | 118 --- ...523 Hardware bootstrapping with Ansible.md | 223 ----- .../20190612 The bits and bytes of PKI.md | 284 ------ ... Compared - AppImage vs Snap vs Flatpak.md | 222 ----- ...15 12 extensions for your GNOME desktop.md | 130 --- ...ucture is code- A story of COBOL and Go.md | 84 -- ...911 10 Ansible modules you need to know.md | 381 -------- .../tech/20191021 How to build a Flatpak.md | 320 ------- ...1 A guide to intermediate awk scripting.md | 140 --- ... 5 open source plugins for Flutter apps.md | 853 ------------------ ...ng Linux and Windows hosts with Glances.md | 231 ----- ...03 Tracking Translations with Transtats.md | 106 --- ...ocial media posts with this Gawk script.md | 126 --- ...ht- Catfish Desktop File Searching Tool.md | 107 --- ...duction to the Linux goto shell utility.md | 599 ------------ ...ting the creation of research artifacts.md | 232 ----- ...PU steal time in guest virtual machines.md | 70 -- ... demo project templates with one script.md | 130 --- ...raded my CuBox open source music server.md | 237 ----- ...rsync configurations via named profiles.md | 380 -------- ... Source Digital Audio Workstation (DAW).md | 127 --- ...6 Automating Helm deployments with Bash.md | 385 -------- ...tely Manage Multiple Zorin OS Computers.md | 108 --- ...tions and How to Create Them for Fedora.md | 141 --- ... - how to use keyboard during boot time.md | 96 -- ...cket League is Ending Support For Linux.md | 80 -- ...on for multi-cloud application services.md | 69 -- ...et started with test-driven development.md | 77 -- ...y date night with StreetComplete quests.md | 68 -- ...I teach physics using open source tools.md | 175 ---- ... I-ve learned writing Ansible playbooks.md | 221 ----- ...e desktop tools- Download our new eBook.md | 52 -- ...dle- Here-s an Open Source eBook Reader.md | 109 --- ... your network with open source software.md | 105 --- ...ways to use Emacs as your RPG dashboard.md | 182 ---- ...hunderbird gets new home, and more news.md | 77 -- ...20200203 New zine- Become a SELECT Star.md | 72 -- ...e Roles Quick Start Guide with Examples.md | 430 --------- ... Protect Your Email Inbox From Spammers.md | 158 ---- ...nsus to monitor your Kubernetes cluster.md | 107 --- ...207 Introducing Zuul for improved CI-CD.md | 84 -- ... your live demos with this shell script.md | 210 ----- ...tificates with the ssl-on-demand script.md | 685 -------------- ...g unit tests in test-driven development.md | 69 -- ...0218 Getting started with OpenTaxSolver.md | 124 --- ...How to embed Twine stories in WordPress.md | 229 ----- ...niently unsubscribe from a mailing list.md | 93 -- ...0221 Don-t like loops- Try Java Streams.md | 427 --------- sources/tech/20200223 The Zen of Go.md | 414 --------- ...ncrypted backups to the cloud on Fedora.md | 237 ----- .../20200228 Fedora-s gaggle of desktops.md | 411 --------- ...ice for your open source budgeting tool.md | 168 ---- ...h lightweight alternatives to GNU Emacs.md | 164 ---- ...tion relates to test-driven development.md | 428 --------- .../20200305 5 productivity apps for Linux.md | 153 ---- ...n Fedora Silverblue - Just a Quick Look.md | 209 ----- ...set up the Raspberry Pi Zero for travel.md | 472 ---------- ...hiteboard collaboratively with Drawpile.md | 118 --- ...lay to a travel-ready Raspberry Pi Zero.md | 281 ------ ...rated from a Mac Mini to a Raspberry Pi.md | 184 ---- ...n attempts with test-driven development.md | 288 ------ ...ommand on binary files with this script.md | 772 ---------------- ... How to detect outdated Kubernetes APIs.md | 234 ----- ... Marrying Cloud Foundry with Kubernetes.md | 79 -- ...en in Python, and more open source news.md | 82 -- ...wiss Army Knife of Remote Working Tools.md | 154 ---- ... drives on Linux- What you need to know.md | 233 ----- ...200401 How does kanban relate-to DevOps.md | 117 --- ...ensing prosthetic with the Raspberry Pi.md | 85 -- ...chat- 4 best practices for remote teams.md | 92 -- ...lenge Offering up to -65,000 in Rewards.md | 84 -- ...ts at home with this simple Bash script.md | 152 ---- ...g mode to easily create LaTeX documents.md | 142 --- ...Kubernetes saved my desktop application.md | 55 -- ...his helpful Bash script when stargazing.md | 121 --- ...eople can help fight COVID-19 with code.md | 139 --- ...ubernetes HTTP router and reverse proxy.md | 196 ---- ...orting 100- of code coverage reasonable.md | 174 ---- ...uide to keeping WordPress sites updated.md | 116 --- ...IS projects for Kubernetes applications.md | 99 -- ...Hugo for my classroom-s open source CMS.md | 99 -- ...vantage of Linux-s extensive vocabulary.md | 273 ------ .../20200427 New zine- How Containers Work.md | 121 --- ...music recordings with Audacity on Linux.md | 161 ---- ...Serving The Common Goals of Enterprises.md | 77 -- ... source alternative to Google Analytics.md | 123 --- ...your talk accepted at a tech conference.md | 127 --- ...zing data science code with R and Emacs.md | 133 --- .../tech/20200508 Metaphors in man pages.md | 182 ---- ... coronavirus IoT and robotics solutions.md | 86 -- ...e-s energy consumption with open source.md | 144 --- ...0200515 The pieces of Fedora Silverblue.md | 172 ---- sources/tech/20200516 Fatih-s question.md | 214 ----- ...mplement REST API in JavaScript- part 2.md | 208 ----- ...ux to open Linux on Windows 10 machines.md | 153 ---- ...verblue, an introduction for developers.md | 140 --- ...21 Glico (Weighted Rock Paper Scissors).md | 141 --- ...iamond interface composition in Go 1.14.md | 124 --- ...or Keeping a Track of Clipboard History.md | 113 --- ...rivers has Upset Vintage Hardware Users.md | 85 -- ...veloping and Using Open Source Software.md | 84 -- ... Uploading it to Cloud With Cryptomator.md | 184 ---- ...ssign Static IP Address on Ubuntu Linux.md | 179 ---- ...o Compress PDF in Linux -GUI - Terminal.md | 99 -- ...Mint in VirtualBox -Screenshot Tutorial.md | 194 ---- ...w- Free and Open Source Grammar Checker.md | 155 ---- ...arch and Find Details of Packages in Ubuntu.md | 172 ---- ...ot have a release file- Error in Ubuntu.md | 115 --- ...ontent in WordPress with the H5P plugin.md | 130 --- ...ta- One Step Forward and Two Steps Back.md | 90 -- ...are the pros and cons of virtual events.md | 51 -- ...rivate open source alternative to Alexa.md | 95 -- ...scussion Through Better Online Identity.md | 85 -- ...he Difference- Which one Should You Use.md | 197 ---- ...2- Simple Local File-Sharing with Samba.md | 488 ---------- ...stall Opera Browser on Ubuntu -Easy Way.md | 149 --- ... Tool -For Intermediate to Expert Users.md | 194 ---- ...- Provides Rolling Release for Every User.md | 219 ----- ... remixing distributions at 17 years old.md | 65 -- ...ned about Kubernetes garbage collection.md | 88 -- ...le bit of plain Javascript can do a lot.md | 115 --- ...our first Mycroft AI skill using Python.md | 338 ------- ...anage your Kubernetes cluster with Lens.md | 122 --- ...ur data with associative arrays in Bash.md | 106 --- ...ing way to do data science with Node.js.md | 450 --------- ...you should use Node.js for data science.md | 450 --------- ...6 Advice for getting started with GNOME.md | 155 ---- ...our open source home automation project.md | 600 ------------ ...ls to boost your web development skills.md | 248 ----- ...RED with image recognition applications.md | 113 --- ...tu- Everything You Should Know About it.md | 182 ---- .../tech/20200630 What-s New in Harbor 2.0.md | 72 -- ... your Raspberry Pi homelab with MetalLB.md | 282 ------ ...EGO designs in Blender with this plugin.md | 100 -- ...iagram -80-20 Rule- in LibreOffice Calc.md | 146 --- .../20200703 What does a scrum master do.md | 68 -- ... Machine is Now Available in a New Size.md | 104 --- ...e to Terraform for Kubernetes beginners.md | 735 --------------- ...de to Lens- A new way to see Kubernetes.md | 246 ----- ...ompliance scalable in a container world.md | 168 ---- ...dio from a lost format with open source.md | 133 --- ...n open source alternative to SharePoint.md | 90 -- ... to an open source alternative to Slack.md | 190 ---- ...ernative to Google Suite with Nextcloud.md | 127 --- ...ditors for Web Developers and Designers.md | 203 ----- ...727 What does it mean for code to -work.md | 91 -- ...8 Why now is the best time to use GNOME.md | 106 --- ...nstrating Perl with Tic-Tac-Toe, Part 4.md | 144 --- ...ning Linux introduced me to open source.md | 78 -- ...nd Other Linux Distributions -3 Methods.md | 207 ----- ...ice assistant skill to life with Python.md | 273 ------ ...oise suppression for video conferencing.md | 198 ---- ...olution for continuous testing at scale.md | 104 --- ...atthew Arnold- Why I switched to Fedora.md | 100 -- ...Kubernetes on your Raspberry Pi homelab.md | 92 -- ... hotspot with Raspberry Pi 3 and Fedora.md | 371 -------- ...I still love tcsh after all these years.md | 152 ---- ...or giving and receiving better feedback.md | 135 --- ...in Ubuntu and other Linux Distributions.md | 163 ---- ... Declarations for C and C-- Programmers.md | 310 ------- ...ualization technologies to know in 2020.md | 177 ---- ...ble Linux laptop for video conferencing.md | 75 -- ...activities for kids to try this weekend.md | 65 -- ...ur sound with PulseEffects- Microphones.md | 90 -- ... camera with Node-RED and TensorFlow.js.md | 179 ---- ...to Ubuntu and Other Linux Distributions.md | 249 ----- ...organization-s supply chain with Groovy.md | 229 ----- ...Distribution is Definitely Worth a Look.md | 144 --- ...l for cloud services with Apache Ranger.md | 63 -- ...te a slide deck using Jupyter Notebooks.md | 108 --- ...source test framework evolves with .NET.md | 156 ---- ... service mesh, and more industry trends.md | 69 -- ...ge your Raspberry Pi fleet with Ansible.md | 229 ----- ...n Source Projects Runs into Controversy.md | 83 -- ...ces remotely with this open source tool.md | 277 ------ ...protect yourself from imposter syndrome.md | 59 -- ...1 Solve a real-world problem using Java.md | 328 ------- ...to simulate Babbage-s Difference Engine.md | 91 -- ...00922 Run Linux apps on your Chromebook.md | 187 ---- ...n open source alternative to Confluence.md | 107 --- ...Against COVID-19 With Your Linux System.md | 231 ----- ...25 Code your first algorithm in Scratch.md | 151 ---- ...es 25 high-threat flaws for IOS, IOS XE.md | 68 -- ...ript mimics Babbage-s Difference Engine.md | 106 --- ...200929 Xen on Raspberry Pi 4 adventures.md | 156 ---- ...no- An Open Source Project for the Edge.md | 63 -- ...1001 Bringing COBOL to the Modern World.md | 101 --- ... teach kids how to program a video game.md | 165 ---- ...sing an open source cross-platform tool.md | 199 ---- ...o failure and transform it into success.md | 106 --- ... My open source video game for Open Jam.md | 235 ----- ...e-free Server Logging using Named Pipes.md | 114 --- ...raft server with Ansible-s Helm modules.md | 172 ---- ...le for integrating your Google Calendar.md | 186 ---- ...d boot and trusted boot means for Linux.md | 70 -- .../20201014 Web of Trust, Part 1- Concept.md | 86 -- ...20201019 Web of Trust, Part 2- Tutorial.md | 198 ---- ...ncremental backup with Butterfly Backup.md | 290 ------ ... project crowdsources internet security.md | 89 -- ...201026 Manage content using Pulp Debian.md | 173 ---- .../20201026 Pi from High School Maths.md | 155 ---- ... old hardware back to life with OpenBSD.md | 73 -- ...acros-Scripts Using AntiMicroX in Linux.md | 106 --- ...20201102 5 reasons to use Linux in 2020.md | 87 -- ... Pi Zero W Projects for DIY Enthusiasts.md | 364 -------- ...0201103 A Brief History of Ubuntu Touch.md | 154 ---- ... I-m doing another Recurse Center batch.md | 79 -- ...m your microcontroller with MicroBlocks.md | 144 --- ...t up Minishift and run Jenkins on Linux.md | 311 ------- .../20201111 Create your first Knative app.md | 469 ---------- ...201111 Day 3- an infinitely tall fridge.md | 46 - ...t for my home-s Linux server management.md | 175 ---- ...ile Operating System for Feature Phones.md | 116 --- ...o Find Meaning of Words You Come Across.md | 133 --- ...E apps on this Linux reference platform.md | 70 -- ...201114 Woothee (HTTP User Agent Parser).md | 158 ---- ...- drawing lots of faces with sketch-rnn.md | 87 -- ... multiple Terraform versions with tfenv.md | 262 ------ ...201117 How to upgrade to Terraform 0.12.md | 503 ----------- ... Scientific Method to agile development.md | 170 ---- ... Day 8- Start with something that works.md | 66 -- ...enerating a lot of nonsense with an RNN.md | 151 ---- ...ationship between labor and open source.md | 51 -- ...y 10- Training an RNN to count to three.md | 56 -- ... success metrics for open source events.md | 98 -- ...20 What do open source product teams do.md | 113 --- ...rce brings musicians together virtually.md | 67 -- ...3 Day 11- learning about learning rates.md | 105 --- ...ginner-s guide to developing with React.md | 284 ------ ...on detection system with a Raspberry Pi.md | 295 ------ ...-performing open source communities use.md | 181 ---- ...g started with Stratis - up and running.md | 182 ---- ... up OpenStack on a Raspberry Pi cluster.md | 246 ----- .../20201202 Vagrant beyond the basics.md | 372 -------- ...with this open source productivity tool.md | 88 -- ...tion Being Developed by Linux Mint Team.md | 104 --- ...ing a standard for digital public goods.md | 124 --- ...y this Linux text editor for Emacs fans.md | 90 -- ...ored But Handy Feature in Linux Desktop.md | 70 -- ...ltiple service instances with systemctl.md | 182 ---- ...t to manage your open source smart home.md | 150 --- ...ays Kubernetes optimizes your IT budget.md | 81 -- ... open source alternative to Google Docs.md | 92 -- ...oration Platform -Nextcloud Alternative.md | 123 --- ...am Deck on Linux with open source tools.md | 121 --- ...tice coding in Groovy by writing a game.md | 173 ---- ...d infrastructure with open source tools.md | 147 --- .../20201211 Learn Julia by coding a game.md | 127 --- ...rPad as your Linux terminal text editor.md | 68 -- ... to List and Remove a GPG Key in Ubuntu.md | 146 --- ... Beautiful Neon Look -Review with Video.md | 150 --- ...te in XML with the NetBeans text editor.md | 81 -- ...d Computing Costs by Half with Unikraft.md | 65 -- ...Resize Images with Right Click on Linux.md | 149 --- ...e Collaboration -P2P GitHub Alternative.md | 109 --- ...citing features of the Howl text editor.md | 107 --- .../20201218 The role of empathy in DevOps.md | 68 -- ...201218 Using pods with Podman on Fedora.md | 190 ---- ...guage by programming a game in Algol 68.md | 242 ----- ...pen source security practices from 2020.md | 82 -- ...1 Try a text editor inspired by Notepad.md | 97 -- ...om sysadmins adapting to change in 2020.md | 59 -- ...utomatically Accept SSH Key Fingerprint.md | 150 --- ...10 Raspberry Pi project ideas from 2020.md | 88 -- ...oy Fedora CoreOS servers with Terraform.md | 388 -------- ...use the Eclipse IDE as your text editor.md | 79 -- ...cal DevOps concepts we explored in 2020.md | 80 -- ...6 10 open source news headlines of 2020.md | 92 -- ...t down your ideas in a digital notebook.md | 74 -- ...rnate computing with the Pe text editor.md | 79 -- ...rnative to Slack That You Can Self-host.md | 119 --- ... for getting started with CI-CD in 2021.md | 58 -- ...htening talks from All Things Open 2020.md | 113 --- ...20210104 8 Kubernetes insights for 2021.md | 63 -- ...advance your JavaScript journey in 2021.md | 91 -- ... up on these 4 virtual events from 2020.md | 89 -- 556 files changed, 73914 deletions(-) delete mode 100644 sources/talk/20170928 The Lineage of Man.md delete mode 100644 sources/talk/20171007 The Most Important Database You-ve Never Heard of.md delete mode 100644 sources/talk/20171128 The politics of the Linux desktop.md delete mode 100644 sources/talk/20171229 Important Papers- Codd and the Relational Model.md delete mode 100644 sources/talk/20180201 6 pivotal moments in open source history.md delete mode 100644 sources/talk/20180818 What Did Ada Lovelace-s Program Actually Do.md delete mode 100644 sources/talk/20181031 3 scary sysadmin stories.md delete mode 100644 sources/talk/20181218 The Rise and Demise of RSS.md delete mode 100644 sources/talk/20190227 Let your engineers choose the license- A guide.md delete mode 100644 sources/talk/20190228 A Brief History of FOSS Practices.md delete mode 100644 sources/talk/20190808 Scrum vs. kanban- Which agile methodology is better.md delete mode 100644 sources/talk/20190831 Why support open source- Strategies from around the world.md delete mode 100644 sources/talk/20190903 IoT security essentials- Physical, network, software.md delete mode 100644 sources/talk/20191001 The monumental impact of C.md delete mode 100644 sources/talk/20191003 Sharing vs. free vs. public- The real definition of open source.md delete mode 100644 sources/talk/20191009 Why to choose Rust as your next programming language.md delete mode 100644 sources/talk/20191011 Everything you need to know about Grace Hopper in six books.md delete mode 100644 sources/talk/20191017 Measuring the business value of open source communities.md delete mode 100644 sources/talk/20191029 5 reasons why I love Python.md delete mode 100644 sources/talk/20200101 How to get started with open source in 2020.md delete mode 100644 sources/talk/20200104 DevOps is a solution to burnout worth investing in.md delete mode 100644 sources/talk/20200104 Industrial Internet Consortium teams up with blockchain-focused security group.md delete mode 100644 sources/talk/20200105 7 Ways NOT to manage your remote team.md delete mode 100644 sources/talk/20200107 Researchers aim for transistors that compute and store in one component.md delete mode 100644 sources/talk/20200107 Wi-Fi 6 is slowly gathering steam.md delete mode 100644 sources/talk/20200109 How to Deliver Affordable and Optimized Application Access Worldwide with SASE.md delete mode 100644 sources/talk/20200114 What communities of practice can do for your organization.md delete mode 100644 sources/talk/20200115 Instant, secure ‘teleportation- of data in the works.md delete mode 100644 sources/talk/20200116 4 core skills to level-up your tech career in 2020.md delete mode 100644 sources/talk/20200116 Google Cloud launches Archive cold storage service.md delete mode 100644 sources/talk/20200117 Insights into Why Hyperbola GNU-Linux is Turning into Hyperbola BSD.md delete mode 100644 sources/talk/20200118 7 things I learned from starting an open source project.md delete mode 100644 sources/talk/20200121 Beyond Moore-s Law- Neuromorphic computing.md delete mode 100644 sources/talk/20200121 Never enough- Working openly with anxiety.md delete mode 100644 sources/talk/20200121 What you need to know about System76-s open source firmware project.md delete mode 100644 sources/talk/20200123 Survey- Digital transformation can reveal network weaknesses.md delete mode 100644 sources/talk/20200124 Gartner- Data-center spending will inch up this year.md delete mode 100644 sources/talk/20200124 How Open-RAN could ‘white-box- 5G.md delete mode 100644 sources/talk/20200127 IBM Power-based cloud instances available- from Google.md delete mode 100644 sources/talk/20200127 Some Useful Probability Facts for Systems Programming.md delete mode 100644 sources/talk/20200128 Communication superstars- A model for understanding your organization-s approach to new technologies.md delete mode 100644 sources/talk/20200129 You can now have a Mac Pro in your data center.md delete mode 100644 sources/talk/20200130 Intel denies reports of Xeon shortage.md delete mode 100644 sources/talk/20200131 How bacteria could run the Internet of Things.md delete mode 100644 sources/talk/20200201 IBM-s CEO Virginia Rometty to be replaced by its cloud, Red Hat chiefs.md delete mode 100644 sources/talk/20200202 6 open governance questions every project needs to answer.md delete mode 100644 sources/talk/20200202 Bulletin Board Systems- The VICE Exposé.md delete mode 100644 sources/talk/20200203 Private equity firms are gobbling up data centers.md delete mode 100644 sources/talk/20200204 Stuck in a loop- 4 signs anxiety may be affecting your work.md delete mode 100644 sources/talk/20200206 How Drupal 8 aims to be future-proof.md delete mode 100644 sources/talk/20200209 Open source vs. proprietary- What-s the difference.md delete mode 100644 sources/talk/20200210 5 firewall features IT pros should know about but probably don-t.md delete mode 100644 sources/talk/20200211 Future ‘smart walls- key to IoT.md delete mode 100644 sources/talk/20200211 Who should lead the push for IoT security.md delete mode 100644 sources/talk/20200211 Why innovation can-t happen without standardization.md delete mode 100644 sources/talk/20200212 A SASE Crash Course.md delete mode 100644 sources/talk/20200213 Server sales projected to decline 10- due to coronavirus.md delete mode 100644 sources/talk/20200215 3 steps for product marketing your open source project.md delete mode 100644 sources/talk/20200215 The Background Story of AppImage -Interview.md delete mode 100644 sources/talk/20200216 Minicomputers and The Soul of a New Machine.md delete mode 100644 sources/talk/20200218 Building a community of practice in 5 steps.md delete mode 100644 sources/talk/20200219 A -399 device that translates brain signals into digital commands.md delete mode 100644 sources/talk/20200219 Fedora at the Czech National Library of Technology.md delete mode 100644 sources/talk/20200221 Google Cloud moves to aid mainframe migration.md delete mode 100644 sources/talk/20200221 Japanese firm announces potential 80TB hard drives.md delete mode 100644 sources/talk/20200224 Discussing Past, Present and Future of FreeBSD Project.md delete mode 100644 sources/talk/20200225 Spilling over- How working openly with anxiety affects my team.md delete mode 100644 sources/talk/20200226 How we decide when to release Fedora.md delete mode 100644 sources/talk/20200226 Mirantis- Balancing Open Source with Guardrails.md delete mode 100644 sources/talk/20200227 How Melissa Di Donato Is Going To Reinvent SUSE.md delete mode 100644 sources/talk/20200228 Intel takes aim at Huawei 5G market presence.md delete mode 100644 sources/talk/20200228 No More WhatsApp- The EU Commission Switches To ‘Signal- For Internal Communication.md delete mode 100644 sources/talk/20200229 Solus Linux Creator Ikey Doherty Enters the Game Dev Business With a New Open Source Game Engine.md delete mode 100644 sources/talk/20200302 8 reasons to consider hyperconverged infrastructure for your data center.md delete mode 100644 sources/talk/20200303 How to assess your organization-s technological maturity.md delete mode 100644 sources/talk/20200303 Key Takeaways from Cisco-s Annual Internet Report.md delete mode 100644 sources/talk/20200303 Most-used libraries, open source adoption, and more industry trends.md delete mode 100644 sources/talk/20200304 Seawater, humidity inspire new ways to generate power.md delete mode 100644 sources/talk/20200305 Chinese auto giant Geely plans a private satellite network to support autonomous vehicles.md delete mode 100644 sources/talk/20200305 Report- Most IoT transactions are not secure.md delete mode 100644 sources/talk/20200306 How I learned about burnout the hard way.md delete mode 100644 sources/talk/20200306 What is Linux and Why There are 100-s of Linux Distributions.md delete mode 100644 sources/talk/20200308 The De-Googled Android Fork is Making Good Progress.md delete mode 100644 sources/talk/20200311 Data-center power consumption holds steady.md delete mode 100644 sources/talk/20200311 Setting yourself up for success while working remotely.md delete mode 100644 sources/talk/20200312 Next wave of digital transformation requires better security, automation.md delete mode 100644 sources/talk/20200316 As the networks evolve enterprises need to rethink network security.md delete mode 100644 sources/talk/20200316 How to be the right person for DevOps.md delete mode 100644 sources/talk/20200317 -AI everywhere- IoT chips coming from Arm.md delete mode 100644 sources/talk/20200319 Electronics should sweat to cool down, say researchers.md delete mode 100644 sources/talk/20200320 Cisco warns of five SD-WAN security weaknesses.md delete mode 100644 sources/talk/20200320 How technical debt is risking your security.md delete mode 100644 sources/talk/20200321 3 metrics to measure your open source community health.md delete mode 100644 sources/talk/20200321 Coronavirus challenges capacity, but core networks are holding up.md delete mode 100644 sources/talk/20200324 COVID-19- Weekly health check of ISPs, cloud providers and conferencing services.md delete mode 100644 sources/talk/20200325 COVID-19 vs. Raspberry Pi- Researchers bring IoT technology to disease detection.md delete mode 100644 sources/talk/20200325 The coming together of SD-WAN and AIOps.md delete mode 100644 sources/talk/20200326 ROLLING UPDATE- The impact of COVID-19 on public networks and security.md delete mode 100644 sources/talk/20200327 6 tricks for developing a work from home schedule.md delete mode 100644 sources/talk/20200330 Know the benefits of cloud-native networking for SASE.md delete mode 100644 sources/talk/20200330 SASE might be better than VPNs for quickly ramping up remote access.md delete mode 100644 sources/talk/20200401 How enterprise networking is changing with a work-at-home workforce.md delete mode 100644 sources/talk/20200402 When debugging, your attitude matters.md delete mode 100644 sources/talk/20200405 Book review- Nine Lies About Work.md delete mode 100644 sources/talk/20200406 How to Use a Differential Analyzer (to Murder People).md delete mode 100644 sources/talk/20200406 What is good documentation for software projects.md delete mode 100644 sources/talk/20200411 5 open source activities while you work from home.md delete mode 100644 sources/talk/20200414 How World of Warcraft introduced me to Linux.md delete mode 100644 sources/talk/20200415 Fedora Origins - Part 01.md delete mode 100644 sources/talk/20200415 How to dispose of IT hardware without hurting the environment.md delete mode 100644 sources/talk/20200415 IBM extends z15 mainframe family, intensifies Linux security.md delete mode 100644 sources/talk/20200415 Network World 2020 State of the Network- SD-WAN, edge networking and security are hot.md delete mode 100644 sources/talk/20200416 Contact tracing via Bluetooth could help track COVID-19 transmission.md delete mode 100644 sources/talk/20200416 Harvesting ambient energy will power IoT, scientists say.md delete mode 100644 sources/talk/20200416 How I-ve adjusted my work-from-home habits.md delete mode 100644 sources/talk/20200417 Face-to-face collaboration for community to become more impactful - Chip Childers.md delete mode 100644 sources/talk/20200418 My 10 guiding principles for open source community management.md delete mode 100644 sources/talk/20200420 Why I use open source technology for web development.md delete mode 100644 sources/talk/20200421 How underwater Internet of Things will work.md delete mode 100644 sources/talk/20200421 What is a High Traffic Website.md delete mode 100644 sources/talk/20200423 Getting to know our new, virtual world.md delete mode 100644 sources/talk/20200424 FCC boosts Wi-Fi 6 spectrum five-fold.md delete mode 100644 sources/talk/20200424 Red Hat Enterprise Linux 8.2 Hits the stage.md delete mode 100644 sources/talk/20200427 Comparing subscription, pay-per-bug, and consulting software business models.md delete mode 100644 sources/talk/20200427 DevOps vs. Agile- Do they have anything in common.md delete mode 100644 sources/talk/20200428 How I empower and reach millions through open source.md delete mode 100644 sources/talk/20200430 Industrial robots could -eat metal- to power themselves.md delete mode 100644 sources/talk/20200501 Red Hat Summit 2020 virtual experience.md delete mode 100644 sources/talk/20200502 The real impact of canceling PyCon due to COVID-19.md delete mode 100644 sources/talk/20200505 11 DevOps lessons from My Little Pony.md delete mode 100644 sources/talk/20200506 IBM rolls Red Hat into edge, AI, hybrid-cloud expansion.md delete mode 100644 sources/talk/20200514 Ethernet Alliance study finds Power over Ethernet issues.md delete mode 100644 sources/talk/20200525 In Free Software, the Community is the Most Important Ingredient- Jerry Bezencon of Linux Lite -Interview.md delete mode 100644 sources/talk/20200530 How open standards guide us in a world of change.md delete mode 100644 sources/talk/20200531 Red Hat- Holding Its Own and Fueling Open Source Innovation.md delete mode 100644 sources/talk/20200603 5 common open source testing myths debunked.md delete mode 100644 sources/talk/20200604 Airbus tells quantum-computing developers what it needs from the the technology.md delete mode 100644 sources/talk/20200607 Is your team a -glue team.md delete mode 100644 sources/talk/20200610 8 steps to make your next meeting more productive.md delete mode 100644 sources/talk/20200612 3 lessons from remote meetings we-re taking back to the office.md delete mode 100644 sources/talk/20200613 Introducing the Open Management Practices.md delete mode 100644 sources/talk/20200614 Who is the glue person on your team.md delete mode 100644 sources/talk/20200616 Changing the world with open source- GNOME president shares her story.md delete mode 100644 sources/talk/20200619 What do Paketo Buildpacks Mean for Developers and Operators.md delete mode 100644 sources/talk/20200628 Roy Fielding-s Misappropriated REST Dissertation.md delete mode 100644 sources/talk/20200630 Should API-restricting licenses qualify as open source.md delete mode 100644 sources/talk/20200630 The open organization everyone deserves.md delete mode 100644 sources/talk/20200702 How an open project-s governance model evolves.md delete mode 100644 sources/talk/20200708 How wireless networks can battle COVID-19.md delete mode 100644 sources/talk/20200715 The Impact of COVID-19 on the Global Digital Economy.md delete mode 100644 sources/talk/20200716 Options grow for migrating mainframe apps to the cloud.md delete mode 100644 sources/talk/20200717 Open source accounting software developed by accountants.md delete mode 100644 sources/talk/20200719 Open source development works to improve contact tracing in Europe.md delete mode 100644 sources/talk/20200721 Data-center survey- IT seeks faster switches, intelligent computing.md delete mode 100644 sources/talk/20200722 Student Linux club refurbishes computers to support distance learning.md delete mode 100644 sources/talk/20200726 Globalization- A history of openness.md delete mode 100644 sources/talk/20200727 Are newer medical IoT devices less secure than old ones.md delete mode 100644 sources/talk/20200728 Green Data Centers - Scaling environmental sustainability for business and consumers collectively.md delete mode 100644 sources/talk/20200729 Switch turns to Tesla for renewable energy storage.md delete mode 100644 sources/talk/20200730 4 ways I contribute to open source as a Linux systems administrator.md delete mode 100644 sources/talk/20200730 Role Of SPDX In Open Source Software Supply Chain.md delete mode 100644 sources/talk/20200730 SODA Foundation- Autonomous data management framework for data mobility.md delete mode 100644 sources/talk/20200731 Linux dominates supercomputing.md delete mode 100644 sources/talk/20200801 8 tips for running a virtual hackathon.md delete mode 100644 sources/talk/20200806 5 tips for making documentation a priority in open source projects.md delete mode 100644 sources/talk/20200806 You don-t need a computer science degree to work with open source software.md delete mode 100644 sources/talk/20200807 Meeting for the first time after 26 years of open source collaboration.md delete mode 100644 sources/talk/20200808 Matrix encrypted chat rolls out across Germany, Project ACRN-s new IoT release, and more open source news.md delete mode 100644 sources/talk/20200815 What Does Mozilla Firing 25- of its Workforce Tells us About its Future.md delete mode 100644 sources/talk/20200817 What makes Java open source.md delete mode 100644 sources/talk/20200818 Amazon Braket lets customers try out quantum computing.md delete mode 100644 sources/talk/20200821 3 ways a legal team can enable open source.md delete mode 100644 sources/talk/20200822 3 reasons small businesses choose open source tools for remote employees.md delete mode 100644 sources/talk/20200823 Open organizations through the ages.md delete mode 100644 sources/talk/20200824 Origin stories about Unix.md delete mode 100644 sources/talk/20200825 Why we open sourced our security project.md delete mode 100644 sources/talk/20200828 Why Comcast open sourced its DNS management tool.md delete mode 100644 sources/talk/20200830 The power of open source during a pandemic.md delete mode 100644 sources/talk/20200831 Making Zephyr More Secure.md delete mode 100644 sources/talk/20200831 Open Source Project For Earthquake Warning Systems.md delete mode 100644 sources/talk/20200901 4 reasons Jamstack is changing web development.md delete mode 100644 sources/talk/20200902 My dramatic journey to becoming an open source engineer.md delete mode 100644 sources/talk/20200903 Why your open source project needs more than just coders.md delete mode 100644 sources/talk/20200911 Ankur Sinha- How do you Fedora.md delete mode 100644 sources/talk/20200911 How open source legal teams can get to yes.md delete mode 100644 sources/talk/20200911 Lenovo introduces four new HCI solutions.md delete mode 100644 sources/talk/20200911 Why the future of IoT depends on open source.md delete mode 100644 sources/talk/20200912 How breaking my back led me to open source.md delete mode 100644 sources/talk/20200913 Overcoming resistance to open management.md delete mode 100644 sources/talk/20200923 How my students taught me to code.md delete mode 100644 sources/talk/20200924 Still not dead- The mainframe hangs on, sustained by Linux and hybrid cloud.md delete mode 100644 sources/talk/20200927 What would a global open organization look like.md delete mode 100644 sources/talk/20200928 5 ways to conduct user research with an open source mindset.md delete mode 100644 sources/talk/20200930 VMware plan disaggregates servers- offloads network virtualization and security.md delete mode 100644 sources/talk/20201002 VMware highlights security in COVID-era networking.md delete mode 100644 sources/talk/20201007 Telcos Move from Black boxes to Open Source.md delete mode 100644 sources/talk/20201010 5 qualities of great open source developer advocates.md delete mode 100644 sources/talk/20201016 Is open source a development model, business model, or something else.md delete mode 100644 sources/talk/20201021 How anyone can contribute to open source software in their job.md delete mode 100644 sources/talk/20201023 Why it-s important to keep the cloud open.md delete mode 100644 sources/talk/20201027 How to define a product in the open source software supply chain.md delete mode 100644 sources/talk/20201028 A few things I-ve learned about email marketing.md delete mode 100644 sources/talk/20201030 My journey to becoming an open source mentor.md delete mode 100644 sources/talk/20201108 Open environments are where innovative ideas thrive.md delete mode 100644 sources/talk/20201109 DevOps Replaces Developers As Most Sought After Skill Set.md delete mode 100644 sources/talk/20201111 Why I use Home Assistant for open source home automation.md delete mode 100644 sources/talk/20201112 Improve open source community sustainability by tracking these two metrics.md delete mode 100644 sources/talk/20201113 3 ways managers build team culture around open source.md delete mode 100644 sources/talk/20201113 How to create trust in artificial intelligence using open source.md delete mode 100644 sources/talk/20201114 How I channel my inner Star Trek character at work.md delete mode 100644 sources/talk/20201125 Got something to say- How to get started writing.md delete mode 100644 sources/talk/20201127 4 questions about AI ethics and how open source can help.md delete mode 100644 sources/talk/20201127 Comparing the similarities and differences between inner source and open source.md delete mode 100644 sources/talk/20201128 Why failure should be normalized and how to do it.md delete mode 100644 sources/talk/20201206 Openness is the key to innovation, history shows.md delete mode 100644 sources/talk/20201211 Create a DevOps culture with open source principles.md delete mode 100644 sources/talk/20201214 Ben Cotton- How Do You Fedora.md delete mode 100644 sources/talk/20201223 9 stories about switching to an open source alternative in 2020.md delete mode 100644 sources/talk/20201224 Why I rewrote my open source virtual reality server.md delete mode 100644 sources/talk/20201227 9 insights from pivoting to remote work in 2020.md delete mode 100644 sources/talk/20210105 My Linux Story- How an influential security developer got started in open source.md delete mode 100644 sources/talk/20210107 3 serverless strategies to look for in 2021.md delete mode 100644 sources/talk/20210113 Gain control of your calendar with this simple strategy.md delete mode 100644 sources/talk/20210117 4 big lessons from my internship with open source.md delete mode 100644 sources/talk/20210125 7 ways open source was essential to business in 2020.md delete mode 100644 sources/talk/20210211 Understanding Open Governance Networks.md delete mode 100644 sources/talk/20210212 18 ways to differentiate open source products from upstream suppliers.md delete mode 100644 sources/talk/20210212 How to adopt DevSecOps successfully.md delete mode 100644 sources/talk/20210213 5 reasons why I love coding on Linux.md delete mode 100644 sources/talk/20210213 How open source provides students with real-world experience.md delete mode 100644 sources/talk/20210214 Give something from the heart to the public domain.md delete mode 100644 sources/talk/20210216 How Ansible got started and grew.md delete mode 100644 sources/talk/20210219 Why every job in the tech industry is technical.md delete mode 100644 sources/talk/20210223 What makes the Linux community special.md delete mode 100644 sources/talk/20210224 Why Linux is critical to edge computing.md delete mode 100644 sources/talk/20210226 How I became a Kubernetes maintainer in 4 hours a week.md delete mode 100644 sources/talk/20210311 Test cases and open source license enforcement.md delete mode 100644 sources/talk/20210312 Extending Looped Music for Fun, Relaxation and Productivity.md delete mode 100644 sources/talk/20210324 Get better at programming by learning how things work.md delete mode 100644 sources/talk/20210325 Elevating open leaders by getting out of their way.md delete mode 100644 sources/talk/20210405 What motivates open source software contributors.md delete mode 100644 sources/talk/20210415 Microsoft Gets into the OpenJDK Business- What Does it Mean for You.md delete mode 100644 sources/talk/20210419 13 ways to get involved with your favorite open source project.md delete mode 100644 sources/talk/20210421 How to take your open source project to the next level.md delete mode 100644 sources/talk/20210422 Energy infrastructure platform uses open source to fight climate change.md delete mode 100644 sources/talk/20210423 Sustainable economic development begins with open thinking.md delete mode 100644 sources/talk/20210502 15 unusual paths to tech.md delete mode 100644 sources/talk/20210506 Optimal flow- Building open organizations where leaders can emerge.md delete mode 100644 sources/talk/20210507 6 examples of open source best practices in knowledge-sharing projects.md delete mode 100644 sources/talk/20210509 My first tech job- 8 stories from the community.md delete mode 100644 sources/talk/20210522 17 true stories about switching to Linux.md、 delete mode 100644 sources/talk/20210527 How Linux made a school pandemic-ready.md delete mode 100644 sources/talk/20210621 Why transparency is critical to your open source project-s security.md delete mode 100644 sources/talk/20210630 How a college student founded a free and open source operating system.md delete mode 100644 sources/talk/20210709 Apply lean startup principles to your open source project.md delete mode 100644 sources/talk/20210716 Dear Mozilla, Please Remove This Annoying ‘Feature- from Firefox.md delete mode 100644 sources/talk/20210718 17 open source technologists share their work-from-home uniforms.md delete mode 100644 sources/talk/20210727 Avoid this common open source scanning error.md delete mode 100644 sources/talk/20210730 What do we call post-modern system administrators.md delete mode 100644 sources/talk/20210731 Dealing with burnout in open source.md delete mode 100644 sources/talk/20210805 Your one-on-one meeting doesn-t have to be this way.md delete mode 100644 sources/talk/20210811 My first programming language and early adventures.md delete mode 100644 sources/talk/20210818 Setting new expectations for open source maintainers.md delete mode 100644 sources/talk/20210825 10 steps to more open, focused, and energizing meetings.md delete mode 100644 sources/talk/20210831 How my team built an open source learning experience platform.md delete mode 100644 sources/talk/20210912 What I miss about open source conferences.md delete mode 100644 sources/talk/20210927 Why nonprofit organizations choose open source software.md delete mode 100644 sources/talk/20210928 Modeling open management practices.md delete mode 100644 sources/talk/20211015 Reach your open source community with content marketing.md delete mode 100644 sources/tech/20151127 Research log- gene signatures and connectivity map.md delete mode 100644 sources/tech/20170112 Writing Advanced Web Applications with Go.md delete mode 100644 sources/tech/20180225 What I learnt from building 3 high traffic web applications on an embedded key value store.md delete mode 100644 sources/tech/20180605 Sound themes in Linux- What every user should know.md delete mode 100644 sources/tech/20180619 Systemd Services- Monitoring Files and Directories.md delete mode 100644 sources/tech/20190104 Three Ways To Reset And Change Forgotten Root Password on RHEL 7-CentOS 7 Systems.md delete mode 100644 sources/tech/20190219 4 secrets management tools for Git encryption.md delete mode 100644 sources/tech/20190316 Program the real world using Rust on Raspberry Pi.md delete mode 100644 sources/tech/20190408 Linux Server Hardening Using Idempotency with Ansible- Part 1.md delete mode 100644 sources/tech/20190409 topgrade - Upgrade-Update Everything In Single Command On Linux.md delete mode 100644 sources/tech/20190412 Linux Server Hardening Using Idempotency with Ansible- Part 2.md delete mode 100644 sources/tech/20190416 Linux Server Hardening Using Idempotency with Ansible- Part 3.md delete mode 100644 sources/tech/20190523 Hardware bootstrapping with Ansible.md delete mode 100644 sources/tech/20190612 The bits and bytes of PKI.md delete mode 100644 sources/tech/20190624 Linux Package Managers Compared - AppImage vs Snap vs Flatpak.md delete mode 100644 sources/tech/20190815 12 extensions for your GNOME desktop.md delete mode 100644 sources/tech/20190820 The infrastructure is code- A story of COBOL and Go.md delete mode 100644 sources/tech/20190911 10 Ansible modules you need to know.md delete mode 100644 sources/tech/20191021 How to build a Flatpak.md delete mode 100644 sources/tech/20191111 A guide to intermediate awk scripting.md delete mode 100644 sources/tech/20191112 5 open source plugins for Flutter apps.md delete mode 100644 sources/tech/20191128 Monitoring Linux and Windows hosts with Glances.md delete mode 100644 sources/tech/20200103 Tracking Translations with Transtats.md delete mode 100644 sources/tech/20200106 Create fancy text for your social media posts with this Gawk script.md delete mode 100644 sources/tech/20200107 App Highlight- Catfish Desktop File Searching Tool.md delete mode 100644 sources/tech/20200107 Introduction to the Linux goto shell utility.md delete mode 100644 sources/tech/20200108 Automating the creation of research artifacts.md delete mode 100644 sources/tech/20200108 Detecting CPU steal time in guest virtual machines.md delete mode 100644 sources/tech/20200109 Create demo project templates with one script.md delete mode 100644 sources/tech/20200110 How I upgraded my CuBox open source music server.md delete mode 100644 sources/tech/20200113 Use this script to create, save, and run different rsync configurations via named profiles.md delete mode 100644 sources/tech/20200114 LMMS- A Free - Open Source Digital Audio Workstation (DAW).md delete mode 100644 sources/tech/20200116 Automating Helm deployments with Bash.md delete mode 100644 sources/tech/20200118 Zorin Grid Lets You Remotely Manage Multiple Zorin OS Computers.md delete mode 100644 sources/tech/20200120 Learning about Partitions and How to Create Them for Fedora.md delete mode 100644 sources/tech/20200124 Thunderbolt - how to use keyboard during boot time.md delete mode 100644 sources/tech/20200125 Oh, Bummer- Rocket League is Ending Support For Linux.md delete mode 100644 sources/tech/20200127 Building Zero Trust authentication for multi-cloud application services.md delete mode 100644 sources/tech/20200127 How to get started with test-driven development.md delete mode 100644 sources/tech/20200128 How I had a nerdy date night with StreetComplete quests.md delete mode 100644 sources/tech/20200128 How I teach physics using open source tools.md delete mode 100644 sources/tech/20200129 3 lessons I-ve learned writing Ansible playbooks.md delete mode 100644 sources/tech/20200129 7 open source desktop tools- Download our new eBook.md delete mode 100644 sources/tech/20200129 What Amazon Kindle- Here-s an Open Source eBook Reader.md delete mode 100644 sources/tech/20200130 Run your network with open source software.md delete mode 100644 sources/tech/20200131 5 ways to use Emacs as your RPG dashboard.md delete mode 100644 sources/tech/20200201 ProtonVPN adopts GPLv3, Mozilla Thunderbird gets new home, and more news.md delete mode 100644 sources/tech/20200203 New zine- Become a SELECT Star.md delete mode 100644 sources/tech/20200204 Ansible Roles Quick Start Guide with Examples.md delete mode 100644 sources/tech/20200204 SimpleLogin- Open Source Solution to Protect Your Email Inbox From Spammers.md delete mode 100644 sources/tech/20200205 OpenCensus to monitor your Kubernetes cluster.md delete mode 100644 sources/tech/20200207 Introducing Zuul for improved CI-CD.md delete mode 100644 sources/tech/20200211 Automate your live demos with this shell script.md delete mode 100644 sources/tech/20200212 Manage your SSL certificates with the ssl-on-demand script.md delete mode 100644 sources/tech/20200217 Automating unit tests in test-driven development.md delete mode 100644 sources/tech/20200218 Getting started with OpenTaxSolver.md delete mode 100644 sources/tech/20200218 How to embed Twine stories in WordPress.md delete mode 100644 sources/tech/20200219 How to conveniently unsubscribe from a mailing list.md delete mode 100644 sources/tech/20200221 Don-t like loops- Try Java Streams.md delete mode 100644 sources/tech/20200223 The Zen of Go.md delete mode 100644 sources/tech/20200224 Make free encrypted backups to the cloud on Fedora.md delete mode 100644 sources/tech/20200228 Fedora-s gaggle of desktops.md delete mode 100644 sources/tech/20200302 Using LibreOffice for your open source budgeting tool.md delete mode 100644 sources/tech/20200303 Getting started with lightweight alternatives to GNU Emacs.md delete mode 100644 sources/tech/20200304 How service virtualization relates to test-driven development.md delete mode 100644 sources/tech/20200305 5 productivity apps for Linux.md delete mode 100644 sources/tech/20200311 Using the Quarkus Framework on Fedora Silverblue - Just a Quick Look.md delete mode 100644 sources/tech/20200313 How to set up the Raspberry Pi Zero for travel.md delete mode 100644 sources/tech/20200313 How to whiteboard collaboratively with Drawpile.md delete mode 100644 sources/tech/20200314 Adding a display to a travel-ready Raspberry Pi Zero.md delete mode 100644 sources/tech/20200315 How I migrated from a Mac Mini to a Raspberry Pi.md delete mode 100644 sources/tech/20200316 How to test failed authentication attempts with test-driven development.md delete mode 100644 sources/tech/20200320 Run a command on binary files with this script.md delete mode 100644 sources/tech/20200326 How to detect outdated Kubernetes APIs.md delete mode 100644 sources/tech/20200327 KubeCF Is What DevOps Wanted- Marrying Cloud Foundry with Kubernetes.md delete mode 100644 sources/tech/20200328 Open source fights against COVID-19, Google-s new security tool written in Python, and more open source news.md delete mode 100644 sources/tech/20200329 Nextcloud- The Swiss Army Knife of Remote Working Tools.md delete mode 100644 sources/tech/20200330 Access control lists and external drives on Linux- What you need to know.md delete mode 100644 sources/tech/20200401 How does kanban relate-to DevOps.md delete mode 100644 sources/tech/20200403 Building a sensing prosthetic with the Raspberry Pi.md delete mode 100644 sources/tech/20200407 Love or hate chat- 4 best practices for remote teams.md delete mode 100644 sources/tech/20200409 GNOME Announces Community Engagement Challenge Offering up to -65,000 in Rewards.md delete mode 100644 sources/tech/20200409 Print double-sided documents at home with this simple Bash script.md delete mode 100644 sources/tech/20200409 Use Emacs Org mode to easily create LaTeX documents.md delete mode 100644 sources/tech/20200410 How Kubernetes saved my desktop application.md delete mode 100644 sources/tech/20200412 Use this helpful Bash script when stargazing.md delete mode 100644 sources/tech/20200414 How young people can help fight COVID-19 with code.md delete mode 100644 sources/tech/20200414 Try this Kubernetes HTTP router and reverse proxy.md delete mode 100644 sources/tech/20200417 Is reporting 100- of code coverage reasonable.md delete mode 100644 sources/tech/20200419 A stress-free guide to keeping WordPress sites updated.md delete mode 100644 sources/tech/20200420 New open source GIS projects for Kubernetes applications.md delete mode 100644 sources/tech/20200421 How I use Hugo for my classroom-s open source CMS.md delete mode 100644 sources/tech/20200421 How to take advantage of Linux-s extensive vocabulary.md delete mode 100644 sources/tech/20200427 New zine- How Containers Work.md delete mode 100644 sources/tech/20200430 Edit music recordings with Audacity on Linux.md delete mode 100644 sources/tech/20200430 Linux and Kubernetes- Serving The Common Goals of Enterprises.md delete mode 100644 sources/tech/20200501 Transparent, open source alternative to Google Analytics.md delete mode 100644 sources/tech/20200503 13 tips for getting your talk accepted at a tech conference.md delete mode 100644 sources/tech/20200505 Analyzing data science code with R and Emacs.md delete mode 100644 sources/tech/20200508 Metaphors in man pages.md delete mode 100644 sources/tech/20200510 Open source underpins coronavirus IoT and robotics solutions.md delete mode 100644 sources/tech/20200511 How I track my home-s energy consumption with open source.md delete mode 100644 sources/tech/20200515 The pieces of Fedora Silverblue.md delete mode 100644 sources/tech/20200516 Fatih-s question.md delete mode 100644 sources/tech/20200518 Using Fedora to implement REST API in JavaScript- part 2.md delete mode 100644 sources/tech/20200519 How to use Windows Subsystem for Linux to open Linux on Windows 10 machines.md delete mode 100644 sources/tech/20200520 Fedora Silverblue, an introduction for developers.md delete mode 100644 sources/tech/20200521 Glico (Weighted Rock Paper Scissors).md delete mode 100644 sources/tech/20200524 Diamond interface composition in Go 1.14.md delete mode 100644 sources/tech/20200525 CopyQ Clipboard Manager for Keeping a Track of Clipboard History.md delete mode 100644 sources/tech/20200525 Debian-s Decision to Drop Old Drivers has Upset Vintage Hardware Users.md delete mode 100644 sources/tech/20200525 EU Parliament Strongly Recommends Developing and Using Open Source Software.md delete mode 100644 sources/tech/20200525 Encrypt Your Files Before Uploading it to Cloud With Cryptomator.md delete mode 100644 sources/tech/20200525 How to Assign Static IP Address on Ubuntu Linux.md delete mode 100644 sources/tech/20200525 How to Compress PDF in Linux -GUI - Terminal.md delete mode 100644 sources/tech/20200525 How to Install Linux Mint in VirtualBox -Screenshot Tutorial.md delete mode 100644 sources/tech/20200525 LanguageTool Review- Free and Open Source Grammar Checker.md delete mode 100644 sources/tech/20200525 Using ‘apt search- and ‘apt show- Commands to Search and Find Details of Packages in Ubuntu.md delete mode 100644 sources/tech/20200525 What to do When You See -Repository does not have a release file- Error in Ubuntu.md delete mode 100644 sources/tech/20200526 Create interactive content in WordPress with the H5P plugin.md delete mode 100644 sources/tech/20200529 Beaker Browser 1.0 Beta- One Step Forward and Two Steps Back.md delete mode 100644 sources/tech/20200606 What are the pros and cons of virtual events.md delete mode 100644 sources/tech/20200608 A secure and private open source alternative to Alexa.md delete mode 100644 sources/tech/20200609 humanID Project- Restoring Civil Discussion Through Better Online Identity.md delete mode 100644 sources/tech/20200611 Nextcloud Vs ownCloud- What-s the Difference- Which one Should You Use.md delete mode 100644 sources/tech/20200612 Fedora 32- Simple Local File-Sharing with Samba.md delete mode 100644 sources/tech/20200612 How to Install Opera Browser on Ubuntu -Easy Way.md delete mode 100644 sources/tech/20200613 How to Use Microsoft OneDrive in Linux With Rclone Open-Source Tool -For Intermediate to Expert Users.md delete mode 100644 sources/tech/20200613 Manjaro Linux Review- ‘Arch Linux for Human Beings- Provides Rolling Release for Every User.md delete mode 100644 sources/tech/20200615 My Linux Story- remixing distributions at 17 years old.md delete mode 100644 sources/tech/20200616 Hard lessons learned about Kubernetes garbage collection.md delete mode 100644 sources/tech/20200619 A little bit of plain Javascript can do a lot.md delete mode 100644 sources/tech/20200619 How to prepare to write your first Mycroft AI skill using Python.md delete mode 100644 sources/tech/20200622 Manage your Kubernetes cluster with Lens.md delete mode 100644 sources/tech/20200623 Take control of your data with associative arrays in Bash.md delete mode 100644 sources/tech/20200624 A surprising way to do data science with Node.js.md delete mode 100644 sources/tech/20200624 Why you should use Node.js for data science.md delete mode 100644 sources/tech/20200626 Advice for getting started with GNOME.md delete mode 100644 sources/tech/20200629 Use intent parsers for your open source home automation project.md delete mode 100644 sources/tech/20200630 10 ReactJS tools to boost your web development skills.md delete mode 100644 sources/tech/20200630 Using TensorFlow.js and Node-RED with image recognition applications.md delete mode 100644 sources/tech/20200630 What is End of Life in Ubuntu- Everything You Should Know About it.md delete mode 100644 sources/tech/20200630 What-s New in Harbor 2.0.md delete mode 100644 sources/tech/20200701 Install a Kubernetes load balancer on your Raspberry Pi homelab with MetalLB.md delete mode 100644 sources/tech/20200703 Create LEGO designs in Blender with this plugin.md delete mode 100644 sources/tech/20200703 How to Create a Pareto Diagram -80-20 Rule- in LibreOffice Calc.md delete mode 100644 sources/tech/20200703 What does a scrum master do.md delete mode 100644 sources/tech/20200704 Purism-s Ultra-Secure Linux Machine is Now Available in a New Size.md delete mode 100644 sources/tech/20200706 A guide to Terraform for Kubernetes beginners.md delete mode 100644 sources/tech/20200708 A visual guide to Lens- A new way to see Kubernetes.md delete mode 100644 sources/tech/20200709 Making compliance scalable in a container world.md delete mode 100644 sources/tech/20200712 Recovering audio from a lost format with open source.md delete mode 100644 sources/tech/20200714 5 things to look for in an open source alternative to SharePoint.md delete mode 100644 sources/tech/20200722 6 ways to contribute to an open source alternative to Slack.md delete mode 100644 sources/tech/20200723 Build your own open source alternative to Google Suite with Nextcloud.md delete mode 100644 sources/tech/20200726 Dreamweaver Alternatives- 5 Open Source HTML and CSS Editors for Web Developers and Designers.md delete mode 100644 sources/tech/20200727 What does it mean for code to -work.md delete mode 100644 sources/tech/20200728 Why now is the best time to use GNOME.md delete mode 100644 sources/tech/20200729 Demonstrating Perl with Tic-Tac-Toe, Part 4.md delete mode 100644 sources/tech/20200729 How learning Linux introduced me to open source.md delete mode 100644 sources/tech/20200729 How to Install Discord Application in Ubuntu and Other Linux Distributions -3 Methods.md delete mode 100644 sources/tech/20200731 Bring your Mycroft AI voice assistant skill to life with Python.md delete mode 100644 sources/tech/20200731 Real-time noise suppression for video conferencing.md delete mode 100644 sources/tech/20200804 An open source solution for continuous testing at scale.md delete mode 100644 sources/tech/20200805 Matthew Arnold- Why I switched to Fedora.md delete mode 100644 sources/tech/20200806 5 reasons to run Kubernetes on your Raspberry Pi homelab.md delete mode 100644 sources/tech/20200812 Create a wifi hotspot with Raspberry Pi 3 and Fedora.md delete mode 100644 sources/tech/20200812 Why I still love tcsh after all these years.md delete mode 100644 sources/tech/20200814 7 tips for giving and receiving better feedback.md delete mode 100644 sources/tech/20200814 Fixing -Unable to correct problems, you have held broken packages- Error in Ubuntu and other Linux Distributions.md delete mode 100644 sources/tech/20200818 D Declarations for C and C-- Programmers.md delete mode 100644 sources/tech/20200825 6 open source virtualization technologies to know in 2020.md delete mode 100644 sources/tech/20200825 How to choose an affordable Linux laptop for video conferencing.md delete mode 100644 sources/tech/20200829 5 open source activities for kids to try this weekend.md delete mode 100644 sources/tech/20200831 Tune up your sound with PulseEffects- Microphones.md delete mode 100644 sources/tech/20200901 Developing an email alert system using a surveillance camera with Node-RED and TensorFlow.js.md delete mode 100644 sources/tech/20200901 How to Set Up Facial Recognition to Sign into Ubuntu and Other Linux Distributions.md delete mode 100644 sources/tech/20200904 Managing a non-profit organization-s supply chain with Groovy.md delete mode 100644 sources/tech/20200906 PCLinuxOS Review- This Classic Independent Linux Distribution is Definitely Worth a Look.md delete mode 100644 sources/tech/20200908 Open source data control for cloud services with Apache Ranger.md delete mode 100644 sources/tech/20200909 Create a slide deck using Jupyter Notebooks.md delete mode 100644 sources/tech/20200910 How this open source test framework evolves with .NET.md delete mode 100644 sources/tech/20200914 The future of virtual conferences, service mesh, and more industry trends.md delete mode 100644 sources/tech/20200916 Manage your Raspberry Pi fleet with Ansible.md delete mode 100644 sources/tech/20200917 Open Usage Commons- Google-s Initiative to Manage Trademark for Open Source Projects Runs into Controversy.md delete mode 100644 sources/tech/20200917 Update devices remotely with this open source tool.md delete mode 100644 sources/tech/20200919 3 ways to protect yourself from imposter syndrome.md delete mode 100644 sources/tech/20200921 Solve a real-world problem using Java.md delete mode 100644 sources/tech/20200921 Use this Python script to simulate Babbage-s Difference Engine.md delete mode 100644 sources/tech/20200922 Run Linux apps on your Chromebook.md delete mode 100644 sources/tech/20200924 Manage knowledge with BlueSpice, an open source alternative to Confluence.md delete mode 100644 sources/tech/20200925 -email-protected-- Help the Fight Against COVID-19 With Your Linux System.md delete mode 100644 sources/tech/20200925 Code your first algorithm in Scratch.md delete mode 100644 sources/tech/20200926 Cisco turns out security patches 25 high-threat flaws for IOS, IOS XE.md delete mode 100644 sources/tech/20200929 This Python script mimics Babbage-s Difference Engine.md delete mode 100644 sources/tech/20200929 Xen on Raspberry Pi 4 adventures.md delete mode 100644 sources/tech/20201001 Akraino- An Open Source Project for the Edge.md delete mode 100644 sources/tech/20201001 Bringing COBOL to the Modern World.md delete mode 100644 sources/tech/20201006 5 Scratch code blocks to teach kids how to program a video game.md delete mode 100644 sources/tech/20201007 Design and document APIs using an open source cross-platform tool.md delete mode 100644 sources/tech/20201009 5 ways organizations can lean into failure and transform it into success.md delete mode 100644 sources/tech/20201009 My open source video game for Open Jam.md delete mode 100644 sources/tech/20201010 Robust and Race-free Server Logging using Named Pipes.md delete mode 100644 sources/tech/20201012 Build a Kubernetes Minecraft server with Ansible-s Helm modules.md delete mode 100644 sources/tech/20201012 Create an Ansible module for integrating your Google Calendar.md delete mode 100644 sources/tech/20201013 What measured boot and trusted boot means for Linux.md delete mode 100644 sources/tech/20201014 Web of Trust, Part 1- Concept.md delete mode 100644 sources/tech/20201019 Web of Trust, Part 2- Tutorial.md delete mode 100644 sources/tech/20201021 Incremental backup with Butterfly Backup.md delete mode 100644 sources/tech/20201023 New open source project crowdsources internet security.md delete mode 100644 sources/tech/20201026 Manage content using Pulp Debian.md delete mode 100644 sources/tech/20201026 Pi from High School Maths.md delete mode 100644 sources/tech/20201027 Bring old hardware back to life with OpenBSD.md delete mode 100644 sources/tech/20201027 Map Your Gamepad Buttons With Keyboard, Mouse, or Macros-Scripts Using AntiMicroX in Linux.md delete mode 100644 sources/tech/20201102 5 reasons to use Linux in 2020.md delete mode 100644 sources/tech/20201103 27 Super Cool Raspberry Pi Zero W Projects for DIY Enthusiasts.md delete mode 100644 sources/tech/20201103 A Brief History of Ubuntu Touch.md delete mode 100644 sources/tech/20201106 I-m doing another Recurse Center batch.md delete mode 100644 sources/tech/20201109 Program your microcontroller with MicroBlocks.md delete mode 100644 sources/tech/20201109 Set up Minishift and run Jenkins on Linux.md delete mode 100644 sources/tech/20201111 Create your first Knative app.md delete mode 100644 sources/tech/20201111 Day 3- an infinitely tall fridge.md delete mode 100644 sources/tech/20201111 How I use Cockpit for my home-s Linux server management.md delete mode 100644 sources/tech/20201112 MuditaOS- A Beautiful and Minimal Open Source Mobile Operating System for Feature Phones.md delete mode 100644 sources/tech/20201112 Quick Lookup is a Simple Open Source Word Lookup Tool to Find Meaning of Words You Come Across.md delete mode 100644 sources/tech/20201112 Test GNOME apps on this Linux reference platform.md delete mode 100644 sources/tech/20201114 Woothee (HTTP User Agent Parser).md delete mode 100644 sources/tech/20201116 Day 5- drawing lots of faces with sketch-rnn.md delete mode 100644 sources/tech/20201116 Manage multiple Terraform versions with tfenv.md delete mode 100644 sources/tech/20201117 How to upgrade to Terraform 0.12.md delete mode 100644 sources/tech/20201118 Apply the Scientific Method to agile development.md delete mode 100644 sources/tech/20201118 Day 8- Start with something that works.md delete mode 100644 sources/tech/20201119 Day 9- Generating a lot of nonsense with an RNN.md delete mode 100644 sources/tech/20201119 The relationship between labor and open source.md delete mode 100644 sources/tech/20201120 Day 10- Training an RNN to count to three.md delete mode 100644 sources/tech/20201120 How we develop success metrics for open source events.md delete mode 100644 sources/tech/20201120 What do open source product teams do.md delete mode 100644 sources/tech/20201121 Open source brings musicians together virtually.md delete mode 100644 sources/tech/20201123 Day 11- learning about learning rates.md delete mode 100644 sources/tech/20201124 A beginner-s guide to developing with React.md delete mode 100644 sources/tech/20201124 Build a motion detection system with a Raspberry Pi.md delete mode 100644 sources/tech/20201124 Communication by example- Which methods do high-performing open source communities use.md delete mode 100644 sources/tech/20201130 Getting started with Stratis - up and running.md delete mode 100644 sources/tech/20201202 Set up OpenStack on a Raspberry Pi cluster.md delete mode 100644 sources/tech/20201202 Vagrant beyond the basics.md delete mode 100644 sources/tech/20201203 Support your work-life balance with this open source productivity tool.md delete mode 100644 sources/tech/20201203 Watch Live TV on Linux With Hypnotix- A New IPTV Application Being Developed by Linux Mint Team.md delete mode 100644 sources/tech/20201204 Setting a standard for digital public goods.md delete mode 100644 sources/tech/20201204 Try this Linux text editor for Emacs fans.md delete mode 100644 sources/tech/20201207 Always on Top- An Often Ignored But Handy Feature in Linux Desktop.md delete mode 100644 sources/tech/20201207 Manage multiple service instances with systemctl.md delete mode 100644 sources/tech/20201207 Set up Home Assistant to manage your open source smart home.md delete mode 100644 sources/tech/20201208 3 ways Kubernetes optimizes your IT budget.md delete mode 100644 sources/tech/20201208 Collaborate on text with Etherpad, an open source alternative to Google Docs.md delete mode 100644 sources/tech/20201208 Meet Twake, A Modern Open-Source Collaboration Platform -Nextcloud Alternative.md delete mode 100644 sources/tech/20201209 How I use Stream Deck on Linux with open source tools.md delete mode 100644 sources/tech/20201210 Practice coding in Groovy by writing a game.md delete mode 100644 sources/tech/20201210 Set up a hyperconverged infrastructure with open source tools.md delete mode 100644 sources/tech/20201211 Learn Julia by coding a game.md delete mode 100644 sources/tech/20201211 Try FeatherPad as your Linux terminal text editor.md delete mode 100644 sources/tech/20201212 How to List and Remove a GPG Key in Ubuntu.md delete mode 100644 sources/tech/20201213 Garuda Linux Provides a Hassle-free Arch Experience With a Beautiful Neon Look -Review with Video.md delete mode 100644 sources/tech/20201214 Write in XML with the NetBeans text editor.md delete mode 100644 sources/tech/20201215 Cut your Cloud Computing Costs by Half with Unikraft.md delete mode 100644 sources/tech/20201215 How to Resize Images with Right Click on Linux.md delete mode 100644 sources/tech/20201216 Radicle- An Open-Source Decentralized App for Code Collaboration -P2P GitHub Alternative.md delete mode 100644 sources/tech/20201217 Explore the exciting features of the Howl text editor.md delete mode 100644 sources/tech/20201218 The role of empathy in DevOps.md delete mode 100644 sources/tech/20201218 Using pods with Podman on Fedora.md delete mode 100644 sources/tech/20201219 Learn a new old language by programming a game in Algol 68.md delete mode 100644 sources/tech/20201221 5 open source security practices from 2020.md delete mode 100644 sources/tech/20201221 Try a text editor inspired by Notepad.md delete mode 100644 sources/tech/20201222 10 lessons from sysadmins adapting to change in 2020.md delete mode 100644 sources/tech/20201222 How to Automatically Accept SSH Key Fingerprint.md delete mode 100644 sources/tech/20201223 10 Raspberry Pi project ideas from 2020.md delete mode 100644 sources/tech/20201223 Deploy Fedora CoreOS servers with Terraform.md delete mode 100644 sources/tech/20201223 How to use the Eclipse IDE as your text editor.md delete mode 100644 sources/tech/20201225 3 critical DevOps concepts we explored in 2020.md delete mode 100644 sources/tech/20201226 10 open source news headlines of 2020.md delete mode 100644 sources/tech/20201227 Jot down your ideas in a digital notebook.md delete mode 100644 sources/tech/20201229 Experience alternate computing with the Pe text editor.md delete mode 100644 sources/tech/20201229 Rocket.Chat- An Amazing Open-Source Alternative to Slack That You Can Self-host.md delete mode 100644 sources/tech/20201231 4 considerations for getting started with CI-CD in 2021.md delete mode 100644 sources/tech/20210103 7 enlightening talks from All Things Open 2020.md delete mode 100644 sources/tech/20210104 8 Kubernetes insights for 2021.md delete mode 100644 sources/tech/20210108 10 ways to advance your JavaScript journey in 2021.md delete mode 100644 sources/tech/20210109 Catch up on these 4 virtual events from 2020.md diff --git a/sources/talk/20170928 The Lineage of Man.md b/sources/talk/20170928 The Lineage of Man.md deleted file mode 100644 index de2cc7515e..0000000000 --- a/sources/talk/20170928 The Lineage of Man.md +++ /dev/null @@ -1,113 +0,0 @@ -The Lineage of Man -====== -I’ve always found man pages fascinating. Formatted as strangely as they are and accessible primarily through the terminal, they have always felt to me like relics of an ancient past. Some man pages probably are ancient: I’d love to know how many times the man page for `cat` or say `tee` has been revised since the early days of Unix, but I’m willing to bet it’s not many. Man pages are mysterious—it’s not obvious where they come from, where they live on your computer, or what kind of file they might be stored in—and yet it’s hard to believe that something so fundamental and so obviously governed by rigid conventions could remain so inscrutable. Where did the man page conventions come from? Where are they codified? If I wanted to write my own man page, where would I even begin? - -The story of `man` is inextricably tied to the story of Unix. The very first version of Unix, completed in 1971 but only available internally at Bell Labs, did not provide a `man` command. But Douglas McIlroy, who at the time was head of the Computing Techniques Research Department and managed the Unix project, insisted that some kind of documentation be made available. He pushed Ken Thompson and Dennis Ritchie, the two programmers commonly credited with creating Unix, to write some. The result was the [first edition][1] of the Unix Programmer’s Manual. - -The first edition of the Unix Programmer’s Manual consisted of (physical!) pages collected together in a single binder. It documented only 61 different commands, along with a couple dozen system calls and a few library routines. Though the `man` command itself was not to come until later, the first edition of the Unix Programmer’s Manual established many of the conventions that man pages adhere to today, even in the absence of an official specification. The documentation for each command included the well-known NAME, SYNOPSIS, DESCRIPTION, and SEE ALSO headings. Optional flags were enclosed in square brackets and meta-arguments (for example, “file” where a file path is expected) were underlined. The manual also established the canonical manual sections such as Section 1 for General Commands, Section 2 for System Calls, and so on; these sections were, at the time, simply sections of a very long printed document. Thompson and Ritchie could not have known that they were establishing a tradition that would survive for decades and decades, but that is what they did. - -McIlroy later speculated about why the man page format has survived as long as it has. In a technical report about the conceptual development of Unix, he noted that the original man pages were written in a “terse, yet informal, prose style” that together with the alphabetical ordering of information “encouraged accurate on-line documentation.” In a nod to an experience with man pages that all programmers have had at one time or another, he added that the man page format “was popular with initiates who needed to look up facts, albeit sometimes frustrating for beginners who didn’t know what facts to look for.” McIlroy was highlighting the sometimes-overlooked distinction between tutorial and reference; man pages may not be much use for the former, but they are perfect for the latter. - -The `man` command was a part of Unix by the time the [second edition][2] of the Unix Programmer’s Manual was printed. It made the entire manual available “on-line”, meaning interactively, which was seen as enormously useful. The `man` command has its own manual page in the second edition (this page is the original `man man`), which explains that `man` can be used to “run off a particular section of this manual.” Among the original Unix wizards, the term “run off” referred to the physical act of printing a document but also to the program they used to typeset documents, `roff`. The `roff` program had been used to typeset both the first and second editions of the Unix Programmer’s Manual before they were printed, but it was now also used by `man` to process man pages before they were displayed. The man pages themselves were stored on every Unix system in a file format meant to be read by `roff`. - -`roff` was the first in a long lineage of typesetting programs that have always been used to format man pages. Its own development can be traced back to a program called `RUNOFF` that was written in the mid-60s. At Bell Labs, `roff` spawned several successors including `nroff` (en-roff) and `troff` (tee-roff). `nroff` was designed to improve on `roff` and better output text to terminals, while `troff` tackled the problem of printing using a CAT phototypesetter. (If you don’t know what phototypesetting is, as I did not, I refer you to [this][3] eminently watchable film.) All of these programs were based on a kind of markup language consisting of two-letter commands inserted at the beginning of every line in a document. These commands could control such things as font size, text positioning, line spacing, and so on. Today, the most common implementation of the `roff` system is `groff`, a part of the GNU project. - -It’s easy to get a sense of what `roff` input files look like by just taking a gander at some of the man pages stored on your own computer. At least on a BSD-derived system like MacOS, you can use the `--path` argument to `man` to find out where the man page for a particular command is stored. Typically this will be under `/usr/share/man` or `/usr/local/share/man`. Using `man` this way, you can find the path for the `man` man page itself and then open it in a text editor. It will not look anything like what you’re used to looking at with `man`. On my system, the first couple dozen lines are: - -``` -.TH man 1 "September 19, 2005" -.LO 1 -.SH NAME -man \- format and display the on-line manual pages -.SH SYNOPSIS -.B man -.RB [ \-acdfFhkKtwW ] -.RB [ --path ] -.RB [ \-m -.IR system ] -.RB [ \-p -.IR string ] -.RB [ \-C -.IR config_file ] -.RB [ \-M -.IR pathlist ] -.RB [ \-P -.IR pager ] -.RB [ \-B -.IR browser ] -.RB [ \-H -.IR htmlpager ] -.RB [ \-S -.IR section_list ] -.RI [ section ] -.I "name ..." - -.SH DESCRIPTION -.B man -formats and displays the on-line manual pages. If you specify -.IR section , -.B man -only looks in that section of the manual. -.I name -is normally the name of the manual page, which is typically the name -of a command, function, or file. -However, if -.I name -contains a slash -.RB ( / ) -then -.B man -interprets it as a file specification, so that you can do -.B "man ./foo.5" -or even -.B "man /cd/foo/bar.1.gz\fR.\fP" -.PP -See below for a description of where -.B man -looks for the manual page files. -``` - -You can make out, for example, that all of the section headings are preceded by `.SH`, and everything that would appear in bold is preceded by `.B`. These commands are `roff` macros specifically designed for writing man pages. The macros used here are part of a package called `man`, but there are other packages such as `mdoc` that you can use for the same purpose. The macros make writing man pages much simpler than it would otherwise be. They also enforce consistency by always compiling down to the same set of lower-level `roff` commands. The `man` and `mdoc` packages are now documented under [GROFF_MAN(7)][4] and [GROFF_MDOC(7)][5] respectively. - -The entire `roff` system is reminiscent of LaTeX, another typesetting tool that today enjoys much more popularity. LaTeX is essentially a big bucket of macros built on top of the core TeX system designed by Donald Knuth. Like with `roff`, there are many other macro packages that you can incorporate into your LaTeX documents. These macro packages mean that you almost never have to write raw TeX yourself. LaTeX has superseded `roff` in many domains, but it is poorly suited to formatting text for a terminal, so nobody uses it to write man pages. - -If you were to write a man page today, in 2017, how would you go about it? You certainly could write a man page using a `roff` macro package like `man` or `mdoc`. The syntax is unfamiliar and unwieldy. But the macros abstract away so much of the complexity that you can write a reasonably complete man page without learning very many commands. That said, there are now other options worth considering. - -[Pandoc][6] is a widely used software tool for converting documents from one format to another. You can use Pandoc to convert Markdown files into `man`-macro-based man pages, meaning that you can now write your man pages in something as straightforward as Markdown. Pandoc supports many more Markdown constructs than most Markdown converters, giving you lots of ways to format your man page. While this convenience comes at the cost of some control, it’s unlikely that you will ever need something that would warrant dropping down to the `roff` macro level. If you’re curious about what these Markdown files might look like, I’ve written [a few of my own][7] to document a tool I created for keeping notes on how to use different command-line utilities. NPM’s [documentation][8] is also written in Markdown and converted to a `roff` man format later, though they use a JavaScript package called [marked-man][9] instead of Pandoc to do the conversion. - -So there are now plenty of ways to write man pages, giving you lots of freedom to choose the tool you think best. That said, you’d better ensure that your man page reads like every other man page that has ever been written. Even though there is now so much flexibility in tooling, the man page conventions are as strong as ever. And you might be tempted to skip writing a man page altogether—after all, you probably have documentation on the web, or maybe you just want to rely on the `--help` flag—but you’re forgoing the patina of respectability a man page can provide. The man page is an institution that doesn’t seem likely to disappear or evolve soon, which is fascinating, because there are so many ways in which we could do man pages better. XML didn’t come off well in my [last post][10], but it would be the perfect format here, and it would allow us to do something like query `man` about an option: - -``` -$ man grep -v -Selected lines are those not matching any of the specified patterns. -``` - -Imagine that! But it seems that we’re all too used to man pages the way they are. In a field where rapid change is the norm, maybe some stability—particularly in a documentation system we all turn to in moments of ignorance and confusion—is a good thing. - -If you enjoyed this post, more like it come out every two weeks! Follow [@TwoBitHistory][11] on Twitter or subscribe to the [RSS feed][12] to make sure you know when a new post is out. - --------------------------------------------------------------------------------- - -via: https://twobithistory.org/2017/09/28/the-lineage-of-man.html - -作者:[Two-Bit History][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://twobithistory.org -[b]: https://github.com/lujun9972 -[1]: https://www.bell-labs.com/usr/dmr/www/1stEdman.html -[2]: http://bitsavers.informatik.uni-stuttgart.de/pdf/att/unix/2nd_Edition/UNIX_Programmers_Manual_2ed_Jun72.pdf -[3]: https://vimeo.com/127605644 -[4]: http://man7.org/linux/man-pages/man7/groff_man.7.html -[5]: http://man7.org/linux/man-pages/man7/groff_mdoc.7.html -[6]: http://pandoc.org/ -[7]: https://github.com/sinclairtarget/um/tree/02365bd0c0a229efb936b3d6234294e512e8a218/doc -[8]: https://github.com/npm/npm/blob/20589f4b028d3e8a617800ac6289d27f39e548e8/doc/cli/npm.md -[9]: https://www.npmjs.com/package/marked-man -[10]: https://twobithistory.org/2017/09/21/the-rise-and-rise-of-json.html -[11]: https://twitter.com/TwoBitHistory -[12]: https://twobithistory.org/feed.xml diff --git a/sources/talk/20171007 The Most Important Database You-ve Never Heard of.md b/sources/talk/20171007 The Most Important Database You-ve Never Heard of.md deleted file mode 100644 index f429aba373..0000000000 --- a/sources/talk/20171007 The Most Important Database You-ve Never Heard of.md +++ /dev/null @@ -1,50 +0,0 @@ -The Most Important Database You've Never Heard of -====== -In 1962, JFK challenged Americans to send a man to the moon by the end of the decade, inspiring a heroic engineering effort that culminated in Neil Armstrong’s first steps on the lunar surface. Many of the fruits of this engineering effort were highly visible and sexy—there were new spacecraft, new spacesuits, and moon buggies. But the Apollo Program was so staggeringly complex that new technologies had to be invented even to do the mundane things. One of these technologies was IBM’s Information Management System (IMS). - -IMS is a database management system. NASA needed one in order to keep track of all the parts that went into building a Saturn V rocket, which—because there were two million of them—was expected to be a challenge. Databases were a new idea in the 1960s and there weren’t any already available for NASA to use, so, in 1965, NASA asked IBM to work with North American Aviation and Caterpillar Tractor to create one. By 1968, IBM had installed a working version of IMS at NASA, though at the time it was called ICS/DL/I for “Informational Control System and Data Language/Interface.” (IBM seems to have gone through a brief, unfortunate infatuation with the slash; see [PL/I][1].) Two years later, IBM rebranded ICS/DL/I as “IMS” and began selling it to other customers. It was one of the first commercially available database management systems. - -The incredible thing about IMS is that it is still in use today. And not just on a small scale: Banks, insurance companies, hospitals, and government agencies still use IMS for all sorts of critical tasks. Over 95% of Fortune 1000 companies use IMS in some capacity, as do all of the top five US banks. Whenever you withdraw cash from an ATM, the odds are exceedingly good that you are interacting with IMS at some point in the course of your transaction. In a world where the relational database is an old workhorse increasingly in competition with trendy new NoSQL databases, IMS is a freaking dinosaur. It is a relic from an era before the relational database was even invented, which didn’t happen until 1970. And yet it seems to be the database system in charge of all the important stuff. - -I think this makes IMS pretty interesting. Depending on how you feel about relational databases, it either offers insight into how the relational model improved on its predecessors or else exemplifies an alternative model better suited to certain problems. - -IMS works according to a hierarchical model, meaning that, instead of thinking about data as tables that can be brought together using JOIN operations, IMS thinks about data as trees. Each kind of record you store can have other kinds of records as children; these child record types represent additional information that you might be interested in given a record of the parent type. - -To take an example, say that you want to store information about bank customers. You might have one type of record to represent customers and another type of record to represent accounts. Like in a relational database, where each table has columns, these records will have different fields; we might want to have a first name field, a last name field, and a city field for each customer. We must then decide whether we are likely to first lookup a customer and then information about that customer’s account, or whether we are likely to first lookup an account and then information about that account’s owner. Assuming we decide that we will access customers first, then we will make our account record type a child of our customer record type. Diagrammed, our database model would look something like this: - -![][2] - -And an actual database might look like: - -![][3] - -By modeling our data this way, we are hewing close to the reality of how our data is stored. Each parent record includes pointers to its children, meaning that moving down our tree from the root node is efficient. (Actually, each parent basically stores just one pointer to the first of its children. The children in turn contain pointers to their siblings. This ensures that the size of a record does not vary with the number of children it has.) This efficiency can make data accesses very fast, provided that we are accessing our data in ways that we anticipated when we first structured our database. According to IBM, an IMS instance can process over 100,000 transactions a second, which is probably a large part of why IMS is still used, particularly at banks. But the downside is that we have lost a lot of flexibility. If we want to access our data in ways we did not anticipate, we will have a hard time. - -To illustrate this, consider what might happen if we decide that we would like to access accounts before customers. Perhaps customers are calling in to update their addresses, and we would like them to uniquely identify themselves using their account numbers. So we want to use an account number to find an account, and then from there find the account’s owner. But since all accesses start at the root of our tree, there’s no way for us to get to an account efficiently without first deciding on a customer. To fix this problem, we could introduce a second tree or hierarchy starting with account records; these account records would then have customer records as children. This would let us access accounts and then customers efficiently. But it would involve duplicating information that we already have stored in our database—we would have two trees storing the same information in different orders. Another option would be to establish an index of accounts that could point us to the right account record given an account number. That would work too, but it would entail extra work during insert and update operations in the future. - -It was precisely this inflexibility and the problem of duplicated information that pushed E. F. Codd to propose the relational model. In his 1970 paper, A Relational Model of Data for Large Shared Data Banks, he states at the outset that he intends to present a model for data storage that can protect users from having to know anything about how their data is stored. Looked at one way, the hierarchical model is entirely an artifact of how the designers of IMS chose to store data. It is a bottom-up model, the implication of a physical reality. The relational model, on the other hand, is an abstract model based on relational algebra, and is top-down in that the data storage scheme can be anything provided it accommodates the model. The relational model’s great advantage is that, just because you’ve made decisions that have caused the database to store your data in a particular way, you won’t find yourself effectively unable to make certain queries. - -All that said, the relational model is an abstraction, and we all know abstractions aren’t free. Banks and large institutions have stuck with IMS partly because of the performance benefits, though it’s hard to say if those benefits would be enough to keep them from switching to a modern database if they weren’t also trying to avoid rewriting mission-critical legacy code. However, today’s popular NoSQL databases demonstrate that there are people willing to drop the conveniences of the relational model in return for better performance. Something like MongoDB, which encourages its users to store data in a denormalized form, isn’t all that different from IMS. If you choose to store some entity inside of another JSON record, then in effect you have created something like the IMS hierarchy, and you have constrained your ability to query for that data in the future. But perhaps that’s a tradeoff you’re willing to make. So, even if IMS hadn’t predated E. F. Codd’s relational model by several years, there are still reasons why IMS’ creators might not have adopted the relational model wholesale. - -Unfortunately, IMS isn’t something that you can download and take for a spin on your own computer. First of all, IMS is not free, so you would have to buy it from IBM. But the bigger problem is that IMS only runs on IBM mainframes like the IBM z13. That’s a shame, because it would be a joy to play around with IMS and get a sense for exactly how it differs from something like MySQL. But even without that opportunity, it’s interesting to think about software systems that work in ways we don’t expect or aren’t used to. And it’s especially interesting when those systems, alien as they are, turn out to undergird your local hospital, the entire financial sector, and even the federal government. - -If you enjoyed this post, more like it come out every two weeks! Follow [@TwoBitHistory][4] on Twitter or subscribe to the [RSS feed][5] to make sure you know when a new post is out. - --------------------------------------------------------------------------------- - -via: https://twobithistory.org/2017/10/07/the-most-important-database.html - -作者:[Two-Bit History][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://twobithistory.org -[b]: https://github.com/lujun9972 -[1]: https://en.wikipedia.org/wiki/PL/I -[2]: https://twobithistory.org/images/hierarchical-model.png -[3]: https://twobithistory.org/images/hierarchical-db.png -[4]: https://twitter.com/TwoBitHistory -[5]: https://twobithistory.org/feed.xml diff --git a/sources/talk/20171128 The politics of the Linux desktop.md b/sources/talk/20171128 The politics of the Linux desktop.md deleted file mode 100644 index c9117dacfe..0000000000 --- a/sources/talk/20171128 The politics of the Linux desktop.md +++ /dev/null @@ -1,110 +0,0 @@ -The politics of the Linux desktop -============================================================ - -### If you're working in open source, why would you use anything but Linux as your main desktop? - - -![The politics of the Linux desktop](https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/BUSINESS_networks.png?itok=XasNXxKs "The politics of the Linux desktop") -Image by : opensource.com - -At some point in 1997 or 1998—history does not record exactly when—I made the leap from Windows to the Linux desktop. I went through quite a few distributions, from Red Hat to SUSE to Slackware, then Debian, Debian Experimental, and (for a long time thereafter) Ubuntu. When I accepted a role at Red Hat, I moved to Fedora, and migrated both my kids (then 9 and 11) to Fedora as well. - -More Linux resources - -* [What is Linux?][1] - -* [What are Linux containers?][2] - -* [Download Now: Linux commands cheat sheet][3] - -* [Advanced Linux commands cheat sheet][4] - -* [Our latest Linux articles][5] - -For a few years, I kept Windows as a dual-boot option, and then realised that, if I was going to commit to Linux, then I ought to go for it properly. In losing Windows, I didn't miss much; there were a few games that I couldn't play, but it was around the time that the Civilization franchise was embracing Linux, so that kept me happy. - -The move to Linux wasn't plain sailing, by any stretch of the imagination. If you wanted to use fairly new hardware in the early days, you had to first ensure that there were  _any_  drivers for Linux, then learn how to compile and install them. If they were not quite my friends, **lsmod** and **modprobe** became at least close companions. I taught myself to compile a kernel and tweak the options to make use of (sometimes disastrous) new, "EXPERIMENTAL" features as they came out. Early on, I learned the lesson that you should always keep at least one kernel in your [LILO][12] list that you were  _sure_  booted fully. I cursed NVidia and grew horrified by SCSI. I flirted with early journalling filesystem options and tried to work out whether the different preempt parameters made any noticeable difference to my user experience or not. I began to accept that printers would never print—and then they started to. I discovered that the Bluetooth stack suddenly started to connect to things. - -Over the years, using Linux moved from being an uphill struggle to something that just worked. I moved my mother-in-law and then my father over to Linux so I could help administer their machines. And then I moved them off Linux so they could no longer ask me to help administer their machines. - -Over the years, using Linux moved from being an uphill struggle to something that just worked.It wasn't just at home, either: I decided that I would use Linux as my desktop for work, as well. I even made it a condition of employment for at least one role. Linux desktop support in the workplace caused different sets of problems. The first was the "well, you're on your own: we're not going to support you" email from IT support. VPNs were touch and go, but in the end, usually go. - -The biggest hurdle was Microsoft Office, until I discovered [CrossOver][13], which I bought with my own money, and which allowed me to run company-issued copies of Word, PowerPoint, and the rest on my Linux desktop. Fonts were sometimes a problem, and one company I worked for required Microsoft Lync. For this, and for a few other applications, I would sometimes have to run a Windows virtual machine (VM) on my Linux desktop.  Was this a cop out?  Well, a little bit: but I've always tried to restrict my usage of this approach to the bare minimum. - -### But why? - -"Why?" colleagues would ask. "Why do you bother? Why not just run Windows?" - -"Because I enjoy pain," was usually my initial answer, and then the more honest, "because of the principle of the thing." - -So this is it: I believe in open source. We have a number of very, very good desktop-compatible distributions these days, and most of the time they just work. If you use well-known or supported hardware, they're likely to "just work" pretty much as well as the two obvious alternatives, Windows or Mac. And they just work because many people have put much time into using them, testing them, and improving them. So it's not a case of why wouldn't I use Windows or Mac, but why would I ever consider  _not_  using Linux? If, as I do, you believe in open source, and particularly if you work within the open source community or are employed by an open source organisation, I struggle to see why you would even consider not using Linux. - -So it's not a case of why wouldn't I use Windows or Mac, but why would I ever consider not using Linux?I've spoken to people about this (of course I have), and here are the most common reasons—or excuses—I've heard. - -1. I'm more productive on Windows/Mac. - -2. I can't use app X on Linux, and I need it for my job. - -3. I can't game on Linux. - -4. It's what our customers use, so why we would alienate them? - -5. "Open" means choice, and I prefer a proprietary desktop, so I use that. - -Interestingly, I don't hear "Linux isn't good enough" much anymore, because it's manifestly untrue, and I can show that my own experience—and that of many colleagues—belies that. - -### Rebuttals - -If you believe in open source, then I contest that you should take the time to learn how to use a Linux desktop and the associated applications.Let's go through those answers and rebut them. - -1. **I'm more productive on Windows/Mac.** I'm sure you are. Anyone is more productive when they're using a platform or a system they're used to. If you believe in open source, then I contest that you should take the time to learn how to use a Linux desktop and the associated applications. If you're working for an open source organisation, they'll probably help you along, and you're unlikely to find you're much less productive in the long term. And, you know what? If you are less productive in the long term, then get in touch with the maintainers of the apps that are causing you to be less productive and help improve them. You don't have to be a coder. You could submit bug reports, suggest improvements, write documentation, or just test the most recent versions of the software. And then you're helping yourself and the rest of the community. Welcome to open source. - -1. **I can't use app X on Linux, and I need it for my job.** This may be true. But it's probably less true than you think. The people most often saying this with conviction are audio, video, or graphics experts. It was certainly the case for many years that Linux lagged behind in those areas, but have a look and see what the other options are. And try them, even if they're not perfect, and see how you can improve them. Alternatively, use a VM for that particular app. - -1. **I can't game on Linux.** Well, you probably can, but not all the games that you enjoy. This, to be clear, shouldn't really be an excuse not to use Linux for most of what you do. It might be a reason to keep a dual-boot system or to do what I did (after much soul-searching) and buy a games console (because Elite Dangerous really  _doesn't_  work on Linux, more's the pity). It should also be an excuse to lobby for your favourite games to be ported to Linux. - -1. **It's what our customers use, so why would we alienate them?** I don't get this one. Does Microsoft ban visitors with Macs from their buildings? Does Apple ban Windows users? Does Google allow non-Android phones through their doors? You don't kowtow to the majority when you're the little guy or gal; if you're working in open source, surely you should be proud of that. You're not going to alienate your customer—you're really not. - -1. **"Open" means choice, and I prefer a proprietary desktop, so I use that.**Being open certainly does mean you have a choice. You made that choice by working in open source. For many, including me, that's a moral and philosophical choice. Saying you embrace open source, but rejecting it in practice seems mealy mouthed, even insulting. Using openness to justify your choice is the wrong approach. Saying "I prefer a proprietary desktop, and company policy allows me to do so" is better. I don't agree with your decision, but at least you're not using the principle of openness to justify it. - -Is using open source easy? Not always. But it's getting easier. I think that we should stand up for what we believe in, and if you're reading [Opensource.com][14], then you probably believe in open source. And that, I believe, means that you should run Linux as your main desktop. - - _Note: I welcome comments, and would love to hear different points of view. I would ask that comments don't just list application X or application Y as not working on Linux. I concede that not all apps do. I'm more interested in justifications that I haven't covered above, or (perceived) flaws in my argument. Oh, and support for it, of course._ - - -### About the author - - [![](https://opensource.com/sites/default/files/styles/profile_pictures/public/pictures/2017-05-10_0129.jpg?itok=Uh-eKFhx)][15] - - Mike Bursell - I've been in and around Open Source since around 1997, and have been running (GNU) Linux as my main desktop at home and work since then: [not always easy][7]...  I'm a security bod and architect, and am currently employed as Chief Security Architect for Red Hat.  I have a blog - "[Alice, Eve & Bob][8]" - where I write (sometimes rather parenthetically) about security.  I live in the UK and... [more about Mike Bursell][9][More about me][10] - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/17/11/politics-linux-desktop - -作者:[Mike Bursell ][a] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]:https://opensource.com/users/mikecamel -[1]:https://opensource.com/resources/what-is-linux?intcmp=70160000000h1jYAAQ&utm_source=intcallout&utm_campaign=linuxcontent -[2]:https://opensource.com/resources/what-are-linux-containers?intcmp=70160000000h1jYAAQ&utm_source=intcallout&utm_campaign=linuxcontent -[3]:https://developers.redhat.com/promotions/linux-cheatsheet/?intcmp=70160000000h1jYAAQ&utm_source=intcallout&utm_campaign=linuxcontent -[4]:https://developers.redhat.com/cheat-sheet/advanced-linux-commands-cheatsheet?intcmp=70160000000h1jYAAQ&utm_source=intcallout&utm_campaign=linuxcontent -[5]:https://opensource.com/tags/linux?intcmp=70160000000h1jYAAQ&utm_source=intcallout&utm_campaign=linuxcontent -[6]:https://opensource.com/article/17/11/politics-linux-desktop?rate=do69ixoNzK0yg3jzFk0bc6ZOBsIUcqTYv6FwqaVvzUA -[7]:https://opensource.com/article/17/11/politics-linux-desktop -[8]:https://aliceevebob.com/ -[9]:https://opensource.com/users/mikecamel -[10]:https://opensource.com/users/mikecamel -[11]:https://opensource.com/user/105961/feed -[12]:https://en.wikipedia.org/wiki/LILO_(boot_loader) -[13]:https://en.wikipedia.org/wiki/CrossOver_(software) -[14]:https://opensource.com/ -[15]:https://opensource.com/users/mikecamel -[16]:https://opensource.com/users/mikecamel -[17]:https://opensource.com/users/mikecamel -[18]:https://opensource.com/article/17/11/politics-linux-desktop#comments -[19]:https://opensource.com/tags/linux diff --git a/sources/talk/20171229 Important Papers- Codd and the Relational Model.md b/sources/talk/20171229 Important Papers- Codd and the Relational Model.md deleted file mode 100644 index 8fc8b1f701..0000000000 --- a/sources/talk/20171229 Important Papers- Codd and the Relational Model.md +++ /dev/null @@ -1,44 +0,0 @@ -Important Papers: Codd and the Relational Model -====== -It’s hard to believe today, but the relational database was once the cool new kid on the block. In 2017, the relational model competes with all sorts of cutting-edge NoSQL technologies that make relational database systems seem old-fashioned and boring. Yet, 50 years ago, none of the dominant database systems were relational. Nobody had thought to structure their data that way. When the relational model did come along, it was a radical new idea that revolutionized the database world and spawned a multi-billion dollar industry. - -The relational model was introduced in 1970. Edgar F. Codd, a researcher at IBM, published a [paper][1] called “A Relational Model of Data for Large Shared Data Banks.” The paper was a rewrite of a paper he had circulated internally at IBM a year earlier. The paper is unassuming; Codd does not announce in his abstract that he has discovered a brilliant new approach to storing data. He only claims to have employed a novel tool (the mathematical notion of a “relation”) to address some of the inadequacies of the prevailing database models. - -In 1970, there were two schools of thought about how to structure a database: the hierarchical model and the network model. The hierarchical model was used by IBM’s Information Management System (IMS), the dominant database system at the time. The network model had been specified by a standards committee called CODASYL (which also—random tidbit—specified COBOL) and implemented by several other database system vendors. The two models were not really that different; both could be called “navigational” models. They persisted tree or graph data structures to disk using pointers to preserve the links between the data. Retrieving a record stored toward the bottom of the tree would involve first navigating through all of its ancestor records. These databases were fast (IMS is still used by many financial institutions partly for this reason, see [this excellent blog post][2]) but inflexible. Woe unto those database administrators who suddenly found themselves needing to query records from the bottom of the tree without having an obvious place to start at the top. - -Codd saw this inflexibility as a symptom of a larger problem. Programs using a hierarchical or network database had to know about how the stored data was structured. Programs had to know this because they were responsible for navigating down this structure to find the information they needed. This was so true that when Charles Bachman, a major pioneer of the network model, received a Turing Award for his work in 1973, he gave a speech titled “[The Programmer as Navigator][3].” Of course, if programs were saddled with this responsibility, then they would immediately break if the structure of the database ever changed. In the introduction to his 1970 paper, Codd motivates the search for a better model by arguing that we need “data independence,” which he defines as “the independence of application programs and terminal activities from growth in data types and changes in data representation.” The relational model, he argues, “appears to be superior in several respects to the graph or network model presently in vogue,” partly because, among other benefits, the relational model “provides a means of describing data with its natural structure only.” By this he meant that programs could safely ignore any artificial structures (like trees) imposed upon the data for storage and retrieval purposes only. - -To further illustrate the problem with the navigational models, Codd devotes the first section of his paper to an example data set involving machine parts and assembly projects. This dataset, he says, could be represented in existing systems in at least five different ways. Any program that is developed assuming one of five structures will fail when run against at least three of the other structures. The program could instead try to figure out ahead of time which of the structures it might be dealing with, but it would be difficult to do so in this specific case and practically impossible in the general case. So, as long as the program needs to know about how the data is structured, we cannot switch to an alternative structure without breaking the program. This is a real bummer because (and this is from the abstract) “changes in data representation will often be needed as a result of changes in query, update, and report traffic and natural growth in the types of stored information.” - -Codd then introduces his relational model. This model would be refined and expanded in subsequent papers: In 1971, Codd wrote about ALPHA, a SQL-like query language he created; in another 1971 paper, he introduced the first three normal forms we know and love today; and in 1972, he further developed relational algebra and relational calculus, the mathematically rigorous underpinnings of the relational model. But Codd’s 1970 paper contains the kernel of the relational idea: - -> The term relation is used here in its accepted mathematical sense. Given sets (not necessarily distinct), is a relation on these sets if it is a set of -tuples each of which has its first element from , its second element from , and so on. We shall refer to as the th domain of . As defined above, is said to have degree . Relations of degree 1 are often called unary, degree 2 binary, degree 3 ternary, and degree n-ary. - -Today, we call a relation a table, and a domain an attribute or a column. The word “table” actually appears nowhere in the paper, though Codd’s visual representations of relations (which he calls “arrays”) do resemble tables. Codd defines several more terms, some of which we continue to use and others we have replaced. He explains primary and foreign keys, as well as what he calls the “active domain,” which is the set of all distinct values that actually appear in a given domain or column. He then spends some time distinguishing between a “simple” and a “nonsimple” domain. A simple domain contains “atomic” or “nondecomposable” values, like integers. A nonsimple domain has relations as elements. The example Codd gives here is that of an employee with a salary history. The salary history is not one salary but a collection of salaries each associated with a date. So a salary history cannot be represented by a single number or string. - -It’s not obvious how one could store a nonsimple domain in a multi-dimensional array, AKA a table. The temptation might be to denote the nonsimple relationship using some kind of pointer, but then we would be repeating the mistakes of the navigational models. Instead. Codd introduces normalization, which at least in the 1970 paper involves nothing more than turning nonsimple domains into simple ones. This is done by expanding the child relation so that it includes the primary key of the parent. Each tuple of the child relation references its parent using simple domains, eliminating the need for a nonsimple domain in the parent. Normalization means no pointers, sidestepping all the problems they cause in the navigational models. - -At this point, anyone reading Codd’s paper would have several questions, such as “Okay, how would I actually query such a system?” Codd mentions the possibility of creating a universal sublanguage for querying relational databases from other programs, but declines to define such a language in this particular paper. He does explain, in mathematical terms, many of the fundamental operations such a language would have to support, like joins, “projection” (`SELECT` in SQL), and “restriction” (`WHERE`). The amazing thing about Codd’s 1970 paper is that, really, all the ideas are there—we’ve been writing `SELECT` statements and joins for almost half a century now. - -Codd wraps up the paper by discussing ways in which a normalized relational database, on top of its other benefits, can reduce redundancy and improve consistency in data storage. Altogether, the paper is only 11 pages long and not that difficult of a read. I encourage you to look through it yourself. It would be another ten years before Codd’s ideas were properly implemented in a functioning system, but, when they finally were, those systems were so obviously better than previous systems that they took the world by storm. - -If you enjoyed this post, more like it come out every two weeks! Follow [@TwoBitHistory][4] on Twitter or subscribe to the [RSS feed][5] to make sure you know when a new post is out. - --------------------------------------------------------------------------------- - -via: https://twobithistory.org/2017/12/29/codd-relational-model.html - -作者:[Two-Bit History][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://twobithistory.org -[b]: https://github.com/lujun9972 -[1]: https://cs.uwaterloo.ca/~david/cs848s14/codd-relational.pdf -[2]: https://twobithistory.org/2017/10/07/the-most-important-database.html -[3]: https://pdfs.semanticscholar.org/f371/d196bf0e7b43df6dcbbc44de461925a21709.pdf -[4]: https://twitter.com/TwoBitHistory -[5]: https://twobithistory.org/feed.xml diff --git a/sources/talk/20180201 6 pivotal moments in open source history.md b/sources/talk/20180201 6 pivotal moments in open source history.md deleted file mode 100644 index 2d0f80dd1f..0000000000 --- a/sources/talk/20180201 6 pivotal moments in open source history.md +++ /dev/null @@ -1,94 +0,0 @@ -6 pivotal moments in open source history -============================================================ - -### Here's how open source developed from a printer jam solution at MIT to a major development model in the tech industry today. - -![6 pivotal moments in open source history](https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/welcome-open-sign-door-osdc-lead.png?itok=i9jCnaiu "6 pivotal moments in open source history") -Image credits : [Alan Levine][4]. [CC0 1.0][5] - -Open source has taken a prominent role in the IT industry today. It is everywhere from the smallest embedded systems to the biggest supercomputer, from the phone in your pocket to the software running the websites and infrastructure of the companies we engage with every day. Let's explore how we got here and discuss key moments from the past 40 years that have paved a path to the current day. - -### 1\. RMS and the printer - -In the late 1970s, [Richard M. Stallman (RMS)][6] was a staff programmer at MIT. His department, like those at many universities at the time, shared a PDP-10 computer and a single printer. One problem they encountered was that paper would regularly jam in the printer, causing a string of print jobs to pile up in a queue until someone fixed the jam. To get around this problem, the MIT staff came up with a nice social hack: They wrote code for the printer driver so that when it jammed, a message would be sent to everyone who was currently waiting for a print job: "The printer is jammed, please fix it." This way, it was never stuck for long. - -In 1980, the lab accepted a donation of a brand-new laser printer. When Stallman asked for the source code for the printer driver, however, so he could reimplement the social hack to have the system notify users on a paper jam, he was told that this was proprietary information. He heard of a researcher in a different university who had the source code for a research project, and when the opportunity arose, he asked this colleague to share it—and was shocked when they refused. They had signed an NDA, which Stallman took as a betrayal of the hacker culture. - -The late '70s and early '80s represented an era where software, which had traditionally been given away with the hardware in source code form, was seen to be valuable. Increasingly, MIT researchers were starting software companies, and selling licenses to the software was key to their business models. NDAs and proprietary software licenses became the norms, and the best programmers were hired from universities like MIT to work on private development projects where they could no longer share or collaborate. - -As a reaction to this, Stallman resolved that he would create a complete operating system that would not deprive users of the freedom to understand how it worked, and would allow them to make changes if they wished. It was the birth of the free software movement. - -### 2\. Creation of GNU and the advent of free software - -By late 1983, Stallman was ready to announce his project and recruit supporters and helpers. In September 1983, [he announced the creation of the GNU project][7] (GNU stands for GNU's Not Unix—a recursive acronym). The goal of the project was to clone the Unix operating system to create a system that would give complete freedom to users. - -In January 1984, he started working full-time on the project, first creating a compiler system (GCC) and various operating system utilities. Early in 1985, he published "[The GNU Manifesto][8]," which was a call to arms for programmers to join the effort, and launched the Free Software Foundation in order to accept donations to support the work. This document is the founding charter of the free software movement. - -### 3\. The writing of the GPL - -Until 1989, software written and released by the [Free Software Foundation][9] and RMS did not have a single license. Emacs was released under the Emacs license, GCC was released under the GCC license, and so on; however, after a company called Unipress forced Stallman to stop distributing copies of an Emacs implementation they had acquired from James Gosling (of Java fame), he felt that a license to secure user freedoms was important. - -The first version of the GNU General Public License was released in 1989, and it encapsulated the values of copyleft (a play on words—what is the opposite of copyright?): You may use, copy, distribute, and modify the software covered by the license, but if you make changes, you must share the modified source code alongside the modified binaries. This simple requirement to share modified software, in combination with the advent of the internet in the 1990s, is what enabled the decentralized, collaborative development model of the free software movement to flourish. - -### 4\. "The Cathedral and the Bazaar" - -By the mid-1990s, Linux was starting to take off, and free software had become more mainstream—or perhaps "less fringe" would be more accurate. The Linux kernel was being developed in a way that was completely different to anything people had been seen before, and was very successful doing it. Out of the chaos of the kernel community came order, and a fast-moving project. - -In 1997, Eric S. Raymond published the seminal essay, "[The Cathedral and the Bazaar][10]," comparing and contrasting the development methodologies and social structure of GCC and the Linux kernel and talking about his own experiences with a "bazaar" development model with the Fetchmail project. Many of the principles that Raymond describes in this essay will later become central to agile development and the DevOps movement—"release early, release often," refactoring of code, and treating users as co-developers are all fundamental to modern software development. - -This essay has been credited with bringing free software to a broader audience, and with convincing executives at software companies at the time that releasing their software under a free software license was the right thing to do. Raymond went on to be instrumental in the coining of the term "open source" and the creation of the Open Source Institute. - -"The Cathedral and the Bazaar" was credited as a key document in the 1998 release of the source code for the Netscape web browser Mozilla. At the time, this was the first major release of an existing, widely used piece of desktop software as free software, which brought it further into the public eye. - -### 5\. Open source - -As far back as 1985, the ambiguous nature of the word "free", used to describe software freedom, was identified as problematic by RMS himself. In the GNU Manifesto, he identified "give away" and "for free" as terms that confused zero price and user freedom. "Free as in freedom," "Speech not beer," and similar mantras were common when free software hit a mainstream audience in the late 1990s, but a number of prominent community figures argued that a term was needed that made the concept more accessible to the general public. - -After Netscape released the source code for Mozilla in 1998 (see #4), a group of people, including Eric Raymond, Bruce Perens, Michael Tiemann, Jon "Maddog" Hall, and many of the leading lights of the free software world, gathered in Palo Alto to discuss an alternative term. The term "open source" was [coined by Christine Peterson][11] to describe free software, and the Open Source Institute was later founded by Bruce Perens and Eric Raymond. The fundamental difference with proprietary software, they argued, was the availability of the source code, and so this was what should be put forward first in the branding. - -Later that year, at a summit organized by Tim O'Reilly, an extended group of some of the most influential people in the free software world at the time gathered to debate various new brands for free software. In the end, "open source" edged out "sourceware," and open source began to be adopted by many projects in the community. - -There was some disagreement, however. Richard Stallman and the Free Software Foundation continued to champion the term "free software," because to them, the fundamental difference with proprietary software was user freedom, and the availability of source code was just a means to that end. Stallman argued that removing the focus on freedom would lead to a future where source code would be available, but the user of the software would not be able to avail of the freedom to modify the software. With the advent of web-deployed software-as-a-service and open source firmware embedded in devices, the battle continues to be waged today. - -### 6\. Corporate investment in open source—VA Linux, Red Hat, IBM - -In the late 1990s, a series of high-profile events led to a huge increase in the professionalization of free and open source software. Among these, the highest-profile events were the IPOs of VA Linux and Red Hat in 1999\. Both companies had massive gains in share price on their opening days as publicly traded companies, proving that open source was now going commercial and mainstream. - -Also in 1999, IBM announced that they were supporting Linux by investing $1 billion in its development, making is less risky to traditional enterprise users. The following year, Sun Microsystems released the source code to its cross-platform office suite, StarOffice, and created the [OpenOffice.org][12] project. - -The combined effect of massive Silicon Valley funding of open source projects, the attention of Wall Street for young companies built around open source software, and the market credibility that tech giants like IBM and Sun Microsystems brought had combined to create the massive adoption of open source, and the embrace of the open development model that helped it thrive have led to the dominance of Linux and open source in the tech industry today. - - _Which pivotal moments would you add to the list? Let us know in the comments._ - -### About the author - - [![](https://opensource.com/sites/default/files/styles/profile_pictures/public/pictures/picture-11423-8ecef7f357341aaa7aee8b43e9b530c9.png?itok=n1snBFq3)][13] Dave Neary - Dave Neary is a member of the Open Source and Standards team at Red Hat, helping make Open Source projects important to Red Hat be successful. Dave has been around the free and open source software world, wearing many different hats, since sending his first patch to the GIMP in 1999.[More about me][2] - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/18/2/pivotal-moments-history-open-source - -作者:[Dave Neary ][a] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]:https://opensource.com/users/dneary -[1]:https://opensource.com/article/18/2/pivotal-moments-history-open-source?rate=gsG-JrjfROWACP7i9KUoqmH14JDff8-31C2IlNPPyu8 -[2]:https://opensource.com/users/dneary -[3]:https://opensource.com/user/16681/feed -[4]:https://www.flickr.com/photos/cogdog/6476689463/in/photolist-aSjJ8H-qHAvo4-54QttY-ofm5ZJ-9NnUjX-tFxS7Y-bPPjtH-hPYow-bCndCk-6NpFvF-5yQ1xv-7EWMXZ-48RAjB-5EzYo3-qAFAdk-9gGty4-a2BBgY-bJsTcF-pWXATc-6EBTmq-SkBnSJ-57QJco-ddn815-cqt5qG-ddmYSc-pkYxRz-awf3n2-Rvnoxa-iEMfeG-bVfq5-jXy74D-meCC1v-qx22rx-fMScsJ-ci1435-ie8P5-oUSXhp-xJSm9-bHgApk-mX7ggz-bpsxd7-8ukud7-aEDmBj-qWkytq-ofwhdM-b7zSeD-ddn5G7-ddn5gb-qCxnB2-S74vsk -[5]:https://creativecommons.org/publicdomain/zero/1.0/ -[6]:https://en.wikipedia.org/wiki/Richard_Stallman -[7]:https://groups.google.com/forum/#!original/net.unix-wizards/8twfRPM79u0/1xlglzrWrU0J -[8]:https://www.gnu.org/gnu/manifesto.en.html -[9]:https://www.fsf.org/ -[10]:https://en.wikipedia.org/wiki/The_Cathedral_and_the_Bazaar -[11]:https://opensource.com/article/18/2/coining-term-open-source-software -[12]:http://www.openoffice.org/ -[13]:https://opensource.com/users/dneary -[14]:https://opensource.com/users/dneary -[15]:https://opensource.com/users/dneary -[16]:https://opensource.com/article/18/2/pivotal-moments-history-open-source#comments -[17]:https://opensource.com/tags/licensing \ No newline at end of file diff --git a/sources/talk/20180818 What Did Ada Lovelace-s Program Actually Do.md b/sources/talk/20180818 What Did Ada Lovelace-s Program Actually Do.md deleted file mode 100644 index 8bbb651cfd..0000000000 --- a/sources/talk/20180818 What Did Ada Lovelace-s Program Actually Do.md +++ /dev/null @@ -1,138 +0,0 @@ -What Did Ada Lovelace's Program Actually Do? -====== -The story of Microsoft’s founding is one of the most famous episodes in computing history. In 1975, Paul Allen flew out to Albuquerque to demonstrate the BASIC interpreter that he and Bill Gates had written for the Altair microcomputer. Because neither of them had a working Altair, Allen and Gates tested their interpreter using an emulator that they wrote and ran on Harvard’s computer system. The emulator was based on nothing more than the published specifications for the Intel 8080 processor. When Allen finally ran their interpreter on a real Altair—in front of the person he and Gates hoped would buy their software—he had no idea if it would work. But it did. The next month, Allen and Gates officially founded their new company. - -Over a century before Allen and Gates wrote their BASIC interpreter, Ada Lovelace wrote and published a computer program. She, too, wrote a program for a computer that had only been described to her. But her program, unlike the Microsoft BASIC interpreter, was never run, because the computer she was targeting was never built. - -Lovelace’s program is often called the world’s first computer program. Not everyone agrees that it should be called that. Lovelace’s legacy, it turns out, is one of computing history’s most hotly debated subjects. Walter Isaacson has written that the dispute about the extent and merit of her contributions constitutes a “minor academic specialty.” Inevitably, the fact that Lovelace was a woman has made this dispute a charged one. Historians have cited all kinds of primary evidence to argue that the credit given to Lovelace is either appropriate or undeserved. But they seem to spend less time explaining the technical details of her published writing, which is unfortunate, because the technical details are the most fascinating part of the story. Who wouldn’t want to know exactly how a program written in 1843 was supposed to work? - -In fairness, Lovelace’s program is not easy to explain to the layperson without some hand-waving. It’s the intricacies of her program, though, that make it so remarkable. Whether or not she ought to be known as “the first programmer,” her program was specified with a degree of rigor that far surpassed anything that came before. She thought carefully about how operations could be organized into groups that could be repeated, thereby inventing the loop. She realized how important it was to track the state of variables as they changed, introducing a notation to illustrate those changes. As a programmer myself, I’m startled to see how much of what Lovelace was doing resembles the experience of writing software today. - -So let’s take a closer look at Lovelace’s program. She designed it to calculate the Bernoulli numbers. To understand what those are, we have to go back a couple millennia to the genesis of one of mathematics’ oldest problems. - -### Sums of Powers - -The Pythagoreans lived on the shores of the Mediterranean and worshiped numbers. One of their pastimes was making triangles out of pebbles. - -![][1] - -One pebble followed by a row of two pebbles makes a triangle containing three pebbles. Add another row of three pebbles and you get a triangle containing six pebbles. You can continue like this, each time adding a row with one more pebble in it than the previous row. A triangle with six rows contains 21 pebbles. But how many pebbles does a triangle with 423 rows contain? - -What the Pythagoreans were looking for was a way to calculate the following without doing all the addition: - -They eventually realized that, if you place two triangles of the same size up against each other so that they form a rectangle, you can find the area of the rectangle and divide by two to get the number of pebbles in each of the triangles: - -![][2] - -Archimedes later explored a similar problem. He was interested in the following series: - -You might visualize this series by imagining a stack of progressively larger squares (made out of tiny cubes), one on top of the other, forming a pyramid. Archimedes wanted to know if there was an easy way to tell how many cubes would be needed to construct a pyramid with, say, 423 levels. He recorded a solution that also permits a geometrical interpretation. - -Three pyramids can be fit together to form a rectangular prism with a tiny, one-cube-high extrusion at one end. That little extrusion happens to be a triangle that obeys the same rules that the Pythagoreans used to make their pebble triangles. ([This video][3] might be a more helpful explanation of what I mean.) So the volume of the whole shape is given by the following equation: - -By substituting the Pythagorean equation for the sum of the first n integers and doing some algebra, you get this: - -In 499, the Indian mathematician and astronomer, Aryabhata, published a work known as the Aryabhatiya, which included a formula for calculating the sum of cubes: - -A formula for the sum of the first n positive integers raised to the fourth power wasn’t published for another 500 years. - -You might be wondering at this point if there is a general method for finding the sum of the first n integers raised to the kth power. Mathematicians were wondering too. Johann Faulhaber, a German mathematician and slightly kooky numerologist, was able to calculate formulas for sums of integers up to the 17th power, which he published in 1631. But this may have taken him years and he did not state a general solution. Blaise Pascal finally outlined a general method in 1665, though it depended on first knowing how to calculate the sum of integers raised to every lesser power. To calculate the sum of the first n positive integers raised to the sixth power, for example, you would first have to know how to calculate the sum of the first n positive integers raised to the fifth power. - -A more practical general solution was stated in the posthumously published work of Swiss mathematician Jakob Bernoulli, who died in 1705. Bernoulli began by deriving the formulas for calculating the sums of the first n positive integers to the first, second, and third powers. These he gave in polynomial form, so they looked like the below: - -Using Pascal’s Triangle, Bernoulli realized that these polynomials followed a predictable pattern. Essentially, Bernoulli broke the coefficients of each term down into two factors, one of which he could determine using Pascal’s Triangle and the other which he could derive from the interesting property that all the coefficients in the polynomial seemed to always add to one. Figuring out the exponent that should be attached to each term was no problem, because that also followed a predictable pattern. The factor of each coefficient that had to be calculated using the sums-to-one rule formed a sequence that became known as the Bernoulli numbers. - -Bernoulli’s discovery did not mean that it was now trivial to calculate the sum of the first positive n integers to any given power. In order to calculate the sum of the first positive n integers raised to the kth power, you would need to know every Bernoulli number up to the kth Bernoulli number. Each Bernoulli number could only be calculated if the previous Bernoulli numbers were known. But calculating a long series of Bernoulli numbers was significantly easier than deriving each sum of powers formula in turn, so Bernoulli’s discovery was a big advance for mathematics. - -### Babbage - -Charles Babbage was born in 1791, nearly a century after Bernoulli died. I’ve always had some vague idea that Babbage designed but did not build a mechanical computer. But I’ve never entirely understood how that computer was supposed to work. The basic ideas, as it happens, are not that difficult to grasp, which is good news. Lovelace’s program was designed to run on one of Babbage’s machines, so we need to take another quick detour here to talk about how those machines worked. - -Babbage designed two separate mechanical computing machines. His first machine was called the Difference Engine. Before the invention of the pocket calculator, people relied on logarithmic tables to calculate the product of large numbers. (There is a good [Numberphile video][4] on how this was done.) Large logarithmic tables are not difficult to create, at least conceptually, but the sheer number of calculations that need to be done in order to create them meant that in Babbage’s time they often contained errors. Babbage, frustrated by this, sought to create a machine that could tabulate logarithms mechanically and therefore without error. - -The Difference Engine was not a computer, because all it did was add and subtract. It took advantage of a method devised by the French mathematician Gaspard de Prony that broke the process of tabulating logarithms down into small steps. These small steps involved only addition and subtraction, meaning that a small army of people without any special mathematical aptitude or training could be employed to produce a table. De Prony’s method, known as the method of divided differences, could be used to tabulate any polynomial. Polynomials, in turn, could be used to approximate logarithmic and trigonometric functions. - -To get a sense of how this process worked, consider the following simple polynomial function: - -The method of divided differences involves finding the difference between each successive value of y for different values of x. The differences between these differences are then found, and possibly the differences between those next differences themselves, until a constant difference appears. These differences can then be used to get the next value of the polynomial simply by adding. - -Because the above polynomial is only a second-degree polynomial, we are able to find the constant difference after only two columns of differences: - -x y Diff 1 Diff 2 1 2 2 5 3 3 10 5 2 4 17 7 2 5 ? ? 2 … … … … - -Now, since we know that the constant difference is 2, we can find the value of y when x is 5 through addition only. If we add 2 to 7, the last entry in the “Diff 1” column, we get 9. If we add 9 to 17, the last entry in the y column, we get 26, our answer. - -Babbage’s Difference Engine had, for each difference column in a table like the one above, a physical column of gears. Each gear was a decimal digit and one whole column was a decimal number. The Difference Engine had eight columns of gears, so it could tabulate a polynomial up to the seventh degree. The columns were initially set with values matching an early row in the difference table, worked out ahead of time. A human operator would then turn a crank shaft, causing the constant difference to propagate through the machine as the value stored on each column was added to the next. - -Babbage was able to build a small section of the Difference Engine and use it to demonstrate his ideas at parties. But even after spending an amount of public money equal to the cost of two large warships, he never built the entire machine. Babbage could not find anyone in the early 1800s that could make the number of gears he needed with sufficient accuracy. A working Difference Engine would not be built until the 1990s, after the advent of precision machining. There is [a great video on YouTube][5] demonstrating a working Difference Engine on loan to the Computer History Museum in Mountain View, which is worth watching even just to listen to the marvelous sounds the machine makes while it runs. - -Babbage eventually lost interest in the Difference Engine when he realized that a much more powerful and flexible machine could be built. His Analytical Engine was the machine that we know today as Babbage’s mechanical computer. The Analytical Engine was based on the same columns of gears used in the Difference Engine, but whereas the Difference Engine only had eight columns, the Analytical Engine was supposed to have many hundreds more. The Analytical Engine could be programmed using punched cards like a Jacquard Loom and could multiply and divide as well as add and subtract. In order to perform one of these operations, a section of the machine called the “mill” would rearrange itself into the appropriate configuration, read the operands off of other columns used for data storage, and then write the result back to another column. - -Babbage called his new machine the Analytical Engine because it was powerful enough to do something resembling mathematical analysis. The Difference Engine could tabulate a polynomial, but the Analytical Engine would be able to calculate, for example, the coefficients of the polynomial expansion of another expression. It was an amazing machine, but the British government wisely declined to fund its construction. So Babbage went abroad to Italy to try to drum up support for his idea. - -### Notes by The Translator - -In Turin, Babbage met Italian engineer and future prime minister Luigi Menabrea. He persuaded Menabrea to write an outline of what the Analytical Engine could accomplish. In 1842, Menabrea published a paper on the topic in French. The following year, Lovelace published a translation of Menabrea’s paper into English. - -Lovelace, then known as Ada Byron, first met Babbage at a party in 1833, when she was 17 and he was 41. Lovelace was fascinated with Babbage’s Difference Engine. She could also understand how it worked, because she had been extensively tutored in mathematics throughout her childhood. Her mother, Annabella Milbanke, had decided that a solid grounding in mathematics would ward off the wild, romantic sensibility that possessed Lovelace’s father, Lord Byron, the famous poet. After meeting in 1833, Lovelace and Babbage remained a part of the same social circle and wrote to each other frequently. - -Ada Byron married William King in 1835. King later became the Earl of Lovelace, making Ada the Countess of Lovelace. Even after having three children, she continued her education in mathematics, employing Augustus de Morgan, who discovered De Morgan’s laws, as her tutor. Lovelace saw the potential of Babbage’s Analytical Machine immediately and was eager to work with him to promote the idea. A friend suggested that she translate Menabrea’s paper for an English audience. - -Menabrea’s paper gave a brief overview of how the Difference Engine worked, then showed how the Analytical Engine would be a far superior machine. The Analytical Engine would be so powerful that it could “form the product of two numbers, each containing twenty figures, in three minutes” (emphasis in the original). Menabrea gave further examples of the machine’s capabilities, demonstrating how it could solve a simple system of linear equations and expand the product of two binomial expressions. In both cases, Menabrea provided what Lovelace called “diagrams of development,” which listed the sequence of operations that would need to be performed to calculate the correct answer. These were programs in the same sense that Lovelace’s own program was a program and they were originally published the year before. But as we will see, Menabrea’s programs were only simple examples of what was possible. All of them were trivial in the sense that they did not require any kind of branching or looping. - -Lovelace appended a series of notes to her translation of Menabrea’s paper that together ran much longer than the original work. It was here that she made her major contributions to computing. In Note A, which Lovelace attached to Menabrea’s initial description of the Analytical Engine, Lovelace explained at some length and often in lyrical language the promise of a machine that could perform arbitrary mathematical operations. She foresaw that a machine like the Analytical Engine wasn’t just limited to numbers and could in fact act on any objects “whose mutual fundamental relations could be expressed by those of the abstract science of operations, and which should be also susceptible of adaptations to the action of the operating notation and mechanism of the engine.” She added that the machine might one day, for example, compose music. This insight was all the more remarkable given that Menabrea saw the Analytical Engine primarily as a tool for automating “long and arid computation,” which would free up the intellectual capacities of brilliant scientists for more advanced thinking. The miraculous foresight that Lovelace demonstrated in Note A is one major reason that she is celebrated today. - -The other famous note is Note G. Lovelace begins Note G by arguing that, despite its impressive powers, the Analytical Machine cannot really be said to “think.” This part of Note G is what Alan Turing would later refer to as “Lady Lovelace’s Objection.” Nevertheless, Lovelace continues, the machine can do extraordinary things. To illustrate its ability to handle even more complex problems, Lovelace provides her program calculating the Bernoulli numbers. - -The full program, in the expanded “diagram of development” format that Lovelace explains in Note D, can be seen [here][6]. The program is essentially a list of operations, specified using the usual mathematical symbols. It doesn’t appear that Babbage or Lovelace got as far as developing anything like a set of op codes for the Analytical Engine. - -Though Lovelace was describing a method for computing the entire sequence of Bernoulli numbers up to some limit, the program she provided only illustrated one step of that process. Her program calculated a number that she called B7, which modern mathematicians know as the eighth Bernoulli number. Her program thus sought to solve the following equation: - -In the above, each term represents a coefficient in the polynomial formula for the sum of integers to a particular power. Here that power is eight, since the eighth Bernoulli number first appears in the formula for the sum of positive integers to the eighth power. The B and A numbers represent the two kinds of factors that Bernoulli discovered. B1 through B7 are all different Bernoulli numbers, indexed according to Lovelace’s indexing. A0 through A5 represent the factors of the coefficients that Bernoulli could calculate using Pascal’s Triangle. The values of A0, A1, A3, and A5 appear below. Here n represents the index of the Bernoulli number in the sequence of odd-numbered Bernoulli numbers starting with the first. Lovelace’s program used n = 4. - -I’ve created a [translation][7] of Lovelace’s program into C, which may be easier to follow. Lovelace’s program first calculates A0 and the product B1A1. It then enters a loop that repeats twice to calculate B3A3 and B5A5, since those are formed according to an identical pattern. After each product is calculated, it is added with all the previous products, so that by the end of the program the full sum has been obtained. - -Obviously the C translation is not an exact recreation of Lovelace’s program. It declares variables on the stack, for example, whereas Lovelace’s variables were more like registers. But it makes obvious the parts of Lovelace’s program that were so prescient. The C program contains two `while` loops, one nested inside the other. Lovelace’s program did not have `while` loops exactly, but she made groups of operations and in the text of her note specified when they should repeat. The variable `v10`, in the original program and in the C translation, functions as a counter variable that decrements with each loop, a construct any programmer would be familiar with. In fact, aside from the profusion of variables with unhelpful names, the C translation of Lovelace’s program doesn’t look that alien at all. - -The other thing worth mentioning quickly is that translating Lovelace’s program into C was not that difficult, thanks to the detail present in her diagram. Unlike Menabrea’s tables, her table includes a column labeled “Indication of change in the value on any Variable,” which makes it much easier to follow the mutation of state throughout the program. She adds a superscript index here to each variable to indicate the successive values they hold. A superscript of two, for example, means that the value being used here is the second value that has been assigned to the variable since the beginning of the program. - -### The First Programmer? - -After I had translated Lovelace’s program into C, I was able to run it on my own computer. To my frustration, I kept getting the wrong result. After some debugging, I finally realized that the problem wasn’t the code that I had written. The bug was in the original! - -In her “diagram of development,” Lovelace gives the fourth operation as `v5 / v4`. But the correct ordering here is `v4 / v5`. This may well have been a typesetting error and not an error in the program that Lovelace devised. All the same, this must be the oldest bug in computing. I marveled that, for ten minutes or so, unknowingly, I had wrestled with this first ever bug. - -Jim Randall, another blogger that has [translated Lovelace’s program into Python][8], has noted this division bug and two other issues. What does it say about Ada Lovelace that her published program contains minor bugs? Perhaps it shows that she was attempting to write not just a demonstration but a real program. After all, can you really be writing anything more than toy programs if you aren’t also writing lots of bugs? - -One Wikipedia article calls Lovelace the first to publish a “complex program.” Maybe that’s the right way to think about Lovelace’ accomplishment. Menabrea published “diagrams of development” in his paper a year before Lovelace published her translation. Babbage also wrote more than twenty programs that he never published. So it’s not quite accurate to say that Lovelace wrote or published the first program, though there’s always room to quibble about what exactly constitutes a “program.” Even so, Lovelace’s program was miles ahead of anything else that had been published before. The longest program that Menabrea presented was 11 operations long and contained no loops or branches; Lovelace’s program contains 25 operations and a nested loop (and thus branching). Menabrea wrote the following toward the end of his paper: - -> When once the engine shall have been constructed, the difficulty will be reduced to the making of the cards; but as these are merely the translation of algebraic formulae, it will, by means of some simple notation, be easy to consign the execution of them to a workman. - -Neither Babbage nor Menabrea were especially interested in applying the Analytical Engine to problems beyond the immediate mathematical challenges that first drove Babbage to construct calculating machines. Lovelace saw that the Analytical Engine was capable of much more than Babbage or Menabrea could imagine. Lovelace also grasped that “the making of the cards” would not be a mere afterthought and that it could be done well or done poorly. This is hard to appreciate without understanding her program from Note G and seeing for oneself the care she put into designing it. But having done that, you might agree that Lovelace, even if she was not the very first programmer, was the first programmer to deserve the title. - -If you enjoyed this post, more like it come out every two weeks! Follow [@TwoBitHistory][9] on Twitter or subscribe to the [RSS feed][10] to make sure you know when a new post is out. - - --------------------------------------------------------------------------------- - -via: https://twobithistory.org/2018/08/18/ada-lovelace-note-g.html - -作者:[Two-Bit History][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://twobithistory.org -[b]: https://github.com/lujun9972 -[1]: https://twobithistory.org/images/triangular_numbers1.png -[2]: https://twobithistory.org/images/triangular_numbers2.png -[3]: https://www.youtube.com/watch?v=aXbT37IlyZQ -[4]: https://youtu.be/VRzH4xB0GdM -[5]: https://www.youtube.com/watch?v=BlbQsKpq3Ak -[6]: https://upload.wikimedia.org/wikipedia/commons/c/cf/Diagram_for_the_computation_of_Bernoulli_numbers.jpg -[7]: https://gist.github.com/sinclairtarget/ad18ac65d277e453da5f479d6ccfc20e -[8]: https://enigmaticcode.wordpress.com/tag/bernoulli-numbers/ -[9]: https://twitter.com/TwoBitHistory -[10]: https://twobithistory.org/feed.xml diff --git a/sources/talk/20181031 3 scary sysadmin stories.md b/sources/talk/20181031 3 scary sysadmin stories.md deleted file mode 100644 index 6810012f57..0000000000 --- a/sources/talk/20181031 3 scary sysadmin stories.md +++ /dev/null @@ -1,124 +0,0 @@ -3 scary sysadmin stories -====== - -Terrifying ghosts are hanging around every data center, just waiting to haunt the unsuspecting sysadmin. - -![](https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/spooky_halloween_haunted_house.jpg?itok=UkRBeItZ) - -> "It's all just a bunch of hocus pocus!" — Max in [Hocus Pocus][1] - -Over my many years as a system administrator, I've heard many horror stories about the different ghosts that have haunted new admins due to their inexperience. - -Here are three of the stories that stand out to me the most in helping build my character as a good sysadmin. - -### The ghost of the failed restore - -In a well-known data center (whose name I do not want to remember), one cold October night we had a production outage in which thousands of web servers stopped responding due to downtime in the main database. The database administrator asked me, the rookie sysadmin, to recover the database's last full backup and restore it to bring the service back online. - -But, at the end of the process, the database was still broken. I didn't worry, because there were other full backup files in stock. However, even after doing the process several times, the result didn't change. - -With great fear, I asked the senior sysadmin what to do to fix this behavior. - -"You remember when I showed you, a few days ago, how the full backup script was running? Something about how important it was to validate the backup?" responded the sysadmin. - -"Of course! You told me that I had to stay a couple of extra hours to perform that task," I answered. - -"Exactly! But you preferred to leave early without finishing that task," he said. - -"Oh my! I thought it was optional!" I exclaimed. - -"It was, it was…" - -**Moral of the story:** Even with the best solution that promises to make the most thorough backups, the ghost of the failed restoration can appear, darkening our job skills, if we don't make a habit of validating the backup every time. - -### The dark window - -Once upon a night watch, reflecting I was, lonely and tired, -Looking at the file window on my screen. -Clicking randomly, nearly napping, suddenly came a beeping -From some server, sounding gently, sounding on my pager. -"It's just a warning," I muttered, "sounding on my pager— -Only this and nothing more." -Soon again I heard a beeping somewhat louder than before. -Opening my pager with great disdain, -There was the message from a server of the saintly days of yore: -"The legacy application, it's down, doesn't respond," and nothing more. -There were many stories of this server, -Incredibly, almost terrified, -I went down to the data center to review it. -I sat engaged in guessing, what would be the console to restart it -Without keyboard, mouse, or monitor? -"The task level up"—I think—"only this and nothing more." -Then, thinking, "In another rack, I saw a similar server, -I'll take its monitor and keyboard, nothing bad." -Suddenly, this server shut down, and my pager beeped again: -"The legacy application, it's down, doesn't respond", and nothing more. -Bemused, I sat down to call my sysadmin mentor: -"I wanted to use the console of another server, and now both are out." -"Did you follow my advice? Don't use the graphics console, the terminal is better." -Of course, I remember, it was last December; -I felt fear, a horror that I had never felt before; -"It is a tool of the past and nothing more." -With great shame I understood my mistake: -"Master," I said, "truly, your forgiveness I implore; -but the fact is I thought it was not used anymore. -A dark window and nothing more." -"Learn it well, little kid," he spoke. -"In the terminal you can trust, it's your friend and much, much more." -Step by step, my master showed me to connect with the terminal, -And restarting each one -With infinite patience, he taught me -That from that dark window I should not separate -Never, nevermore. - -**Moral of the story:** Fluency in the command-line terminal is a skill often abandoned and considered archaic by newer generations, but it improves your flexibility and productivity as a sysadmin in obvious and subtle ways. - -### Troll bridge - -I'd been a sysadmin for three or four years when one of my old mentors was removed from work. The older man was known for making fun of the new guys in the group—the ones who brought from the university the desire to improve processes with the newly released community operating system. My manager assigned me the older man's office, a small space under the access stairs to the data center—"Troll Bridge," they called it—and the few legacy servers he still managed. - -While reviewing those legacy servers, I realized most of them had many scripts that did practically all the work. I just had to check that they did not go offline due to an electrical failure. I started using those methods, adapting them so my own servers would work the same way, making my tasks more efficient and, at the same time, requiring less of my time to complete them. My day soon became surfing the internet, watching funny videos, and even participating in internet forums. - -A couple of years went by, and I maintained my work in the same way. When a new server arrived, I automated its tasks so I could free myself and continue with my usual participation in internet forums. One day, when I shared one of my scripts in the internet forum, a new admin told me I could simplify it using one novelty language, a new trend that was becoming popular among the new folks. - -"I am a sysadmin, not a programmer," I answered. "They will never be the same." - -From that day on, I dedicated myself to ridiculing the kids who told me I should program in the new languages. - -"You do not know, newbie," I answered every time, "this job will never change." - -A few years later, my responsibilities increased, and my manager wanted me to modify the code of the applications hosted on my server. - -"That's what the job is about now," said my manager. "Development and operations are joining; if you're not willing to do it, we'll bring in some guy who does." - -"I will never do it, it's not my role," I said. - -"Well then…" he said, looking at me harshly. - -I've been here ever since. Hiding. Waiting. Under my bridge. - -I watch from the shadows as the people pass: up the stairs, muttering, or talking about the things the new applications do. Sometimes people pause beneath my bridge, to talk, or share code, or make plans. And I watch them, but they don't see me. - -I'm just going to stay here, in the darkness under the bridge. I can hear you all out there, everything you say. - -Oh yes, I can hear you. -But I'm not coming out. - -**Moral of the story:** "The lazy sysadmin is the best sysadmin" is a well-known phrase that means if we are proactive enough to automate all our processes properly, we will have a lot of free time. The best sysadmins never seem to be very busy; they prefer to be relaxed and let the system do the work for them. "Work smarter not harder." However, if we don't use this free time productively, we can fall into obsoleteness and become something we do not want. The best sysadmins reinvent themselves constantly; they are always researching and learning. - -Following these stories' morals—and continually learning from my mistakes—helped me improve my management skills and create the good habits necessary for the sysadmin job. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/18/10/3-scary-sysadmin-stories - -作者:[Alex Callejas][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/darkaxl -[b]: https://github.com/lujun9972 -[1]: https://en.wikipedia.org/wiki/Hocus_Pocus_(1993_film) diff --git a/sources/talk/20181218 The Rise and Demise of RSS.md b/sources/talk/20181218 The Rise and Demise of RSS.md deleted file mode 100644 index e260070c5c..0000000000 --- a/sources/talk/20181218 The Rise and Demise of RSS.md +++ /dev/null @@ -1,146 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (The Rise and Demise of RSS) -[#]: via: (https://twobithistory.org/2018/12/18/rss.html) -[#]: author: (Two-Bit History https://twobithistory.org) - -The Rise and Demise of RSS -====== - -This post was originally published on [September 16th, 2018][1]. What follows is a revision that includes additional information gleaned from interviews with Ramanathan Guha, Ian Davis, Dan Libby, and Kevin Werbach. - -About a decade ago, the average internet user might well have heard of RSS. Really Simple Syndication, or Rich Site Summary—what the acronym stands for depends on who you ask—is a standard that websites and podcasts can use to offer a feed of content to their users, one easily understood by lots of different computer programs. Today, though RSS continues to power many applications on the web, it has become, for most people, an obscure technology. - -The story of how this happened is really two stories. The first is a story about a broad vision for the web’s future that never quite came to fruition. The second is a story about how a collaborative effort to improve a popular standard devolved into one of the most contentious forks in the history of open-source software development. - -In the late 1990s, in the go-go years between Netscape’s IPO and the Dot-com crash, everyone could see that the web was going to be an even bigger deal than it already was, even if they didn’t know exactly how it was going to get there. One theory was that the web was about to be revolutionized by syndication. The web, originally built to enable a simple transaction between two parties—a client fetching a document from a single host server—would be broken open by new standards that could be used to repackage and redistribute entire websites through a variety of channels. Kevin Werbach, writing for Release 1.0, a newsletter influential among investors in the 1990s, predicted that syndication “would evolve into the core model for the Internet economy, allowing businesses and individuals to retain control over their online personae while enjoying the benefits of massive scale and scope.” - -He invited his readers to imagine a future in which fencing aficionados, rather than going directly to an “online sporting goods site” or “fencing equipment retailer,” could buy a new épée directly through e-commerce widgets embedded into their favorite website about fencing. Just like in the television world, where big networks syndicate their shows to smaller local stations, syndication on the web would allow businesses and publications to reach consumers through a multitude of intermediary sites. This would mean, as a corollary, that consumers would gain significant control over where and how they interacted with any given business or publication on the web. - -RSS was one of the standards that promised to deliver this syndicated future. To Werbach, RSS was “the leading example of a lightweight syndication protocol.” Another contemporaneous article called RSS the first protocol to realize the potential of XML. It was going to be a way for both users and content aggregators to create their own customized channels out of everything the web had to offer. And yet, two decades later, after the rise of social media and Google’s decision to shut down Google Reader, RSS appears to be [a slowly dying technology][2], now used chiefly by podcasters, programmers with tech blogs, and the occasional journalist. Though of course some people really do still rely on RSS readers, stubbornly adding an RSS feed to your blog, even in 2018, is a political statement. That little tangerine bubble has become a wistful symbol of defiance against a centralized web increasingly controlled by a handful of corporations, a web that hardly resembles the syndicated web of Werbach’s imagining. - -The future once looked so bright for RSS. What happened? Was its downfall inevitable, or was it precipitated by the bitter infighting that thwarted the development of a single RSS standard? - -### Muddied Water - -RSS was invented twice. This meant it never had an obvious owner, a state of affairs that spawned endless debate and acrimony. But it also suggests that RSS was an important idea whose time had come. - -In 1998, Netscape was struggling to envision a future for itself. Its flagship product, the Netscape Navigator web browser—once preferred by over 80 percent of web users—was quickly losing ground to Microsoft’s Internet Explorer. So Netscape decided to compete in a new arena. In May, a team was brought together to start work on what was known internally as “Project 60.” Two months later, Netscape announced “My Netscape,” a web portal that would fight it out with other portals like Yahoo, MSN, and Excite. - -The following year, in March, Netscape announced an addition to the My Netscape portal called the “My Netscape Network.” My Netscape users could now customize their My Netscape page so that it contained “channels” featuring the most recent headlines from sites around the web. As long as your favorite website published a special file in a format dictated by Netscape, you could add that website to your My Netscape page, typically by clicking an “Add Channel” button that participating websites were supposed to add to their interfaces. A little box containing a list of linked headlines would then appear. - -![A My Netscape Network Channel][3] A My Netscape Network channel for Mozilla.org, as it might look to users -about to add it to their My Netscape page. - -The special file that participating websites had to publish was an RSS file. In the My Netscape Network announcement, Netscape explained that RSS stood for “RDF Site Summary.” This was somewhat of a misnomer. RDF, or the Resource Description Framework, is basically a grammar for describing certain properties of arbitrary resources. (See [my article about the Semantic Web][4] if that sounds really exciting to you.) In 1999, a draft specification for RDF was being considered by the World Wide Web Consortium (W3C), the web’s main standards body. Though RSS was supposed to be based on RDF, the example RSS document Netscape actually released didn’t use any RDF tags at all. In a document that accompanied the Netscape RSS specification, Dan Libby, one of the specification’s authors, explained that “in this release of MNN, Netscape has intentionally limited the complexity of the RSS format.” The specification was given the 0.90 version number, the idea being that subsequent versions would bring RSS more in line with the W3C’s XML specification and the evolving draft of the RDF specification. - -RSS had been created by Libby and two other Netscape employees, Eckart Walther and Ramanathan Guha. According to an email to me from Guha, he and Walther cooked up RSS in the beginning with some input from Libby; after AOL bought Netscape in 1998, he and Walther left and it became Libby’s responsibility. Before Netscape, Guha had worked for Apple, where he came up with something called the Meta Content Framework. MCF was a format for representing metadata about anything from web pages to local files. Guha demonstrated its power by developing an application called [HotSauce][5] that visualized relationships between files as a network of nodes suspended in 3D space. Immediately after leaving Apple for Netscape, Guha worked with a Netscape consultant named Tim Bray, who in a post on his blog said that he and Guha eventually produced an XML-based version of MCF that in turn became the foundation for the W3C’s RDF draft. It’s no surprise, then, that Guha, Walther, and Libby were keen to build on Guha’s prior work and incorporate RDF into RSS. But Libby later wrote that the original vision for an RDF-based RSS was pared back because of time constraints and the perception that RDF was “‘too complex’ for the ‘average user.’” - -While Netscape was trying to win eyeballs in what became known as the “portal wars,” elsewhere on the web a new phenomenon known as “weblogging” was being pioneered. One of these pioneers was Dave Winer, CEO of a company called UserLand Software, which developed early content management systems that made blogging accessible to people without deep technical fluency. Winer ran his own blog, [Scripting News][6], which today is one of the oldest blogs on the internet. More than a year before Netscape announced My Netscape Network, on December 15, 1997, Winer published a post announcing that the blog would now be available in XML as well as HTML. - -Dave Winer’s XML format became known as the Scripting News format. It was supposedly similar to Microsoft’s Channel Definition Format (a “push technology” standard submitted to the W3C in March, 1997), but I haven’t been able to find a file in the original format to verify that claim. Like Netscape’s RSS, it structured the content of Winer’s blog so that it could be understood by other software applications. When Netscape released RSS 0.90, Winer and UserLand Software began to support both formats. But Winer believed that Netscape’s format was “woefully inadequate” and “missing the key thing web writers and readers need.” It could only represent a list of links, whereas the Scripting News format could represent a series of paragraphs, each containing one or more links. - -In June 1999, two months after Netscape’s My Netscape Network announcement, Winer introduced a new version of the Scripting News format, called ScriptingNews 2.0b1. Winer claimed that he decided to move ahead with his own format only after trying but failing to get anyone at Netscape to care about RSS 0.90’s deficiencies. The new version of the Scripting News format added several items to the `
` element that brought the Scripting News format to parity with RSS. But the two formats continued to differ in that the Scripting News format, which Winer nicknamed the “fat” syndication format, could include entire paragraphs and not just links. - -Netscape got around to releasing RSS 0.91 the very next month. The updated specification was a major about-face. RSS no longer stood for “RDF Site Summary”; it now stood for “Rich Site Summary.” All the RDF—and there was almost none anyway—was stripped out. Many of the Scripting News tags were incorporated. In the text of the new specification, Libby explained: - -> RDF references removed. RSS was originally conceived as a metadata format providing a summary of a website. Two things have become clear: the first is that providers want more of a syndication format than a metadata format. The structure of an RDF file is very precise and must conform to the RDF data model in order to be valid. This is not easily human-understandable and can make it difficult to create useful RDF files. The second is that few tools are available for RDF generation, validation and processing. For these reasons, we have decided to go with a standard XML approach. - -Winer was enormously pleased with RSS 0.91, calling it “even better than I thought it would be.” UserLand Software adopted it as a replacement for the existing ScriptingNews 2.0b1 format. For a while, it seemed that RSS finally had a single authoritative specification. - -### The Great Fork - -A year later, the RSS 0.91 specification had become woefully inadequate. There were all sorts of things people were trying to do with RSS that the specification did not address. There were other parts of the specification that seemed unnecessarily constraining—each RSS channel could only contain a maximum of 15 items, for example. - -By that point, RSS had been adopted by several more organizations. Other than Netscape, which seems to have lost interest after RSS 0.91, the big players were Dave Winer’s UserLand Software; O’Reilly Net, which ran an RSS aggregator called Meerkat; and Moreover.com, which also ran an RSS aggregator focused on news. Via mailing list, representatives from these organizations and others regularly discussed how to improve on RSS 0.91. But there were deep disagreements about what those improvements should look like. - -The mailing list in which most of the discussion occurred was called the Syndication mailing list. [An archive of the Syndication mailing list][7] is still available. It is an amazing historical resource. It provides a moment-by-moment account of how those deep disagreements eventually led to a political rupture of the RSS community. - -On one side of the coming rupture was Winer. Winer was impatient to evolve RSS, but he wanted to change it only in relatively conservative ways. In June, 2000, he published his own RSS 0.91 specification on the UserLand website, meant to be a starting point for further development of RSS. It made no significant changes to the 0.91 specification published by Netscape. Winer claimed in a blog post that accompanied his specification that it was only a “cleanup” documenting how RSS was actually being used in the wild, which was needed because the Netscape specification was no longer being maintained. In the same post, he argued that RSS had succeeded so far because it was simple, and that by adding namespaces (a way to explicitly distinguish between different RSS vocabularies) or RDF back to the format—some had suggested this be done in the Syndication mailing list—it “would become vastly more complex, and IMHO, at the content provider level, would buy us almost nothing for the added complexity.” In a message to the Syndication mailing list sent around the same time, Winer suggested that these issues were important enough that they might lead him to create a fork: - -> I’m still pondering how to move RSS forward. I definitely want ICE-like stuff in RSS2, publish and subscribe is at the top of my list, but I am going to fight tooth and nail for simplicity. I love optional elements. I don’t want to go down the namespaces and schema road, or try to make it a dialect of RDF. I understand other people want to do this, and therefore I guess we’re going to get a fork. I have my own opinion about where the other fork will lead, but I’ll keep those to myself for the moment at least. - -Arrayed against Winer were several other people, including Rael Dornfest of O’Reilly, Ian Davis (responsible for a search startup called Calaba), and a precocious, 14-year-old Aaron Swartz. This is the same Aaron Swartz that would later co-found Reddit and become famous for his hacktivism. (In 2000, according to an email to me from Davis, his dad often accompanied him to technology meetups.) Dornfest, Davis, and Swartz all thought that RSS needed namespaces in order to accommodate the many different things everyone wanted to do with it. On another mailing list hosted by O’Reilly, Davis proposed a namespace-based module system, writing that such a system would “make RSS as extensible as we like rather than packing in new features that over-complicate the spec.” The “namespace camp” believed that RSS would soon be used for much more than the syndication of blog posts, so namespaces, rather than being a complication, were the only way to keep RSS from becoming unmanageable as it supported more and more use cases. - -At the root of this disagreement about namespaces was a deeper disagreement about what RSS was even for. Winer had invented his Scripting News format to syndicate the posts he wrote for his blog. Netscape had released RSS as “RDF Site Summary” because it was a way of recreating a site in miniature within the My Netscape online portal. Some people felt that Netscape’s original vision should be honored. Writing to the Syndication mailing list, Davis explained his view that RSS was “originally conceived as a way of building mini sitemaps,” and that now he and others wanted to expand RSS “to encompass more types of information than simple news headlines and to cater for the new uses of RSS that have emerged over the last 12 months.” This was a sensible point to make because the goal of the Netscape RSS project in the beginning was even loftier than Davis suggests: Guha told me that he wanted to create a technology that could support not just website channels but feeds about arbitrary entities such as, for example, Madonna. Further developing RSS so that it could do this would indeed be in keeping with that original motivation. But Davis’ argument also overstates the degree to which there was a unified vision at Netscape by the time the RSS specification was published. According to Libby, who I talked to via email, there was eventually contention between a “Let’s Build the Semantic Web” group and “Let’s Make This Simple for People to Author” group even within Netscape. - -For his part, Winer argued that Netscape’s original goals were irrelevant because his Scripting News format was in fact the first RSS and it had been meant for a very different purpose. Given that the people most involved in the development of RSS disagreed about who had created RSS and why, a fork seems to have been inevitable. - -The fork happened after Dornfest announced a proposed RSS 1.0 specification and formed the RSS-DEV Working Group—which would include Davis, Swartz, and several others but not Winer—to get it ready for publication. In the proposed specification, RSS once again stood for “RDF Site Summary,” because RDF had been added back in to represent metadata properties of certain RSS elements. The specification acknowledged Winer by name, giving him credit for popularizing RSS through his “evangelism.” But it also argued that RSS could not be improved in the way that Winer was advocating. Just adding more elements to RSS without providing for extensibility with a module system would “sacrifice scalability.” The specification went on to define a module system for RSS based on XML namespaces. - -Winer felt that it was “unfair” that the RSS-DEV Working Group had arrogated the “RSS 1.0” name for themselves. In another mailing list about decentralization, he wrote that he had “recently had a standard stolen by a big name,” presumably meaning O’Reilly, which had convened the RSS-DEV Working Group. Other members of the Syndication mailing list also felt that the RSS-DEV Working Group should not have used the name “RSS” without unanimous agreement from the community on how to move RSS forward. But the Working Group stuck with the name. Dan Brickley, another member of the RSS-DEV Working Group, defended this decision by arguing that “RSS 1.0 as proposed is solidly grounded in the original RSS vision, which itself had a long heritage going back to MCF (an RDF precursor) and related specs (CDF etc).” He essentially felt that the RSS 1.0 effort had a better claim to the RSS name than Winer did, since RDF had originally been a part of RSS. The RSS-DEV Working Group published a final version of their specification in December. That same month, Winer published his own improvement to RSS 0.91, which he called RSS 0.92, on UserLand’s website. RSS 0.92 made several small optional improvements to RSS, among which was the addition of the `` tag soon used by podcasters everywhere. RSS had officially forked. - -The fork might have been avoided if a better effort had been made to include Winer in the RSS-DEV Working Group. He obviously belonged there. He was a prominent contributor to the Syndication mailing list and responsible for much of RSS’ popularity, as the members of the Working Group themselves acknowledged. But, as Davis wrote in an email to me, Winer “wanted control and wanted RSS to be his legacy so was reluctant to work with us.” Tim O’Reilly, founder and CEO of O’Reilly, explained in a UserLand discussion group in September, 2000 that Winer basically refused to participate: - -> A group of people involved in RSS got together to start thinking about its future evolution. Dave was part of the group. When the consensus of the group turned in a direction he didn’t like, Dave stopped participating, and characterized it as a plot by O’Reilly to take over RSS from him, despite the fact that Rael Dornfest of O’Reilly was only one of about a dozen authors of the proposed RSS 1.0 spec, and that many of those who were part of its development had at least as long a history with RSS as Dave had. - -To this, Winer said: - -> I met with Dale [Dougherty] two weeks before the announcement, and he didn’t say anything about it being called RSS 1.0. I spoke on the phone with Rael the Friday before it was announced, again he didn’t say that they were calling it RSS 1.0. The first I found out about it was when it was publicly announced. -> -> Let me ask you a straight question. If it turns out that the plan to call the new spec “RSS 1.0” was done in private, without any heads-up or consultation, or for a chance for the Syndication list members to agree or disagree, not just me, what are you going to do? -> -> UserLand did a lot of work to create and popularize and support RSS. We walked away from that, and let your guys have the name. That’s the top level. If I want to do any further work in Web syndication, I have to use a different name. Why and how did that happen Tim? - -I have not been able to find a discussion in the Syndication mailing list about using the RSS 1.0 name prior to the announcement of the RSS 1.0 proposal. Winer, in a message to me, said that he was not trying to control RSS and just wanted to use it in his products. - -RSS would fork again in 2003, when several developers frustrated with the bickering in the RSS community sought to create an entirely new format. These developers created Atom, a format that did away with RDF but embraced XML namespaces. Atom would eventually be specified by [a proposed IETF standard][8]. After the introduction of Atom, there were three competing versions of RSS: Winer’s RSS 0.92 (updated to RSS 2.0 in 2002 and renamed “Really Simple Syndication”), the RSS-DEV Working Group’s RSS 1.0, and Atom. - -### Decline - -The proliferation of competing RSS specifications may have hampered RSS in other ways that I’ll discuss shortly. But it did not stop RSS from becoming enormously popular during the 2000s. By 2004, the New York Times had started offering its headlines in RSS and had written an article explaining to the layperson what RSS was and how to use it. Google Reader, the RSS aggregator ultimately used by millions, was launched in 2005. By 2013, RSS seemed popular enough that the New York Times, in its obituary for Aaron Swartz, called the technology “ubiquitous.” For a while, before a third of the planet had signed up for Facebook, RSS was simply how many people stayed abreast of news on the internet. - -The New York Times published Swartz’ obituary in January 2013. By that point, though, RSS had actually turned a corner and was well on its way to becoming an obscure technology. Google Reader was shut down in July 2013, ostensibly because user numbers had been falling “over the years.” This prompted several articles from various outlets declaring that RSS was dead. But people had been declaring that RSS was dead for years, even before Google Reader’s shuttering. Steve Gillmor, writing for TechCrunch in May 2009, advised that “it’s time to get completely off RSS and switch to Twitter” because “RSS just doesn’t cut it anymore.” He pointed out that Twitter was basically a better RSS feed, since it could show you what people thought about an article in addition to the article itself. It allowed you to follow people and not just channels. Gillmor told his readers that it was time to let RSS recede into the background. He ended his article with a verse from Bob Dylan’s “Forever Young.” - -Today, RSS is not dead. But neither is it anywhere near as popular as it once was. Lots of people have offered explanations for why RSS lost its broad appeal. Perhaps the most persuasive explanation is exactly the one offered by Gillmor in 2009. Social networks, just like RSS, provide a feed featuring all the latest news on the internet. Social networks took over from RSS because they were simply better feeds. They also provide more benefits to the companies that own them. Some people have accused Google, for example, of shutting down Google Reader in order to encourage people to use Google+. Google might have been able to monetize Google+ in a way that it could never have monetized Google Reader. Marco Arment, the creator of Instapaper, wrote on his blog in 2013: - -> Google Reader is just the latest casualty of the war that Facebook started, seemingly accidentally: the battle to own everything. While Google did technically “own” Reader and could make some use of the huge amount of news and attention data flowing through it, it conflicted with their far more important Google+ strategy: they need everyone reading and sharing everything through Google+ so they can compete with Facebook for ad-targeting data, ad dollars, growth, and relevance. - -So both users and technology companies realized that they got more out of using social networks than they did out of RSS. - -Another theory is that RSS was always too geeky for regular people. Even the New York Times, which seems to have been eager to adopt RSS and promote it to its audience, complained in 2006 that RSS is a “not particularly user friendly” acronym coined by “computer geeks.” Before the RSS icon was designed in 2004, websites like the New York Times linked to their RSS feeds using little orange boxes labeled “XML,” which can only have been intimidating. The label was perfectly accurate though, because back then clicking the link would take a hapless user to a page full of XML. [This great tweet][9] captures the essence of this explanation for RSS’ demise. Regular people never felt comfortable using RSS; it hadn’t really been designed as a consumer-facing technology and involved too many hurdles; people jumped ship as soon as something better came along. - -RSS might have been able to overcome some of these limitations if it had been further developed. Maybe RSS could have been extended somehow so that friends subscribed to the same channel could syndicate their thoughts about an article to each other. Maybe browser support could have been improved. But whereas a company like Facebook was able to “move fast and break things,” the RSS developer community was stuck trying to achieve consensus. When they failed to agree on a single standard, effort that could have gone into improving RSS was instead squandered on duplicating work that had already been done. Davis told me, for example, that Atom would not have been necessary if the members of the Syndication mailing list had been able to compromise and collaborate, and “all that cleanup work could have been put into RSS to strengthen it.” So if we are asking ourselves why RSS is no longer popular, a good first-order explanation is that social networks supplanted it. If we ask ourselves why social networks were able to supplant it, then the answer may be that the people trying to make RSS succeed faced a problem much harder than, say, building Facebook. As Dornfest wrote to the Syndication mailing list at one point, “currently it’s the politics far more than the serialization that’s far from simple.” - -So today we are left with centralized silos of information. Even so, the syndicated web that Werbach foresaw in 1999 has been realized, just not in the way he thought it would be. After all, The Onion is a publication that relies on syndication through Facebook and Twitter the same way that Seinfeld relied on syndication to rake in millions after the end of its original run. I asked Werbach what he thinks about this and he more or less agrees. He told me that RSS, on one level, was clearly a failure, because it isn’t now “a technology that is really the core of the whole blogging world or content world or world of assembling different elements of things into sites.” But, on another level, “the whole social media revolution is partly about the ability to aggregate different content and resources” in a manner reminiscent of RSS and his original vision for a syndicated web. To Werbach, “it’s the legacy of RSS, even if it’s not built on RSS.” - -Unfortunately, syndication on the modern web still only happens through one of a very small number of channels, meaning that none of us “retain control over our online personae” the way that Werbach imagined we would. One reason this happened is garden-variety corporate rapaciousness—RSS, an open format, didn’t give technology companies the control over data and eyeballs that they needed to sell ads, so they did not support it. But the more mundane reason is that centralized silos are just easier to design than common standards. Consensus is difficult to achieve and it takes time, but without consensus spurned developers will go off and create competing standards. The lesson here may be that if we want to see a better, more open web, we have to get better at not screwing each other over. - -If you enjoyed this post, more like it come out every four weeks! Follow [@TwoBitHistory][10] on Twitter or subscribe to the [RSS feed][11] to make sure you know when a new post is out. - -Previously on TwoBitHistory… - -> I've long wondered if the Unix commands on my Macbook are built from the same code that they were built from 20 or 30 years ago. The answer, it turns, out, is "kinda"! -> -> My latest post, on how the implementation of cat has changed over the years: -> -> — TwoBitHistory (@TwoBitHistory) [November 12, 2018][12] - --------------------------------------------------------------------------------- - -via: https://twobithistory.org/2018/12/18/rss.html - -作者:[Two-Bit History][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://twobithistory.org -[b]: https://github.com/lujun9972 -[1]: https://twobithistory.org/2018/09/16/the-rise-and-demise-of-rss.html -[2]: https://trends.google.com/trends/explore?date=all&geo=US&q=rss -[3]: https://twobithistory.org/images/mnn-channel.gif -[4]: https://twobithistory.org/2018/05/27/semantic-web.html -[5]: http://web.archive.org/web/19970703020212/http://mcf.research.apple.com:80/hs/screen_shot.html -[6]: http://scripting.com -[7]: https://groups.yahoo.com/neo/groups/syndication/info -[8]: https://tools.ietf.org/html/rfc4287 -[9]: https://twitter.com/mgsiegler/status/311992206716203008 -[10]: https://twitter.com/TwoBitHistory -[11]: https://twobithistory.org/feed.xml -[12]: https://twitter.com/TwoBitHistory/status/1062114484209311746?ref_src=twsrc%5Etfw diff --git a/sources/talk/20190227 Let your engineers choose the license- A guide.md b/sources/talk/20190227 Let your engineers choose the license- A guide.md deleted file mode 100644 index 81a8dd8ee2..0000000000 --- a/sources/talk/20190227 Let your engineers choose the license- A guide.md +++ /dev/null @@ -1,62 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Let your engineers choose the license: A guide) -[#]: via: (https://opensource.com/article/19/2/choose-open-source-license-engineers) -[#]: author: (Jeffrey Robert Kaufman https://opensource.com/users/jkaufman) - -Let your engineers choose the license: A guide -====== -Enabling engineers to make licensing decisions is wise and efficient. -![](https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/checklist_hands_team_collaboration.png?itok=u82QepPk) - -Imagine you are working for a company that will be starting a new open source community project. Great! You have taken a positive first step to give back and enable a virtuous cycle of innovation that the open source community-based development model provides. - -But what about choosing an open source license for your project? You ask your manager for guidance, and she provides some perspective but quickly realizes that there is no formal company policy or guidelines. As any wise manager would do, she asks you to develop formal corporate guidelines for choosing an open source license for such projects. - -Simple, right? You may be surprised to learn some unexpected challenges. This article will describe some of the complexities you may encounter and some perspective based on my recent experience with a similar project at Red Hat. - -It may be useful to quickly review some of the more common forms of open source licensing. Open source licenses may be generally placed into two main buckets, copyleft and permissive. - -> Copyleft licenses, such as the GPL, allow access to source code, modifications to the source, and distribution of the source or binary versions in their original or modified forms. Copyleft additionally provides that essential software freedoms (run, study, change, and distribution) will be allowed and ensured for any recipients of that code. A copyleft license prohibits restrictions or limitations on these essential software freedoms. -> -> Permissive licenses, similar to copyleft, also generally allow access to source code, modifications to the source, and distribution of the source or binary versions in their original or modified forms. However, unlike copyleft licenses, additional restrictions may be included with these forms of licenses, including proprietary limitations such as prohibiting the creation of modified works or further distribution. - -Red Hat is one of the leading open source development companies, with thousands of open source developers continuously working upstream and contributing to an assortment of open source projects. When I joined Red Hat, I was very familiar with its flagship Red Hat Enterprise Linux offering, often referred to as RHEL. Although I fully expected that the company contributes under a wide assortment of licenses based on project requirements, I thought our preference and top recommendation for our engineers would be GPLv2 due to our significant involvement with Linux. In addition, GPL is a copyleft license, and copyleft ensures that the essential software freedoms (run, study, change, distribute) will be extended to any recipients of that code. What could be better for sustaining the open source ecosystem than a copyleft license? - -Fast forwarding on my journey to craft internal license choice guidelines for Red Hat, the end result was to not have any license preference at all. Instead, we delegate that responsibility, to the maximum extent possible, to our engineers. Why? Because each open source project and community is unique and there are social aspects to these communities that may have preferences towards various licensing philosophies (e.g., copyleft or permissive). Engineers working in those communities understand all these issues and are best equipped to choose the proper license on this knowledge. Mandating certain licenses for code contributions often will conflict with these community norms and result in reduction or prohibition in contributed content. - -For example, perhaps your organization believes that the latest GPL license (GPLv3) is the best for your company due to its updated provisions. If you mandated GPLv3 for all future contributions vs. GPLv2, you would be prohibited from contributing code to the Linux kernel, since that is a GPLv2 project and will likely remain that way for a very long time. Your engineers, being part of that open source community project, would know that and would automatically choose GPLv2 in the absence of such a mandate. - -Bottom line: Enabling engineers to make these decisions is wise and efficient. - -To the extent your organization may have to restrict the use of certain licenses (e.g., due to certain intellectual property concerns), this should naturally be part of your guidelines or policy. I believe it is much better to delegate to the maximum extent possible to those that understand all the nuances, politics, and licensing philosophies of these varied communities and restrict license choice only when absolutely necessary. Even having a preference for a certain license over another can be problematic. Open source engineers may have deeply rooted feelings about copyleft (either for or against), and forcing one license over the other (unless absolutely necessary for business reasons) may result in creating ill-will and ostracizing an engineer or engineering department within your organization - -In summary, Red Hat's guidelines are very simple and are summarized below: - - 1. We suggest choosing an open source license from a set of 10 different licenses that are very common and meet the needs of most new open source projects. - - 2. We allow the use of other licenses but we ask that a reason is provided to the open source legal team so we can collect and better understand some of the new and perhaps evolving needs of the open source communities that we serve. (As stated above, our engineers are on the front lines and are best equipped to deliver this type of information.) - - 3. The open source legal team always has the right to override a decision, but this would be very rare and only would occur if we were aware of some community or legal concern regarding a specific license or project. - - 4. Publishing source code without a license is never permitted. - -In summary, the advantages of these guidelines are enormous. They are very efficient and lead to a very low-friction development and approval system within our organization. - - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/19/2/choose-open-source-license-engineers - -作者:[Jeffrey Robert Kaufman][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/jkaufman -[b]: https://github.com/lujun9972 diff --git a/sources/talk/20190228 A Brief History of FOSS Practices.md b/sources/talk/20190228 A Brief History of FOSS Practices.md deleted file mode 100644 index 58e90a8efa..0000000000 --- a/sources/talk/20190228 A Brief History of FOSS Practices.md +++ /dev/null @@ -1,113 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (A Brief History of FOSS Practices) -[#]: via: (https://itsfoss.com/history-of-foss) -[#]: author: (Avimanyu Bandyopadhyay https://itsfoss.com/author/avimanyu/) - -A Brief History of FOSS Practices -====== - -We focus a great deal about Linux and Free & Open Source Software at It’s FOSS. Ever wondered how old such FOSS Practices are? How did this Practice come by? What is the History behind this revolutionary concept? - -In this history and trivia article, let’s take a look back in time through this brief write-up and note some interesting initiatives in the past that have grown so huge today. - -### Origins of FOSS - -![History of FOSS][1] - -The origins of FOSS goes back to the 1950s. When hardware was purchased, there used to be no additional charges for bundled software and the source code would also be available in order to fix possible bugs in the software. - -It was actually a common Practice back then for users with the freedom to customize the code. - -At that time, mostly academicians and researchers in the industry were the collaborators to develop such software. - -The term Open Source was not there yet. Instead, the term that was popular at that time was “Public Domain Software”. As of today, ideologically, both are very much [different][2] in nature even though they may sound similar. - - - -Back in 1955, some users of the [IBM 701][3] computer system from Los Angeles, voluntarily founded a group called SHARE. The “SHARE Program Library Agency” (SPLA) distributed information and software through magnetic tapes. - -Technical information shared, was about programming languages, operating systems, database systems, and user experiences for enterprise users of small, medium, and large-scale IBM computers. - -The initiative that is now more than 60 years old, continues to follow its goals quite actively. SHARE has its upcoming event coming up as [SHARE Phoenix 2019][4]. You can download and check out their complete timeline [here][5]. - -### The GNU Project - -Announced at MIT on September 27, 1983, by Richard Stallman, the GNU Project is what immensely empowers and supports the Free Software Community today. - -### Free Software Foundation - -The “Free Software Movement” by Richard Stallman established a new norm for developing Free Software. - -He founded The Free Software Foundation (FSF) on 4th October 1985 to support the free software movement. Software that ensures that the end users have freedom in using, studying, sharing and modifying that software came to be called as Free Software. - -**Free as in Free Speech, Not Free Beer** - - - -The Free Software Movement laid the following rules to establish the distinctiveness of the idea: - - * The freedom to run the program as you wish, for any purpose (freedom 0). - * The freedom to study how the program works, and change it so it does your computing as you wish (freedom 1). Access to the source code is a precondition for this. - * The freedom to redistribute copies so you can help your neighbor (freedom 2). - * The freedom to distribute copies of your modified versions to others (freedom 3). By doing this you can give the whole community a chance to benefit from your changes. Access to the source code is a precondition for this. - -### The Linux Kernel - - - -How can we miss this section at It’s FOSS! The Linux kernel was released as freely modifiable source code in 1991 by Linus Torvalds. At first, it was neither Free Software nor used an Open-source software license. In February 1992, Linux was relicensed under the GPL. - -### The Linux Foundation - -The Linux Foundation has a goal to empower open source projects to accelerate technology development and commercial adoption. It is an initiative that was taken in 2000 via the [Open Source Development Labs][6] (OSDL) which later merged with the [Free Standards Group][7]. - -Linus Torvalds works at The Linux Foundation who provide complete support to him so that he can work full-time on improving Linux. - -### Open Source - -When the source code of [Netscape][8] Communicator was released in 1998, the label “Open Source” was adopted by a group of individuals at a strategy session held on February 3rd, 1998 in Palo Alto, California. The idea grew from a visionary realization that the [Netscape announcement][9] had changed the way people looked at commercial software. - -This opened up a whole new world, creating a new perspective that revealed the superiority and advantage of an open development process that could be powered by collaboration. - -[Christine Peterson][10] was the one among that group of individuals who originally suggested the term “Open Source” as we perceive today (mentioned [earlier][11]). - -### Evolution of Business Models - -The concept of Open Source is a huge phenomenon right now and there are several companies that continue to adopt the Open Source Approach to this day. [As of April 2015, 78% of companies used Open Source Software][12] with different [Open Source Licenses][13]. - -Several organisations have adopted [different business models][14] for Open Source. Red Hat and Mozilla are two good examples. - -So this was a brief recap of some interesting facts from FOSS History. Do let us know your thoughts if you want to share in the comments below. - - --------------------------------------------------------------------------------- - -via: https://itsfoss.com/history-of-foss - -作者:[Avimanyu Bandyopadhyay][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://itsfoss.com/author/avimanyu/ -[b]: https://github.com/lujun9972 -[1]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2019/02/history-of-foss.png?resize=800%2C450&ssl=1 -[2]: https://opensource.org/node/878 -[3]: https://en.wikipedia.org/wiki/IBM_701 -[4]: https://event.share.org/home -[5]: https://www.share.org/d/do/11532 -[6]: https://en.wikipedia.org/wiki/Open_Source_Development_Labs -[7]: https://en.wikipedia.org/wiki/Free_Standards_Group -[8]: https://en.wikipedia.org/wiki/Netscape -[9]: https://web.archive.org/web/20021001071727/http://wp.netscape.com:80/newsref/pr/newsrelease558.html -[10]: https://en.wikipedia.org/wiki/Christine_Peterson -[11]: https://itsfoss.com/nanotechnology-open-science-ai/ -[12]: https://www.zdnet.com/article/its-an-open-source-world-78-percent-of-companies-run-open-source-software/ -[13]: https://itsfoss.com/open-source-licenses-explained/ -[14]: https://opensource.com/article/17/12/open-source-business-models diff --git a/sources/talk/20190808 Scrum vs. kanban- Which agile methodology is better.md b/sources/talk/20190808 Scrum vs. kanban- Which agile methodology is better.md deleted file mode 100644 index 8b2b38ef3c..0000000000 --- a/sources/talk/20190808 Scrum vs. kanban- Which agile methodology is better.md +++ /dev/null @@ -1,95 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Scrum vs. kanban: Which agile methodology is better?) -[#]: via: (https://opensource.com/article/19/8/scrum-vs-kanban) -[#]: author: (Taz Brown https://opensource.com/users/heronthecli) - -Scrum vs. kanban: Which agile methodology is better? -====== -Learn the differences between scrum and kanban and which may be best for -your team. -![Team checklist and to dos][1] - -Because scrum and kanban both fall under the agile methodology umbrella, many people confuse them or think they're the same thing. There are differences, however. For one, scrum is more specific to software development teams, while kanban is used by many kinds of teams and focuses on providing a visual representation of an agile team's workflow. Some argue that kanban is about getting things done, and scrum is about talking about getting things done. - -### A history lesson - -Before we get too deep into scrum and kanban, let's talk a little history. Before scrum, kanban, and agile, there was the waterfall model. It was popular in the '80s and '90s, especially in civil and mechanical engineering where changes were rare and design often stayed the same. It was adopted for software development, but it didn't translate well into that arena, with results rarely as anyone expected or desired. - -In 2001, the [Agile Manifesto][2] emerged as an alternative to overcome the problems with waterfall. The Manifesto outlined agile principles and beliefs including shorter lead times, open communication, lighter processes, continuous training, and adaptation to change. These principles took on a life of their own when it came to software development practices and teams. In cases of irregularities, bugs, or dissatisfied customers, agile enabled development teams to make changes quickly, and software was released faster with much higher quality. - -### What is agile? - -An agile framework (or just agile) is an umbrella term for several iterative and incremental software development approaches such as kanban and scrum. Kanban and scrum are also considered to be agile frameworks on their own. As [Mendix explains][3]: - -> "While each agile methodology type has its own unique qualities, they all incorporate elements of iterative development and continuous feedback when creating an application. Any agile development project involves continuous planning, continuous testing, continuous integration, and other forms of continuous development of both the project and the application resulting from the agile framework." - -### What is kanban? - -[Kanban][4] is the Japanese word for "visual signal." It is also an agile framework or work management system and is considered to be a powerful project management tool. - -A kanban board (such as [Wekan][5], an open source kanban application) is a visual method for managing the creation of products through a series of fixed steps. It emphasizes continuous flow and is designed as a list of stages displayed in columns on a board. There is a waiting or backlog stage at the start of the kanban board, and there may be some progress stages, such as testing, development, completed, or abandoned. - -![Wekan kanban board][6] - -Each task or part of a project is represented on a card, and the cards are moved across this board as they progress across the stages. A card's current stage must be completed before it can be moved to the next stage. - -Other features of kanban include color-coding (to identify different stages or types of tasks visually) and Work in Progress ([WIP][7]) limits (to restrict the maximum number of work items allowed in the different stages of the workflow). - -Wekan is [similar to Trello][8] (a proprietary kanban application). It's one of [a variety][9] of digital kanban tools. Teams can also use the traditional kanban approach: a wall, a board, or a large piece of paper with different colored sticky notes for various tasks. Whatever method you use, the idea is to apply agile effectively, efficiently, and continuously. - -Overall, kanban and Wekan offer a simple, graphical way of monitoring progress, sharing responsibility, and mitigating bottlenecks. It is a team effort to ensure that the final product is created with high quality and to the customers' satisfaction. - -### What is scrum? - -[Scrum][10] typically involves daily standups and sprints with sprint planning, sprint reviews, and retrospectives. It establishes specific release days and where cards can move across the board. There are daily scrums and two- to four-week sprints (putting code into production) with the goal to create a shippable product after every sprint. - -![team_meeting_at_board.png][11] - -Daily stand-up meetings allow team members to share progress. (Photo credit: Andrea Truong) - -  - -Scrum teams are usually comprised of a scrum master, a product owner, and the development team. All must operate in synchronicity to produce high-quality software products in a fast, efficient, cost-effective way that pleases the customer. - -### Which is better: scrum or kanban? - -With all that as background, the important question we are left with is: Which agile methodology is superior, kanban, or scrum? Well, it depends. It is certainly not a straightforward or easy choice, and neither method is inherently superior. The type of team and the project's scope or requirements influence which is likely to be the better choice. - -Software development teams typically use scrum because it has been found to be highly useful in the software lifecycle process. - -Kanban can be used by all kinds of teams—IT, marketing, HR, transformation, manufacturing, healthcare, finance, etc. Its core values are continuous workflow, continuous feedback, continuous change, and stir vigorously until you achieve the desired quality and consistency or create a shippable product. The team works from the backlog until all tasks are completed. Usually, members will pick tasks based on their specialized knowledge or area of expertise, but the team must be careful not to reduce its effectiveness with too much specialization. - -### Conclusion - -There is a place for both scrum and kanban agile frameworks, and their utility is determined by the makeup of the team, the product or service to be delivered, the requirements or scope of the project, and the organizational culture. There will be trial and error, especially for new teams. - -Scrum and kanban are both iterative work systems that rely on process flows and aim to reduce waste. No matter which framework your team chooses, you will be a winner. Both methodologies are valuable now and likely will be for some time to come. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/19/8/scrum-vs-kanban - -作者:[Taz Brown][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/heronthecli -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/todo_checklist_team_metrics_report.png?itok=oB5uQbzf (Team checklist and to dos) -[2]: https://www.scrumalliance.org/resources/agile-manifesto -[3]: https://www.mendix.com/agile-framework/ -[4]: https://en.wikipedia.org/wiki/Kanban -[5]: https://wekan.github.io/ -[6]: https://opensource.com/sites/default/files/uploads/wekan-board.png (Wekan kanban board) -[7]: https://www.atlassian.com/agile/kanban/wip-limits -[8]: https://opensource.com/article/19/1/productivity-tool-wekan -[9]: https://opensource.com/alternatives/trello -[10]: https://en.wikipedia.org/wiki/Scrum_(software_development) -[11]: https://opensource.com/sites/default/files/uploads/team_meeting_at_board.png (team_meeting_at_board.png) diff --git a/sources/talk/20190831 Why support open source- Strategies from around the world.md b/sources/talk/20190831 Why support open source- Strategies from around the world.md deleted file mode 100644 index 9b142b5c9c..0000000000 --- a/sources/talk/20190831 Why support open source- Strategies from around the world.md +++ /dev/null @@ -1,57 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Why support open source? Strategies from around the world) -[#]: via: (https://opensource.com/article/19/8/open-source-large-series) -[#]: author: (Karl Fogel https://opensource.com/users/kfogelhttps://opensource.com/users/jamesvasile) - -Why support open source? Strategies from around the world -====== -A new series on open source strategy digs into using open source -investments to support the overall mission. -![World locations with red dots with a sun burst background][1] - -There are many excellent resources available to teach you how to run an open source project—how to set up the collaboration tools, how to get the community engaged, etc. But there is much less out there about open source _strategy_; that is, about how to use well-considered open source investments to support an overall mission. - -Thus, while "How can we integrate new contributors?" is a project management concern, the strategic question it grows from has wider implications: "What are the long-term returns we expect from engaging with others, who are those others, and how do we structure our investments to achieve those returns?" - -As we work with different clients, we've been gradually publishing reports that approach open source strategy from various directions. Two examples are our work with Mozilla on [open source archetypes][2] and with the World Bank on its [investment strategy for the GeoNode project][3]. - -Now we have a chance to have this discussion in a more regular and complete way: Microsoft has asked us to do a series of blog posts about open source, and the request was essentially _"help organizations get better at open source"_ (not a direct quote, but a reasonable summary). They were very clear about the series being independent; they did not want editorial control and specifically did not want to be involved in any pre-approval before we publish a post. It goes without saying, but we'll say it anyway, just so there's no doubt, that the views we express in the series may or may not be shared by Microsoft. - -We're calling the series [Open Source At Large][4], and it focuses on open source strategy. The first three posts in the series are already up: - - * [What is open source strategy?][5] - * [Open source goal setting][6] - * [Ecosystem mapping][7] - - - -Our clients will recognize some of the material—our advice tends to be consistent over time—but the series will also cover ideas we have not discussed widely before. - -Strategy is not just for executives and managers, by the way. We can most effectively support strategies we understand, and every person on a team can use strategic awareness to improve performance. Our target audience is the managers and organization leaders who make decisions about open source investments and also developers who can benefit from a strategic viewpoint. - -We hope that offering techniques for strategic analysis will be useful for newcomers to open source, and we also look forward to engaging colleagues in a wide-ranging discussion about best practices and considered approaches to strategy. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/19/8/open-source-large-series - -作者:[Karl Fogel][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/kfogelhttps://opensource.com/users/jamesvasile -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/world_remote_teams.png?itok=Wk1yBFv6 (World locations with red dots with a sun burst background) -[2]: https://blog.opentechstrategies.com/2018/05/field-guide-to-open-source-project-archetypes/ -[3]: https://blog.opentechstrategies.com/2017/06/geonode-report/ -[4]: https://blog.opentechstrategies.com/category/open-source-at-large/ -[5]: https://blog.opentechstrategies.com/2019/05/what-is-open-source-strategy/ -[6]: https://blog.opentechstrategies.com/2019/05/open-source-goal-setting/ -[7]: https://blog.opentechstrategies.com/2019/06/ecosystem-mapping/ diff --git a/sources/talk/20190903 IoT security essentials- Physical, network, software.md b/sources/talk/20190903 IoT security essentials- Physical, network, software.md deleted file mode 100644 index 8264591faf..0000000000 --- a/sources/talk/20190903 IoT security essentials- Physical, network, software.md +++ /dev/null @@ -1,64 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (IoT security essentials: Physical, network, software) -[#]: via: (https://www.networkworld.com/article/3435108/iot-security-essentials-physical-network-software.html) -[#]: author: (Jon Gold https://www.networkworld.com/author/Jon-Gold/) - -IoT security essentials: Physical, network, software -====== -Internet of things devices present unique security problems due to being spread out, exposed to physical attacks and often lacking processor power. -Thinkstock - -Even in the planning stages of a deployment, IoT security is one of the chief stumbling blocks to successful adoption of the technology. - -And while the problem is vastly complicated, there are three key angles to think about when laying out how IoT sensors will be deployed in any given setup: How secure are the device themselves, how many are there and can they receive security patches. - -### Physical access - -Physical access is an important but, generally, straightforward consideration for traditional IT security. Data centers can be carefully secured, and routers and switches are often located in places where they’re either difficult to fiddle with discreetly or difficult to access in the first place. - -Where IoT is concerned, however, best security practices aren’t as fleshed out. Some types of IoT implementation could be relatively simple to secure – a bad actor could find it comparatively difficult to tinker with a piece of complex diagnostic equipment in a well-secured hospital, or a big piece of sophisticated robotic manufacturing equipment on an access-controlled factory floor. Compromises can happen, certainly, but a bad actor trying to get into a secure area is still a well-understood security threat. - -By contrast, smart city equipment scattered across a metropolis – traffic cameras, smart parking meters, noise sensors and the like – is readily accessible by the general public, to say nothing of anybody able to look convincing in a hard hat and hazard vest. The same issue applies to soil sensors in rural areas and any other technology deployed to a sufficiently remote location. - -The solutions to this problem vary. Cases and enclosures could deter some attackers, but they might not be practical in some instances. The same goes for video surveillance of the devices, which could become a target itself. The IoT Security Foundation recommends disabling all ports on a device that aren’t strictly necessary for it perform its function, implementing tamper-proofing on circuit boards, and even embedding those circuits entirely in resin. - -### Discovery and networking - -Securing the connections between IoT sensors and the backend is arguably the toughest part to solve, in part because an alarming number of organizations aren’t even aware of all the devices on their network at any given time. Hence, device discovery remains a critically important part of network security for IoT. - -**[ [Prepare to become a Certified Information Security Systems Professional with this comprehensive online course from PluralSight. Now offering a 10-day free trial!][1] ]** - -The main reason for this lack of visibility is that the nature of IoT as an operational technology, rather than one that’s solely administered by IT staff, means that line-of-business personnel will sometimes connect helpful devices to the network without telling the people in charge of keeping the network secure. For network **operations** people, used to having a clear sense of the entire network’s topology, this can be an unaccustomed headache. - -Beyond IT personnel working closely with the operational side of the business to ensure all devices connected to the network are properly provisioned and monitored, network scanners can discover connected devices on a network automatically, whether that’s via network traffic analysis, device profiles, whitelists or other techniques. - -### Software patching - -Many IoT sensors don’t have a lot of built-in computing capability, so some of those devices aren’t able to run a security-software agent nor accept updates and patches remotely. - -That is a huge worry, because there are software vulnerabilities being discovered every day that target the IoT. An inability to patch those holes when they’re discovered is a serious problem. - -Moreover, certain devices simply won’t be able to be properly secured and made patchable. The only solution might be to find a different product that accomplishes the functional task yet has better security. - -Join the Network World communities on [Facebook][2] and [LinkedIn][3] to comment on topics that are top of mind. - --------------------------------------------------------------------------------- - -via: https://www.networkworld.com/article/3435108/iot-security-essentials-physical-network-software.html - -作者:[Jon Gold][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://www.networkworld.com/author/Jon-Gold/ -[b]: https://github.com/lujun9972 -[1]: https://pluralsight.pxf.io/c/321564/424552/7490?u=https%3A%2F%2Fwww.pluralsight.com%2Fpaths%2Fcertified-information-systems-security-professional-cisspr -[2]: https://www.facebook.com/NetworkWorld/ -[3]: https://www.linkedin.com/company/network-world diff --git a/sources/talk/20191001 The monumental impact of C.md b/sources/talk/20191001 The monumental impact of C.md deleted file mode 100644 index 7ab59a6574..0000000000 --- a/sources/talk/20191001 The monumental impact of C.md +++ /dev/null @@ -1,143 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (The monumental impact of C) -[#]: via: (https://opensource.com/article/19/10/command-line-heroes-c) -[#]: author: (Matthew Broberg https://opensource.com/users/mbbroberg) - -The monumental impact of C -====== -The season finale of Command Line Heroes offers a lesson in how a small -community of open source enthusiasts can change the world. -![In the finale of Command Line Heroes, we learn about the significant impact of C][1] - -C is the original general-purpose programming language. The Season 3 finale of the [Command Line Heroes][2] podcast explores C's origin story in a way that showcases the longevity and power of its design. It's a perfect synthesis of all the languages discussed throughout the podcast's third season and this [series of articles][3]. - -![The original C programming guide by two of the language authors, circa 1978][4] - -C is such a fundamental language that many of us forget how much it has changed. Technically a "high-level language," in the sense that it requires a compiler to be runnable, it's as close to assembly language as people like to get these days (outside of specialized, low-memory environments). It's also considered to be the language that made nearly all languages that came after it possible. - -### The path to C began with failure - -While the myth persists that all great inventions come from highly competitive garage dwellers, C's story is more fit for the Renaissance period. - -In the 1960s, Bell Labs in suburban New Jersey was one of the most innovative places of its time. Jon Gertner, author of [_The idea factory_][5], describes the culture of the time marked by optimism and the excitement to solve tough problems. Instead of monetization pressures with tight timelines, Bell Labs offered seemingly endless funding for wild ideas. It had a research and development ethos that aligns well with today's [open leadership principles][6]. The results were significant and prove that brilliance can come without the promise of VC funding or an IPO. - -The challenge back then was terminal sharing: finding a way for lots of people to access the (very limited number of) available computers. Before there was a scalable answer for that, and long before we had [a shell like Bash][7], there was the Multics project. It was a hypothetical operating system where hundreds or even thousands of developers could share time on the same system. This was a dream of John McCarty, creator of Lisp and the term artificial intelligence (AI), as I [recently explored][8]. - -Joy Lisi Ranken, author of [_A people's history of computing in the United States_][9], describes what happened next. There was a lot of public interest in driving forward with Multics' vision of more universally available timesharing. Academics, scientists, educators, and some in the broader public were looking forward to this computer-powered future. Many advocated for computing as a public utility, akin to electricity, and the push toward timesharing was a global movement. - -Up to that point, high-end mainframes topped out at 40-50 terminals per system. The change of scale was ambitious and eventually failed, as Warren Toomey writes in [IEEE Spectrum][10]: - -> "Over five years, AT&T invested millions in the Multics project, purchasing a GE-645 mainframe computer and dedicating to the effort many of the top researchers at the company's renowned Bell Telephone Laboratories—including Thompson and Ritchie, Joseph F. Ossanna, Stuart Feldman, M. Douglas McIlroy, and the late Robert Morris. But the new system was too ambitious, and it fell troublingly behind schedule. In the end, AT&T's corporate leaders decided to pull the plug." - -Bell Labs pulled out of the Multics program in 1969. Multics wasn't going to happen. - -### The fellowship of the C - -Funding wrapped up, and the powerful GE645 mainframe was assigned to other tasks inside Bell Labs. But that didn't discourage everyone. - -Among the last holdouts from the Multics project were four men who felt passionately tied to the project: Ken Thompson, Dennis Ritchie, Doug McIlroy, and J.F. Ossanna. These four diehards continued to muse and scribble ideas on paper. Thompson and Ritchie developed a game called Space Travel for the PDP-7 minicomputer. While they were working on that, Thompson started implementing all those crazy hand-written ideas about filesystems they'd developed among the wreckage of Multics. - -![A PDP-7 minicomputer][11] - -A PDP-7 minicomputer was not top of line technology at the time, but the team implemented foundational technologies that change the future of programming languages and operating systems alike. - -That's worth emphasizing: Some of the original filesystem specifications were written by hand and then programmed on what was effectively a toy compared to the systems they were using to build Multics. [Wikipedia's Ken Thompson page][12] dives deeper into what came next: - -> "While writing Multics, Thompson created the Bon programming language. He also created a video game called [Space Travel][13]. Later, Bell Labs withdrew from the MULTICS project. In order to go on playing the game, Thompson found an old [PDP-7][14] machine and rewrote Space Travel on it. Eventually, the tools developed by Thompson became the [Unix][15] [operating system][16]: Working on a PDP-7, a team of Bell Labs researchers led by Thompson and Ritchie, and including Rudd Canaday, developed a [hierarchical file system][17], the concepts of [computer processes][18] and [device files][19], a [command-line interpreter][20], [pipes][21] for easy inter-process communication, and some small utility programs. In 1970, [Brian Kernighan][22] suggested the name 'Unix,' in a pun on the name 'Multics.' After initial work on Unix, Thompson decided that Unix needed a system programming language and created [B][23], a precursor to Ritchie's [C][24]." - -As Walter Toomey documented in the IEEE Spectrum article mentioned above, Unix showed promise in a way the Multics project never materialized. After winning over the team and doing a lot more programming, the pathway to Unix was paved. - -### Getting from B to C in Unix - -Thompson quickly created a Unix language he called B. B inherited much from its predecessor BCPL, but it wasn't enough of a breakaway from older languages. B didn't know data types, for starters. It's considered a typeless language, which meant its "Hello World" program looked like this: - - -``` -main( ) { -extrn a, b, c; -putchar(a); putchar(b); putchar(c); putchar('!*n'); -} - -a 'hell'; -b 'o, w'; -c 'orld'; -``` - -Even if you're not a programmer, it's clear that carving up strings four characters at a time would be limiting. It's also worth noting that this text is considered the original "Hello World" from Brian Kernighan's 1972 book, [_A tutorial introduction to the language B_][25] (although that claim is not definitive). - -[![A diagram showing the key Unix and Unix-like operating systems][26]][27] - -Typelessness aside, B's assembly-language counterparts were still yielding programs faster than was possible using the B compiler's threaded-code technique. So, from 1971 to 1973, Ritchie modified B. He added a "character type" and built a new compiler so that it didn't have to use threaded code anymore. After two years of work, B had become C. - -### The right abstraction at the right time - -C's use of types and ease of compiling down to efficient assembly code made it the perfect language for the rise of minicomputers, which speak in bytecode. B was eventually overtaken by C. Once C became the language of Unix, it became the de facto standard across the budding computer industry. Unix was _the_ sharing platform of the pre-internet days. The more people wrote C, the better it got, and the more it was adopted. It eventually became an open standard itself. According to the [Brief history of C programming language][28]: - -> "For many years, the de facto standard for C was the version supplied with the Unix operating system. In the summer of 1983 a committee was established to create an ANSI (American National Standards Institute) standard that would define the C language. The standardization process took six years (much longer than anyone reasonably expected)." - -How influential is C today? A [quick review][29] reveals: - - * Parts of all major operating systems are written in C, including macOS, Windows, Linux, and Android. - * The world's most prolific databases, including DB2, MySQL, MS SQL, and PostgreSQL, are written in C. - * Many programming-language specifics begun in C, including Python, Go, Perl's core interpreter, and the R statistical language. - - - -Decades after they started as scrappy outsiders, Thompson and Ritchie are praised as titans of the programming world. They shared 1983's Turing Award, and in 1998, received the [National Medal of Science][30] for their work on the C language and Unix.  - -![Ritchie and Thompson receiving the National Medal of Technology from President Clinton, 1998][31] - -But Doug McIlroy and J.F. Ossanna deserve their share of praise, too. All four of them are true Command Line Heroes. - -### Wrapping up the season - -[Command Line Heroes][2] has completed an entire season of insights into the programming languages that affect how we code today. It's been a joy to learn about these languages and share them with you. I hope you've enjoyed it as well! - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/19/10/command-line-heroes-c - -作者:[Matthew Broberg][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/mbbroberg -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/commnad_line_hereos_ep8_header_opensourcedotcom.png?itok=d7MJQHFJ (In the finale of Command Line Heroes, we learn about the significant impact of C) -[2]: https://www.redhat.com/en/command-line-heroes -[3]: https://opensource.com/tags/command-line-heroes-podcast -[4]: https://opensource.com/sites/default/files/uploads/2482009942_6caea217e0_c.jpg (The original C programming guide by two of the language authors, circa 1978) -[5]: https://en.wikipedia.org/wiki/The_Idea_Factory -[6]: https://opensource.com/open-organization/18/12/what-is-open-leadership -[7]: https://opensource.com/19/9/command-line-heroes-bash -[8]: https://opensource.com/article/19/9/command-line-heroes-lisp -[9]: https://www.hup.harvard.edu/catalog.php?isbn=9780674970977 -[10]: https://spectrum.ieee.org/tech-history/cyberspace/the-strange-birth-and-long-life-of-unix -[11]: https://opensource.com/sites/default/files/uploads/800px-pdp7-oslo-2005.jpeg (A PDP-7 minicomputer) -[12]: https://en.wikipedia.org/wiki/Ken_Thompson -[13]: https://en.wikipedia.org/wiki/Space_Travel_(video_game) -[14]: https://en.wikipedia.org/wiki/PDP-7 -[15]: https://en.wikipedia.org/wiki/Unix -[16]: https://en.wikipedia.org/wiki/Operating_system -[17]: https://en.wikipedia.org/wiki/File_system#Aspects_of_file_systems -[18]: https://en.wikipedia.org/wiki/Process_(computing) -[19]: https://en.wikipedia.org/wiki/Device_file -[20]: https://en.wikipedia.org/wiki/Command-line_interface#Command-line_interpreter -[21]: https://en.wikipedia.org/wiki/Pipeline_(Unix) -[22]: https://en.wikipedia.org/wiki/Brian_Kernighan -[23]: https://en.wikipedia.org/wiki/B_(programming_language) -[24]: https://en.wikipedia.org/wiki/C_(programming_language) -[25]: https://www.bell-labs.com/usr/dmr/www/btut.pdf -[26]: https://opensource.com/sites/default/files/uploads/640px-unix_history-simple.svg_.png (A diagram showing the key Unix and Unix-like operating systems) -[27]: https://commons.wikimedia.org/w/index.php?curid=1801948 -[28]: http://cs-fundamentals.com/c-programming/history-of-c-programming-language.php -[29]: https://www.toptal.com/c/after-all-these-years-the-world-is-still-powered-by-c-programming -[30]: https://www.nsf.gov/od/nms/medal.jsp -[31]: https://opensource.com/sites/default/files/uploads/medal.jpeg (Ritchie and Thompson receiving the National Medal of Technology from President Clinton, 1998) diff --git a/sources/talk/20191003 Sharing vs. free vs. public- The real definition of open source.md b/sources/talk/20191003 Sharing vs. free vs. public- The real definition of open source.md deleted file mode 100644 index 31b4851639..0000000000 --- a/sources/talk/20191003 Sharing vs. free vs. public- The real definition of open source.md +++ /dev/null @@ -1,85 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Sharing vs. free vs. public: The real definition of open source) -[#]: via: (https://opensource.com/article/19/10/shareware-vs-open-source) -[#]: author: (Jeffrey Robert Kaufman https://opensource.com/users/jkaufman) - -Sharing vs. free vs. public: The real definition of open source -====== -If you think open source is synonymous with shareware, freeware, and -public domain, you are not alone. -![Person in a field of dandelions][1] - -When you hear the term open source, do you think this is synonymous with terms such as shareware, freeware, or public domain? If so, you are not alone. Many people, both within and without the technology industry, think of these terms as one and the same. This article illustrates how these terms are different and how open source is a transformative licensing and development model. Perhaps the best way to explore the differences will be to share my experience with software provided under one of the above models. - -### Shareware and freeware - -My early years as a computer programmer started when I began to code in BASIC on my Apple II Plus in 1982. I recall going to the local computer store in my hometown and finding floppy diskettes in plastic bags containing software games and utilities for what seemed to be extraordinarily high prices. Keep in mind, this was from the perspective of a middle-schooler. - -There was, however, some software that was available for free or at a minimal price; this was referred to as shareware or freeware, depending on the exact licensing model. Under the shareware model, you could use the software for only a certain amount of time, and/or if you found it useful, then there was a request that you send in a check to the author of that software. - -Some shareware software, however, actually encouraged you to also make a copy and give it to your friends. This model is often referred to as freeware. That said, the exact definitions and differences between shareware and freeware are a bit soft, so it's collectively easiest to refer to both simply as "shareware." I cannot say for certain, but I doubt I ever provided money to any of the software authors for using their shareware, mainly because I had no money as an early teenager, but I sure enjoyed using these software programs and learned a lot about computers along the way. - -In retrospect, I realize now that I could have learned and accomplished so much more in my growth as a budding programmer if the software had been provided under open source license terms instead of shareware terms. This is because the source code (i.e., the human-readable form of software) is almost never provided with shareware. Shareware also contains licensing restrictions that prohibit the recipient from attempting to reveal the source code. Without access to the source code, it is extraordinarily difficult to learn how the software actually works, making it very difficult to expand or change its functionality. This leaves the end user completely dependent on the original shareware author for any changes or improvements. - -With the shareware model, it is practically impossible to enable any community of developers to leverage and further innovate around the code. There can also be further restrictions on redistribution and commercial usage. Although the shareware may be free in terms of price (at least initially), _it is not free in terms of freedom_ and does not allow you to learn and innovate by exploring the inner workings of the code. - -Which leads me to the big question: _How is this different from open source software?_ - -### The basics of open source licensing - -First, we need to understand that "open source" refers to a _licensing_ and a _software development model_ that are both significantly different than shareware. Under one form of open source called non-copyleft open source licensing, the user is provided key freedoms such as no restrictions on accessing source code; selling, using, or giving away the software for any purpose; or modifying the software. - -This form of license also does not require payment of any fee or royalty for use. One amazing outcome of this licensing model is its unique ability to enable countless software developers to collaborate on new and useful changes and innovations to the code because the license is highly permissive, requiring no negotiations for use. Although the source code is technically not required to be provided under such a license, it is almost always available for everyone to view, learn from, modify, and distribute to others. - -Another aspect of non-copyleft open source licensing is that any recipient of such software may add additional license restrictions. This means that the initial author that licensed the code under this form of license has no assurances that the recipient may not further license to others under more restrictive terms. For example: - -> _Let us assume an author, Noah, wrote some software and distributed it under a non-copyleft open source license to a recipient, Aviva. Aviva then modifies and improves Noah's software, which she is entitled to do under the non-copyleft open source license terms. Aviva could then decide to add further restrictions to any recipients of her software that could limit its use, such as where or how it may be used (e.g., Aviva could add in a restriction that the software may only be used within the geographical boundaries of California and never in any nuclear power plant). Aviva could also opt to never release the modified source code to others even though she had access to the source code._ - -Sadly, there are countless proprietary software companies that use non-copyleft open source licensed software in the way described immediately above. In fact, a shareware program could use non-copyleft open source licensed software by adding shareware-type restrictions (e.g., no access to source code or excluding commercial use) thereby converting non-copyleft open source licensed code to a shareware licensing model. - -Fortunately, many proprietary companies using non-copyleft open source licensed software see the benefits of releasing source code. These organizations often continue to perpetuate the open source model by providing their modified source code to their recipients or the broader open source community via software repositories like GitHub to enable a virtuous cycle of innovation. This isn't entirely out of benevolence (or at least it normally isn't): These companies want to encourage community innovation and further enhancements, which can benefit them further. - -At the same time, many proprietary companies do not opt to do this, which is well within the terms of non-copyleft open source licenses. - -### Copyleft-licensed open source software - -In 1989, a new open source license named the GNU General Public License, also known commonly as the GPL license, was developed with the objective to ensure that software should be inherently free (as in free speech) and that that these freedoms must always persist, unlike what sometimes happens with non-copyleft open source licensed software. In a unique application of copyright law, the GPL uses copyright law to ensure perpetual software freedoms, so long as the rules are followed (more on that later). This unique use of copyright is called copy**left**. - -Like non-copyleft open source software, this license allows recipients to use the software without restriction, examine the source code, change the software, and make further distributions of the original or modified software to other recipients. _Unlike_ a non-copyleft open source license, the copyleft open source license absolutely requires that any recipients are also provided these same freedoms. They can never be taken away unless the rules are not followed. - -What makes the copyleft open source license enforceable and an incentive for compliance is the application of copyright law. If one of the recipients of copyleft code does not comply with the license terms (e.g., by adding any additional restrictions on the use of the software or not providing the source code), then their license terminates, and they become a copyright infringer because they no longer have legal permission to use the software. In this way, the software freedoms are ensured for any downstream recipients of that copyleft software. - -### Beyond the basics: Other software license models - -I mentioned public domain earlier—while it's commonly conflated with open source, this model is a bit different. Public domain means that steps have been taken to see that there are no applicable copyright rights associated with the software, which most often happens when the software copyright expires or is disclaimed by the author. (In many countries, the mechanism to disclaim copyright is unclear, which is why some public domain software may provide an option to obtain an open source-type license as a fallback.) No license is required to use public domain software; whether this makes it "open source" or not is the subject of much debate, though many would consider public domain a form of open source if the source code were made available. - -Interestingly, there are a significant number of open source projects that make use of small modules of public domain software for certain functions. There are even entire programs that claim to be in the public domain, such as SQLite, which implements a SQL database engine and is used in many applications and devices. It is also common to see software with no license terms. - -Many people incorrectly assume that such unlicensed software is open source, in the public domain, or otherwise free to use without restriction. In most countries, including the United States, copyright in software exists when it is created. This means that it cannot be used without permission in the form of a license, unless the copyright is somehow disclaimed, rendering it in the public domain. Some exceptions exist to this general rule, like the laws of implied licenses or fair use, but these are quite complex in how they may apply to a specific situation. I do not recommend providing software with no license terms when the intention is for it to be under open source license terms as this leads to confusion and potential misuse. - -### Benefits of open source software - -As I said previously, open source enables an efficient software development model with enormous ability to drive innovation. But what does this really mean? - -One of the benefits of the open source licensing model is a significant reduction in the friction around innovation, especially innovation done by other users beyond the original creator. This friction is limited because using open source code generally does not require the negotiation of license terms, thereby greatly simplifying and lowering any cost burden for use. In turn, this creates a type of open source ecosystem that encourages rapid modification and combination of existing technologies to form something new. These changes are often provided back into this open source ecosystem, creating a cycle of innovation. - -There is an innumerable number of software programs that run everything from your toaster to Mars-going spacecraft that are the direct result of this effortless ability to combine various programs together… all enabled by the open source development model. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/19/10/shareware-vs-open-source - -作者:[Jeffrey Robert Kaufman][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/jkaufman -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/OSDC_dandelion_520x292.png?itok=-xhFQvUj (Person in a field of dandelions) diff --git a/sources/talk/20191009 Why to choose Rust as your next programming language.md b/sources/talk/20191009 Why to choose Rust as your next programming language.md deleted file mode 100644 index d8cad5c342..0000000000 --- a/sources/talk/20191009 Why to choose Rust as your next programming language.md +++ /dev/null @@ -1,112 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Why to choose Rust as your next programming language) -[#]: via: (https://opensource.com/article/19/10/choose-rust-programming-language) -[#]: author: (Ryan Levick https://opensource.com/users/ryanlevick) - -Why to choose Rust as your next programming language -====== -Selecting a programming language can be complicated, but some -enterprises are finding that switching to Rust is a relatively easy -decision. -![Programming books on a shelf][1] - -Choosing a programming language for a project is often a complicated decision, particularly when it involves switching from one language to another. For many programmers, it is not only a technical exercise but also a deeply emotional one. The lack of known or measurable criteria for picking a language often means the choice digresses into a series of emotional appeals. - -I've been involved in many discussions about choosing a programming language, and they usually conclude in one of two ways: either the decision is made using measurable, yet unimportant criteria while ignoring relevant, yet hard to measure criteria; or it is made using anecdotes and emotional appeals. - -There has been one language selection process that I've been a part of that has gone—at least so far—rather smoothly: the growing [consideration inside Microsoft][2] for using [Rust][3]. - -This article will explore several issues related to choosing a programming language in general and Rust in particular. They are: What are the criteria usually used for selecting a programming language, especially in large businesses, and why does this process rarely end successfully? Why has the consideration of Rust in Microsoft gone smoothly so far, and are there some general best practices that can be gleaned from it? - -### Criteria for choosing a language - -There are many criteria for deciding whether to switch to a new programming language. In general, the criteria that are most easily measured are the ones that are most often talked about, even if they are less important than other, more difficult-to-measure criteria. - -#### Technical criteria - -The first group of criteria are the technical considerations; they are often the first that come to mind because they are the easiest to measure. - -Interestingly, the technical costs (e.g., build system integration, monitoring, tooling, support libraries, and more) are often easier to measure than the technical benefits. This is especially detrimental to the adoption of new programming languages, as the downsides of adoption are often the clearest part of the picture. - -While some technical benefits (like performance) can be measured relatively easily, others are much harder to measure. For example, what are the relative merits of a dynamic typing system (like in Python) to a relatively verbose and feature-poor system (like Java), and how does this change when compared to stronger typed systems like Scala or Haskell? Many people have strong gut feelings that such technical differences should be taken very seriously in language considerations, but they are no good ways to measure them. - -A side effect of the discrepancy in measurement ease is that the easiest-to-measure items are often given the most weight in the decision-making process even if that would not be the case with perfect information. This not only throws off the cost/benefit analysis but also the process of assigning importance to different costs and benefits. - -#### Organizational criteria - -Organizational criteria, which are the second consideration, include: - - * How easy will it be to hire developers in this language? - * How easy is it to enforce programming standards? - * How quickly, on average, will developers be able to deliver software? - - - -Costs and benefits of organizational criteria are hard to measure. People usually have vague, "gut feeling" answers to them, which create strong opinions on the matter. Unfortunately, however, it's often very difficult to measure these criteria. For example, it might be obvious to most that TypeScript allows programmers to deliver functioning, relatively bug-free software to customers more quickly than C does, but where is the data to back this up? - -Moreover, it's often extremely difficult to assign importance weights to these criteria. It's easy to see that Go enforces standardized coding practices more easily than Scala (due to the wide use of gofmt), but it is extremely difficult to measure the concrete benefits to a company from standardizing codebases. - -These criteria are still extremely important but, because of the difficulty in measuring them, they are often either ignored or reasoned about through anecdotes. - -#### Emotional criteria - -Third are the emotional criteria, which tend to be overlooked if not outright dismissed. - -Software programming has traditionally tried to emulate more true "engineering" practices, where technical considerations are generally the most important. Some would argue that programming languages are "just tools" and should be measured only against technical criteria. Others would argue that programming languages assist the programmer in some of the more artistic aspects of the job. These criteria are extremely difficult to measure in any meaningful way. - -In general, this comes down to how happy (and thus productive) programmers feel using this language. Such considerations can have a real impact on programmers, but how this translates to benefitting to an entire team is next to impossible to measure. - -Because of the difficulty of quantifying these criteria, this is often ignored. But does this mean that emotional considerations of programming languages have no significant impact on programmers or programming organizations? - -#### Unknown criteria - -Finally, there's a set of criteria that are often overlooked because a new programming language is usually judged by the criteria set by the language currently in use. New languages may have capabilities that have no equivalent in other languages, so many people will not be familiar with them. Having no exposure to those capabilities may mean the evaluator unknowingly ignores or downplays them. - -These criteria can be technical (e.g., the merits of Kotlin data classes over Java constructs), organizational (e.g., how helpful Elm error messages are for teaching those new to the language), or emotional (e.g., the way Ruby makes the programmer feel when writing it). - -Because these aspects are hard to measure, and someone completely unfamiliar with them has no existing framework for judging them based on experience, intuition, or anecdote, they are often undervalued versus more well-understood criteria—if not outright ignored. - -### Why Rust? - -This brings us back to the growing excitement for Rust in Microsoft. I believe the discussions around Rust adoption have gone relatively smoothly so far because Rust offers an extremely clear and compelling advantage—not only over the language it seeks to replace (C++)—but also over any other language practically available to industry: great performance, a high level of control, and being memory safe. - -Microsoft's decision to investigate Rust (and other languages) began due to the fact that roughly [70% of Common Vulnerabilities and Exposures][4] (CVEs) in Microsoft products were related to memory safety issues in C and C++. When it was discovered that most of the affected codebases could not be effectively rewritten in C# because of performance concerns, the search began. Rust was viewed as the only possible candidate to replace C++. It was similar enough that not everything had to be reworked, but it has a differentiator that makes it measurably better than the current alternative: being able to eliminate nearly 70% of Microsoft's most serious security vulnerabilities. - -There are other reasons beyond memory safety, performance, and control that make Rust appealing (e.g., strong type safety guarantees, being an extremely loved language, etc.) but as expected, they were hard to talk about because they were hard to measure. In general, most people involved in the selection process were more interested in verifying that these other aspects of the language weren't perceivably worse than C++ but, because measuring these aspects was so difficult, they weren't considered active reasons to adopt the language. - -However, the Microsoft teams that had already adopted Rust, like for the [IoT Edge Security Daemon][5], touted other aspects of the language (particularly "correctness" due to the advanced type system) as the reasons they were most keen on investing more in the language. These teams couldn't provide reliable measurements for these criteria, but they had clearly developed an intuition that this aspect of the language was extremely important. - -With Rust at Microsoft, the main criteria being judged happened to be an easily measurable one. But what happens when an organization's most important issues are hard to measure? These issues are no less important just because they are currently difficult to measure. - -### What now? - -Having clearly measurable criteria is important when adopting a new programming language, but this does not mean that hard-to-measure criteria aren't real and shouldn't be taken seriously. We simply lack the tools to evaluate new languages holistically. - -There has been some research into this question, but it has not yet produced anything that has been widely adopted by industry. While the case for Rust was relatively clear inside Microsoft, this doesn't mean new languages should be adopted only where there is one clear, technical reason to do so. We should become better at evaluating more aspects of programming languages beyond just the traditional ones (such as performance). - -The path to Rust adoption is just beginning at Microsoft, and having just one reason to justify investment in Rust is definitely not ideal. While we're beginning to form collective, anecdotal evidence to justify Rust adoption further, there is definitely a need to quantify this understanding better and be able to talk about it in more objective terms. - -We're still not quite sure how to do this, but stay tuned for more as we go down this path. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/19/10/choose-rust-programming-language - -作者:[Ryan Levick][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/ryanlevick -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/books_programming_languages.jpg?itok=KJcdnXM2 (Programming books on a shelf) -[2]: https://msrc-blog.microsoft.com/tag/rust -[3]: https://www.rust-lang.org/ -[4]: https://github.com/microsoft/MSRC-Security-Research/blob/master/presentations/2019_02_BlueHatIL/2019_01%20-%20BlueHatIL%20-%20Trends%2C%20challenge%2C%20and%20shifts%20in%20software%20vulnerability%20mitigation.pdf -[5]: https://msrc-blog.microsoft.com/2019/09/30/building-the-azure-iot-edge-security-daemon-in-rust/ diff --git a/sources/talk/20191011 Everything you need to know about Grace Hopper in six books.md b/sources/talk/20191011 Everything you need to know about Grace Hopper in six books.md deleted file mode 100644 index 4c077a80c1..0000000000 --- a/sources/talk/20191011 Everything you need to know about Grace Hopper in six books.md +++ /dev/null @@ -1,65 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Everything you need to know about Grace Hopper in six books) -[#]: via: (https://opensource.com/article/19/10/grace-hopper-books) -[#]: author: (Joshua Allen Holm https://opensource.com/users/holmja) - -Everything you need to know about Grace Hopper in six books -====== -A reading list for people of all ages about the legendary Queen of Code. -![Book list, favorites][1] - -Grace Hopper is one of those iconic figures that really needs no introduction. During her long career in the United States Navy, she was a key figure in the early days of modern computing. If you have been involved in open source or technology in general, chances are you have already heard several anecdotes about Grace Hopper. The story of finding [the first computer bug][2], perhaps? Or maybe you have heard some of her nicknames: Queen of Code, Amazing Grace, or Grandma COBOL? - -While computing has certainly changed from the days of punch cards, Grace Hopper's legacy lives on. She was posthumously awarded a Presidential Medal of Freedom, the Navy named a warship after her, and the [Grace Hopper Celebration][3] is an annual conference with an emphasis on topics that are relevant to women in computing. Suffice it to say, Grace Hopper's name is going to live on for a very long time. - -Grace Hopper had a career anyone should be proud of, and she accomplished many great things. Like many historical figures who have accomplished great things, sometimes the anecdotes about her contributions start to drift towards the realm of tall tales, which does Grace Hopper a disservice. Her real accomplishments are already legendary, and there is no reason to try to turn her into the computer science version of [John Henry][4] or [Paul Bunyan][5]. - -To that end, here are six books that explore the life and legacy of Grace Hopper. No tall tales, just story after story of Grace Hopper, a woman who changed the world. - -## - -[broad_band_150.jpg][6] - -![Broad Band book cover][7] - -Broad Band: The Untold Story of the Women Who Made the Internet - -### by Claire L. Evans - -In [_Broad Band: The Untold Story of the Women Who Made the Internet_][8], Claire L. Evans explores the lives of several women whose contributions to technology helped to shape the internet. Starting with Ada Lovelace and moving towards modern times with Grace Hopper and others, Evans weaves an interesting narrative that highlights the roles various women played in early computing. While only part of the book focuses on Grace Hopper, the overarching narrative of Evans's work does an excellent job of showcasing Hopper's place in computing history. - -## - -[grace_hopper_admiral_of_the_cyber_sea_150.jpg][9] - -![Grace Hopper: Admiral of the Cyber Sea cover][10] - -I sat down with Leslie Hawthorn , Community Manager at Red Hat, and chatted with her about the 2012... - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/19/10/grace-hopper-books - -作者:[Joshua Allen Holm][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/holmja -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/reading_book_stars_list.png?itok=Iwa1oBOl (Book list, favorites) -[2]: https://www.computerhistory.org/tdih/september/9/ -[3]: https://ghc.anitab.org/ -[4]: https://en.wikipedia.org/wiki/John_Henry_(folklore) -[5]: https://en.wikipedia.org/wiki/Paul_Bunyan -[6]: https://opensource.com/file/453331 -[7]: https://opensource.com/sites/default/files/uploads/broad_band_150.jpg (Broad Band book cover) -[8]: https://clairelevans.com/ -[9]: https://opensource.com/file/453336 -[10]: https://opensource.com/sites/default/files/uploads/grace_hopper_admiral_of_the_cyber_sea_150.jpg (Grace Hopper: Admiral of the Cyber Sea cover) diff --git a/sources/talk/20191017 Measuring the business value of open source communities.md b/sources/talk/20191017 Measuring the business value of open source communities.md deleted file mode 100644 index d270340f91..0000000000 --- a/sources/talk/20191017 Measuring the business value of open source communities.md +++ /dev/null @@ -1,117 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Measuring the business value of open source communities) -[#]: via: (https://opensource.com/article/19/10/measuring-business-value-open-source) -[#]: author: (Jon Lawrence https://opensource.com/users/the3rdlaw) - -Measuring the business value of open source communities -====== -Corporate constituencies are interested in finding out the business -value of open source communities. Find out how to answer key questions -with the right metrics. -![Lots of people in a crowd.][1] - -In _[Measuring the health of open source communities][2]_, I covered some of the key questions and metrics that we’ve explored as part of the [CHAOSS project][3] as they relate to project founders, maintainers, and contributors. In this article, we focus on open source corporate constituents (such as open source program offices, business risk and legal teams, human resources, and others) and end users. - -Where the bulk of the metrics for core project teams are quantitative, for the remaining constituents our metrics must reflect a much broader range of interests, and address many more qualitative measures. From the metrics collection standpoint, much of the data collection for qualitative measures is much more manual and subjective, but it is nonetheless within the scope CHAOSS hopes to be able to address as the project matures. - -While people on the business side of things do sometimes care about the metrics in use by the project itself, there are only two fundamental questions that corporate constituencies have. The first is about _value_: "Will this choice help our business make more money sooner?" The second is about _risk_: "Will this choice hurt our business’s chances of making money?" - -Those questions can come in many different iterations across disciplines, from human resources to legal counsel and executive offices. But, at the end of the day, having answers that are based on data can make open source engagement more efficient, effective, and less risky. - -Once again, the information below is structured in a Goal-Question-Metric format: - - * Open source program offices (OSPOs) - * As an OSPO leader, I care about prioritizing our resources toward healthy communities: - * How [active][4] is the community? -**Metric:** [Code development][5] \- The number of commits and pull requests, review time for new code commits and pull requests, code reviews and merges, the number of accepted vs. rejected pull requests, and the frequency of new version releases. -**Metric:** [Issue resolution][6] \- The number of new issues, closed issues, the ratio of new vs. closed issues, and the average open time per issue. -**Metric:** Social - Social media mention counts, social media sentiment analysis, the activity of community blog, and news releases (_future release_). - * What is the [value][7] of our contributions to the project? (This is an area in active development.) -**Metric:** Time value - Time saved for training developers on new technologies, and time saved maintaining custom development once the improvements are upstreamed. -**Metric:** Dollar value - How much would it have cost to maintain changes and custom solutions internally, versus contributing upstream and ensuring compatibility with future community releases - * What is the value of contributions to the project by other contributors and organizations? -**Metric:** Time value - Time to market, new community-developed features released, and support for the project by the community versus the company. -**Metric:** Dollar value - How much would it cost to internally rebuild the features provided by the community, and what is the opportunity cost of lagging behind innovations in open source projects? - * Downstream value: How many other projects list our project as a dependency? -**Metric:** The value of the ecosystem that is around a project. - * How many forks of our project have there been? -**Metric:** Are core developers more active in the mainline or a fork? -**Metric:** Are the forks contributing back to the mainline, or developing in new directions? - * Engineering leadership - * As an approving architect, I care most about good design patterns that introduce a minimum of technical debt. -**Metric:** [Test Coverage][8] \- What percentage of the code is tested? -**Metric:** What is the percentage of code undergoing code reviews? -**Metric:** Does the project follow [Core][9] [Infrastructure][9] [Initiative (CII) Best Practices][9]? - * As an engineering executive, I care most about minimizing time-to-market and bugs, and maximizing platform stability and reliability. -**Metric:** The defect resolution velocity. -**Metric:** The defect density. -**Metric:** The feature development velocity. - * I also want social proofs that give me a level of comfort. -**Metric:** Sentiment analysis of social media related to the project. -**Metric:** Count of white papers. -**Metric:** Code Stability - Project version numbers and the frequency of new releases. - - - -There is also the issue of legal counsel. This goal statement is: "As legal counsel, I care most about minimizing our company’s chances of getting sued." The question is: "What kind of license does the software have, and what obligations do we have under the license?" - -The metrics involved here are: - - * **Metric:** [License Count][10] \- How many different licenses are declared in a given project? - * **Metric:** [License Declaration][11] \- What kinds of licenses are declared in a given project? - * **Metric:** [License Coverage][12] \- How much of a given codebase is covered by the declared license? - - - -Lastly, there are further goals our project is considering to measure the impact of corporate open source policy as it relates to talent acquisition and retention. The goal for human resource managers is: "As an HR manager, I want to attract and retain the best talent I can." The questions and metrics are as follows: - - * What impact do our open source policies have on talent acquisition? -**Metric:** Talent acquisition - Measure over time how many candidates report that it’s important to them that they get to work with open source technologies. - * What impact do our open source policies have on talent retention? -**Metric:** Talent retention - Measure how much employee churn can be reduced because of people being able to work with or use open source technologies. - * What is the impact on training employees who can learn from engaging in open source projects? -**Metric:** Talent development - Measure over time the importance to employees of being able to use open source tech effectively. - * How does allowing employees to work in a community outside of the company impact job satisfaction? -**Metric:** Talent satisfaction - Measure over time the importance to employees of being able to contribute to open source tech. -**Source:** Internal surveys. -**Source:** Exit interviews. Did our policies around open source technologies at all influence your decision to leave? - - - -### Wrapping up - -It is still the early days of building a platform for bringing together these disparate data sources. The CHAOSS core of [Augur][13] and [GrimoireLab][14] currently supports over two dozen sources, and I’m excited to see what lies ahead for this project. - -As the CHAOSS frameworks mature, I’m optimistic that teams and projects that implement these types of measurement will be able to make better real-world decisions that result in healthier and more productive software development lifecycles. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/19/10/measuring-business-value-open-source - -作者:[Jon Lawrence][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/the3rdlaw -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/BUSINESS_community_1.png?itok=rT7EdN2m (Lots of people in a crowd.) -[2]: https://opensource.com/article/19/8/measure-project -[3]: https://github.com/chaoss/ -[4]: https://github.com/chaoss/wg-evolution/blob/master/focus_areas/community_growth.md -[5]: https://github.com/chaoss/wg-evolution#metrics -[6]: https://github.com/chaoss/wg-evolution/blob/master/focus_areas/issue_resolution.md -[7]: https://github.com/chaoss/wg-value -[8]: https://chaoss.community/metric-test-coverage/ -[9]: https://github.com/coreinfrastructure/best-practices-badge -[10]: https://github.com/chaoss/wg-risk/blob/master/metrics/License_Count.md -[11]: https://github.com/chaoss/wg-risk/blob/master/metrics/License_Declared.md -[12]: https://github.com/chaoss/wg-risk/blob/master/metrics/License_Coverage.md -[13]: https://github.com/chaoss/augur -[14]: https://github.com/chaoss/grimoirelab diff --git a/sources/talk/20191029 5 reasons why I love Python.md b/sources/talk/20191029 5 reasons why I love Python.md deleted file mode 100644 index 5df5be960e..0000000000 --- a/sources/talk/20191029 5 reasons why I love Python.md +++ /dev/null @@ -1,168 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (5 reasons why I love Python) -[#]: via: (https://opensource.com/article/19/10/why-love-python) -[#]: author: (Moshe Zadka https://opensource.com/users/moshez) - -5 reasons why I love Python -====== -These are a few of my favorite things about Python. -![Snake charmer cartoon with a yellow snake and a blue snake][1] - -I have been using Python since it was a little-known language in 1998. It was a time when [Perl was quite popular][2] in the open source world, but I believed in Python from the moment I found it. My parents like to remind me that I used to say things like, "Python is going to be a big deal" and "I'll be able to find a job using it one day."** **It took a while, but my predictions came true. - -There is so much to love about the language. Here are my top 5 reasons why I continue to love Python so much (in reverse order, to build anticipation). - -### 5\. Python reads like executable pseudocode - -Pseudocode is the concept of writing out programming logic without it following the exact syntax and grammar of a specific language. I have stopped writing much pseudocode since becoming a Python programmer because its actual design meets my needs. - -Python can be easy to read even if you don't know the language well and that is very much by design. It is reasonably famous for whitespace requirements for code to be able to run. Whitespace is necessary for any language–it allows us to see each of the words in this sentence as distinct. Most languages have suggestions or  "best practices" around whitespace usage, but Python takes a bold step by requiring standardization. For me, that makes it incredibly straightforward to read through code and see exactly what it's doing. - -For example, here is an implementation of the classic [bubble sort algorithm][3]. - - -``` -def bubble_sort(things): - -    needs_pass = True - -    while needs_pass: - -        needs_pass = False - -        for idx in range(1, len(things)): - -            if things[idx - 1] > things[idx]: - -                things[idx - 1], things[idx] = things[idx], things[idx - 1] - -                needs_pass = True -``` - -Now let's compare that with [this implementation][4] in Java. - - -``` -public static int[] bubblesort(int[] numbers) { -    boolean swapped = true; -    for(int i = numbers.length - 1; i > 0 && swapped; i--) { -        swapped = false; -        for (int j = 0; j < i; j++) { -            if (numbers[j] > numbers[j+1]) { -                int temp = numbers[j]; -                numbers[j] = numbers[j+1]; -                numbers[j+1] = temp; -                swapped = true; -            } -        } -    } -    return numbers; -} -``` - -I appreciate that Python requires indentation to indicate nesting of blocks. While our Java example also uses indentation quite nicely, it is not required. The curly brackets are what determine the beginning and end of the block, not the spacing. Since Python uses whitespace as syntax, there is no need for beginning **{** and end **}** notation throughout the other code.  - -Python also avoids the need for semicolons, which is a [syntactic sugar][5] needed to make other languages human-readable. Python is much easier to read on my eyes and it feels so close to pseudocode it sometimes surprises me what is runnable! - -### 4\. Python has powerful primitives - -In programming language design, a primitive is the simplest available element. The fact that Python is easy to read does _not_ mean it is not a powerful language, and that stems from its use of primitives. My favorite example of what makes Python both easy to use and advanced is its concept of **generators**.  - -Imagine you have a simple binary tree structure with `value`, `left`, and `right`. You want to easily iterate over it in order. You usually are looking for "small" elements, in order to exit as soon as the right value is found. That sounds simple so far. However, there are many kinds of algorithms to make a decision on the element. - -Other languages would have you write a **visitor**, where you invert control by putting your "is this the right element?" in a function and call it via function pointers. You _can_ do this in Python. But you don't have to. - - -``` -def in_order(tree): - -    if tree is None: - -        return - -    yield from in_order(tree.left) - -    yield tree.value - -    yield from in_order(tree.right) -``` - -This _generator function_ will return an iterator that, if used in a **for** loop, will only execute as much as needed but no more. That's powerful. - -### 3\. The Python standard library - -Python has a great standard library with many hidden gems I did not know about until I took the time to [walk through the list of all available][6] functions, constants, types, and much more. One of my personal favorites is the `itertools` module, which is listed under the functional programming modules (yes, [Python supports functional programming][7]!). - -It is great for playing jokes on your tech interviewer, for example with this nifty little solution to the classic [FizzBuzz interview question][8]: - - -``` -fizz = itertools.cycle(itertools.chain(['Fizz'], itertools.repeat('', 2))) - -buzz = itertools.cycle(itertools.chain(['Buzz'], itertools.repeat('', 4))) - -fizz_buzz = map(operator.add, fizz, buzz) - -numbers = itertools.islice(itertools.count(), 100) - -combo = zip(fizz_buzz, numbers) - -for fzbz, n in combo: - -    print(fzbz or n) -``` - -A quick web search will show that this is not the most straight-forward way to solve for FizzBuzz, but it sure is fun! - -Beyond jokes, the `itertools` module, as well as the `heapq` and `functools` modules are a trove of treasures that come by default in your Python implementation. - -### 2\. The Python ecosystem is massive - -For everything that is not in the standard library, there is an enormous ecosystem to support the new Pythonista, from exciting packages to text editor plugins specifically for the language. With around 200,000 projects hosted on PyPi (at the time of writing) and growing, there is something for everyone: [data science][9], [async frameworks][10], [web frameworks][11], or just tools to make [remote automation][12] easier. - -### 1\. The Python community is special - -The Python community is amazing. It was one of the first to adopt a code of conduct, first for the [Python Software Foundation][13] and then for [PyCon][14]. There is a real commitment to diversity and inclusion: blog posts and conference talks on this theme are frequent, thoughtful, and well-read by Python community members. - -While the community is global, there is a lot of great activity in the local community as well. Local Python meet-ups are a great place to meet wonderful people who are smart, experienced, and eager to help. A lot of meet-ups will explicitly have time set aside for experienced people to help newcomers who want to learn a new concept or to get past an issue with their code. My local community took the time to support me as I began my Python journey, and I am privileged to continue to give back to new developers. - -Whether you can attend a local community meet-up or you spend time with the [online Python community][15] across IRC, Slack, and Twitter, I am sure you will meet lovely people who want to help you succeed as a developer.  - -### Wrapping it up - -There is so much to love about Python, and now you know my favorite part is definitely the people. - -I have found kind, thoughtful Pythonistas in the community throughout the world, and the amount of community investment provide to those in need is incredibly encouraging. In addition to those I've met, the simple, clean, and powerful Python language gives any developer more than enough to master on their journey toward a career in software development or as a hobbyist enjoying playing around with a fun language. If you are interested in learning your first or a new language, consider Python and let me know how I can help. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/19/10/why-love-python - -作者:[Moshe Zadka][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/moshez -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/getting_started_with_python.png?itok=MFEKm3gl (Snake charmer cartoon with a yellow snake and a blue snake) -[2]: https://opensource.com/article/19/8/command-line-heroes-perl -[3]: https://en.wikipedia.org/wiki/Bubble_sort -[4]: https://en.wikibooks.org/wiki/Algorithm_Implementation/Sorting/Bubble_sort#Java -[5]: https://en.wikipedia.org/wiki/Syntactic_sugar -[6]: https://docs.python.org/3/library/ -[7]: https://opensource.com/article/19/10/python-programming-paradigms -[8]: https://en.wikipedia.org/wiki/Fizz_buzz -[9]: https://pypi.org/project/pandas/ -[10]: https://pypi.org/project/Twisted/ -[11]: https://pypi.org/project/Django/ -[12]: https://pypi.org/project/paramiko/ -[13]: https://www.python.org/psf/conduct/ -[14]: https://us.pycon.org/2019/about/code-of-conduct/ -[15]: https://www.python.org/community/ diff --git a/sources/talk/20200101 How to get started with open source in 2020.md b/sources/talk/20200101 How to get started with open source in 2020.md deleted file mode 100644 index 35f67c3d28..0000000000 --- a/sources/talk/20200101 How to get started with open source in 2020.md +++ /dev/null @@ -1,88 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (How to get started with open source in 2020) -[#]: via: (https://opensource.com/article/20/1/getting-started-open-source) -[#]: author: (Bryant Son https://opensource.com/users/brson) - -How to get started with open source in 2020 -====== -New to open source? Opensource.com's top 10 articles for newcomers will -get you on the right pathway quickly in the new year. -![pipe in a building][1] - -When Opensource.com launched in 2010, Red Hat CEO Jim Whitehurst said the site "is one of the ways in which Red Hat gives something back to the open source community." And that community has always included the growing number of people who are new to open source. - -In 2019, we published many articles about the open source way of thinking, choosing hardware, the contribution process, and other topics geared toward newbies. If you're new to open source, this list of Opensource.com's top 10 articles from 2019 about getting started with open source should put you on the right path. - -### Why I made the switch from Mac to Linux - -Have you ever considered trying out Linux but were not sure how to start? You are not alone! Trying something new is usually a little scary and involves a learning curve. In [_Why I made the switch from Mac to Linux_][2], Matthew Broberg shares his story about adopting Linux and how his initial nervousness was transformed into an awesome feeling of accomplishment. - -### Getting started with Git: Terminology 101 - -Although there are many ways to contribute to open source (including writing about it, like I'm doing here), the most notable contributions come from the developers who provide source code to projects. They usually make their source code contributions to GitHub and GitLab repositories using the Git tool. Matthew Broberg's guide to [_Getting started with Git: Terminology 101_][3] explains how to get started with Git so you can make your first commit to your favorite open source project. - -### Buying a Linux-ready laptop - -Most people who want to try Linux are already familiar with Microsoft Windows or Apple MacOS, and they may know they can install Linux on their existing computer, for example, by using a virtual machine, partitioning their drive to install Linux alongside Windows or Mac, reformatting their drive to erase their old operating system and install Linux, or putting Linux on a second drive. But many may not know they can buy a Linux-by-default laptop from companies like System76, Slimbook, and Tuxedo. In [_Buying a Linux-ready laptop_][4], Richardo Berlasso shares his experience of ordering, receiving, and using a Linux-ready Tuxedo laptop. - -### Getting started with Vim: The basics - -Vim is an improved version of the vi text editor. It's is available by default on most Linux operating systems and competes with Emacs, another popular Linux text editor. Knowing how to use Vim can give you an edge in creating, modifying, and managing text-based files, whether they are programming files or simple words on a screen. In [_Getting started with Vim: The basics_][5], I walk through how to start learning Vim to simplify your open source journey. - -### How to create a pull request in GitHub - -Pull request, often shortened to PR, is a Git term that means something is available to be merged into another branch. Pull requests are an essential part of the open source contribution process: to contribute to an open source project, people fork or clone a branch to work on it, and the PR process is how they later merge their work back to the parent branch. [_How to create a pull request in GitHub_][6] by Kedar Vijay Kulkarni will give you a good foundation of knowledge to make your first pull request. - -### Bash vs. Python: Which language should you use? - -Of the many programming languages out there, Python is definitely one of the hottest, driven mostly by the growth of data science. But for automation engineers, Bash always has been the primary script language to get the job done. So, what can Python do that Bash cannot? What are some Bash tasks that Python can't replace? Learn the differences by reading [_Bash vs. Python: Which language should you use?_][7] by Archit Modi. - -### How to use Ansible to document procedures - -Ansible is a very popular and powerful infrastructure-as-code tool. Many enterprises rely on it to automate tasks in their cloud platforms. Among the countless things Ansible can do, one of the least obvious is the one Marco Bravo explains: [_How to use Ansible to document procedures_][8]. - -### A dozen ways to learn Python - -Learning a programming language is always a daunting task. But Python has a number of features that make the learning process easy. Contributor Don Watkins offers [_A dozen ways to learn Python_][9] to take some of the stress out of the journey from getting started to becoming a Python expert. - -### What's the best Linux distribution for beginners? - -Everyone has probably heard of Android, the most widely used Linux-based mobile operating system. And many have heard of Red Hat Enterprise Linux (RHEL) and Ubuntu. Picking a Linux operating system can be difficult, but Lauren Pritchett's poll [_What's the best Linux distribution for beginners?_][10] might help you pick the right one based on the community's input. By the way, while you're there, make sure to vote for your favorite Linux distro. - -### My first contribution to open source: Impostor Syndrome - -Contributing to open source can change your life in positive ways, but you can't ignore the technical challenges around it. Have you ever heard someone say, "Hey, starting with open source is a piece of cake? Everyone can do it!" Probably not, since it's not exactly true. Galen Corey shares some of the challenges he confronted in [_My first contribution to open source: Impostor Syndrome_][11]. - -### What else do you need to get started? - -There are a lot of topics related to getting started with open source, which also means there are a lot of opportunities for Opensource.com to give back to new users by publishing articles to help them. Do you have ideas for other articles we should cover in 2020? Please share your suggestions in the comments, or even consider [writing an article][12] about your own open source journey. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/1/getting-started-open-source - -作者:[Bryant Son][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/brson -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/open_pipe_red_hat_tower_building.png?itok=8ho3yi7L (pipe in a building) -[2]: https://opensource.com/article/19/10/why-switch-mac-linux -[3]: https://opensource.com/article/19/2/git-terminology -[4]: https://opensource.com/article/19/7/linux-laptop -[5]: https://opensource.com/article/19/3/getting-started-vim -[6]: https://opensource.com/article/19/7/create-pull-request-github -[7]: https://opensource.com/article/19/4/bash-vs-python -[8]: https://opensource.com/article/19/4/ansible-procedures -[9]: https://opensource.com/article/19/8/dozen-ways-learn-python -[10]: https://opensource.com/article/19/10/linux-distribution-beginners -[11]: https://opensource.com/article/19/11/my-first-open-source-contribution-impostor-syndrome -[12]: https://opensource.com/how-submit-article diff --git a/sources/talk/20200104 DevOps is a solution to burnout worth investing in.md b/sources/talk/20200104 DevOps is a solution to burnout worth investing in.md deleted file mode 100644 index 59d27c605e..0000000000 --- a/sources/talk/20200104 DevOps is a solution to burnout worth investing in.md +++ /dev/null @@ -1,100 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (DevOps is a solution to burnout worth investing in) -[#]: via: (https://opensource.com/article/20/1/devops-burnout-solution) -[#]: author: (Dawn Parzych https://opensource.com/users/dawnparzych) - -DevOps is a solution to burnout worth investing in -====== -Instead of treating burnout once it kicks in, we need to do more to -prevent it in the first place. Here is a reminder of the cause and a -look at solutions. -![A person choosing between several different incentives][1] - -Not a day goes by that I don't see a tweet or hear somebody talking about burnout. Burnout is becoming a pervasive part of our lives, especially in tech and open source communities. In [_What you need to know about burnout in open source communities_,][2] I defined burnout and explored its causes, symptoms, and potential treatments. But a better question is about prevention: How do we change the underlying processes, cultures, and tools to prevent burnout from occurring in the first place? - -### Burnout's catalyst is unplanned work - -Let's start by reviewing what's known about the cause of burnout. In 2019, PagerDuty published [_Unplanned work: The human impact of an always-on world_][3]. More than 35% of the study's respondents are considering leaving their jobs due to stress and work/life balance issues, also known as burnout. Companies that utilize automation and have documented response plans have fewer unplanned incidents and less stressed employees. - -Modern software organizations use automation and documented response plans to move faster. Moving faster is necessary to stay competitive. We are in this endless cycle where customers expect more, which puts more pressure on companies to deliver more and deliver it faster, which in turn creates pressure on employees. - -However, it is possible to move fast while having protections to prevent unplanned work and burnout. The Accelerate State of DevOps Report has been tracking trends in DevOps for six years. It allows teams to benchmark against others in the industry as low, medium, high, or elite performers. One of the findings from the [2019 State of DevOps report][4] was: "Productivity can drive improvements in work/life balance and reductions in burnout, and organizations can make smart investments to support it." - -Productivity means more work gets done. Therefore, more value is delivered. The catch to productivity is balance: Don't do more work in the short term at the expense of burning out your people. Processes and tooling need to be in place to prevent people from feeling overworked and overwhelmed. - -To support productivity that does not lead to burnout, organizations need to make smart investments in tooling and reduce technical debt. Investing in tooling means purchasing useful and easy-to-use solutions. The preference for building rather than buying may lead productivity to decrease and burnout to emerge. How? Instead of focusing on building features that are competitive differentiators and help the company achieve key business objectives, the developers spend countless hours trying to build something that a vendor could have quickly provided. - -As developers spend time building non-core solutions, technical debt accrues, and features are pushed out. Instead of building all the things, buy the tooling that supports the business but is not strategic, and build the things that are core to your business strategy. You wouldn't use development resources to build your own email program, so treat other tooling the same way. Twenty percent of tools used by low-performing teams are developed primarily in-house and proprietary to the organization, compared to 5% to 6% in medium, high, and elite teams. - -### Worthwhile solutions to burnout - -If you want to prevent burnout, here are some areas to invest in. It's no coincidence they overlap with frequent discussions [in DevOps articles][5]. - -#### Communication and collaboration - -Communication is at the heart of everything we do. [Laurie Barth][6] sums it up nicely: "Over time, I've learned that the biggest source of failure is often due to people and teams. A lack of communication and coordination can cause serious problems." Use tools like videoconferencing, Confluence, and Slack to ensure communication and collaboration happen. - -But create rules around the use of these tools. Make sure to turn off Slack notifications during off-hours. I disable my notifications from 6pm to 8am. - -Define what type of communication is best for which situations. Slack is useful for real-time, ephemeral communication, but it can lead to people feeling the need to always be on. If they're not online, they may miss an important conversation. If major or minor decisions are made in a Slack thread, document those in a longer-living system of record, giving all team members access to the necessary information. - -Trying to debug an incident? Communicate via Slack. Need to write up a post-incident review? Post that to Confluence or a wiki. - -Videoconferencing tools like Zoom or BlueJeans help enable remote work. Having the ability to work remotely, part-time or full-time, can reduce the stress of commuting or relocating. Videoconferences make it easy to stay connected with distributed teams because sometimes it is easier to hash things out in a face-to-face conversation than over email or Slack. - -These tools should not be used to encourage people to work while on vacation. Time off means time away from work to rest, recover, and recharge. - -#### Releases and deploys - -According to the 2019 State of DevOps report, elite teams deploy code 208 times more frequently than low performers, and their lead time from committing code to deployment is 106 times faster. It may seem that the more deploys you do, the greater the likelihood of burnout, but that isn't necessarily the case. Teams that utilize continuous delivery have processes in place to deploy safely. - -First, separate releases from deploys—just because you deployed code doesn't mean that all users should have access to it. Ring deploys make features available to a small group of people, like internal employees or beta customers. These users can help you identify bugs or provide feedback to fine-tune a feature before releasing it widely. - -Next, create feedback loops regarding the quality of a deployment. Things don't always go as planned when deploying your code. You need the ability to rapidly stop when things go wrong. Feedback loops include implementing monitoring and observability tools. By using telemetry data along with kill switches, you can quickly turn off a poorly behaving feature rather than rolling back an entire deployment. - -Finally, run A/B tests and experiments to learn what customers respond to. A metrics-based approach provides insight into what works and what doesn't and can help you validate a hypothesis. Instead of creating technical debt with a partial feature, collect data to see if the feature provides the expected conversions early on. If it doesn't, don't release it. - -#### Incident resolution - -Part of resolving incidents means knowing what to do when something breaks. And constantly putting out fires can lead to burnout. We can't prevent all incidents from happening, but we can be better prepared. Running chaos experiments or game days with tools like Gremlin can help companies prepare for the unexpected. - -With chaos experiments, you can learn how your systems, services, and applications respond under specific scenarios. Knowing how things behave when they're broken can shorten incident-resolution times. They can also help you identify and fix vulnerabilities before an incident occurs. - -What can you automate to reduce toil during incident resolution? For example, when you're actively working on an incident, can a Slack channel dedicated to the incident be automatically generated? Or can you create [feature flags][7] with a solution like LaunchDarkly (full disclosure: I work there) to perform common tasks during incident resolution? These could include: - - * Dynamic configuration changes, like automatically adjusting logging levels to collect more information when an alert is triggered - * Load-shedding to disable non-critical elements when systems are under heavy load to ensure essential tasks complete - * Kill switches or circuit breakers to turn off features when they are impacting your service reliability - - - -### It's not magic - -There is no magic bullet to resolve burnout; it requires having the right people, processes, and tools. The people help create an environment of psychological safety where people are free to ask questions, experiment, make mistakes, and be creative. Think about what is most important to your organization, and invest in the right tools to support those goals and the people working towards them. - -This month we look at ways to balance your workload, gracefully say "no," and avoid burnout. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/1/devops-burnout-solution - -作者:[Dawn Parzych][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/dawnparzych -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/BUSINESS_incentives.png?itok=IhIL1xyT (A person choosing between several different incentives) -[2]: https://opensource.com/article/19/11/burnout-open-source-communities -[3]: https://www.pagerduty.com/resources/reports/unplanned-work/ -[4]: https://services.google.com/fh/files/misc/state-of-devops-2019.pdf -[5]: https://opensource.com/tags/devops -[6]: https://laurieontech.com/ -[7]: https://martinfowler.com/articles/feature-toggles.html diff --git a/sources/talk/20200104 Industrial Internet Consortium teams up with blockchain-focused security group.md b/sources/talk/20200104 Industrial Internet Consortium teams up with blockchain-focused security group.md deleted file mode 100644 index cd5f8f23c2..0000000000 --- a/sources/talk/20200104 Industrial Internet Consortium teams up with blockchain-focused security group.md +++ /dev/null @@ -1,52 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Industrial Internet Consortium teams up with blockchain-focused security group) -[#]: via: (https://www.networkworld.com/article/3512062/industrial-internet-consortium-teams-up-with-blockchain-focused-security-group.html) -[#]: author: (Jon Gold https://www.networkworld.com/author/Jon-Gold/) - -Industrial Internet Consortium teams up with blockchain-focused security group -====== -A merger between a prominent industrial-IoT umbrella group and a blockchain-centered corporate memebership program highlights a new focus on bringing finished IoT solutions to market. -Leo Wolfert / Getty Images - -The Industrial Internet Consortium and the Trusted IoT Alliance announced today that they would merge memberships, in an effort to drive more collaborative approaches to [industrial IoT][1] and help create more market-ready products. - -The Trusted IoT Alliance will now operate under the aegis of the IIC, a long-standing umbrella group for vendors operating in the IIoT market. The idea is to help create more standardized approaches to common use cases in IIoT, enabling companies to get solutions to market more quickly. - -[[Get regularly scheduled insights by signing up for Network World newsletters.]][2] - -“This consolidation will strengthen the ability of the IIC to provide guidance and advance best practices on the uses of distributed-ledger technology across industries, and boost the commercialization of these products and services,” said 451 Research senior [blockchain][3] and DLT analyst Csilla Zsigri in a statement. - -Gartner vice president and analyst Al Velosa said that it’s possible the move to team up with TIoTA was driven in part by a new urgency to reach potential customers. Where other players in the IoT marketplace, like the major cloud vendors, have raked in billions of dollars in revenue, the IIoT vendors themselves haven’t been as quick to hit their sales targets. “This approach is them trying to explore new vectors for revenue that they haven’t before,” Velosa said in an interview. - -The IIC, whose founding members include Cisco, IBM, Intel, AT&T and GE, features 19 different working groups, covering everything from IIoT technology itself to security to marketing to strategy. Adding TIoTA’s blockchain focus to the mix could help answer questions about security, which are centrally important to the continued success of enterprise and industrial IoT products. - -Indeed, research from Gartner released late last year shows that IoT users are already gravitating toward blockchain and other distributed-ledger technologies. Fully three-quarters of IoT technology adopters in the U.S. have either brought that type of technology into their stack already or are planning to do so by the end of 2020. While almost two-thirds of respondents to the survey cited security and trust as the biggest drivers of their embrace of blockchain, almost as many noted that the technology had allowed them to increase business efficiency and lower costs. - -**[ Also see [What is edge computing?][4] and [How edge networking and IoT will reshape data centers][5].]** - -Join the Network World communities on [Facebook][6] and [LinkedIn][7] to comment on topics that are top of mind. - --------------------------------------------------------------------------------- - -via: https://www.networkworld.com/article/3512062/industrial-internet-consortium-teams-up-with-blockchain-focused-security-group.html - -作者:[Jon Gold][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://www.networkworld.com/author/Jon-Gold/ -[b]: https://github.com/lujun9972 -[1]: https://www.networkworld.com/article/3243928/what-is-the-industrial-internet-of-things-essentials-of-iiot.html -[2]: https://www.networkworld.com/newsletters/signup.html -[3]: https://www.networkworld.com/article/3386881/why-blockchain-might-be-coming-to-an-iot-implementation-near-you.html -[4]: https://www.networkworld.com/article/3224893/internet-of-things/what-is-edge-computing-and-how-it-s-changing-the-network.html -[5]: https://www.networkworld.com/article/3291790/data-center/how-edge-networking-and-iot-will-reshape-data-centers.html -[6]: https://www.facebook.com/NetworkWorld/ -[7]: https://www.linkedin.com/company/network-world diff --git a/sources/talk/20200105 7 Ways NOT to manage your remote team.md b/sources/talk/20200105 7 Ways NOT to manage your remote team.md deleted file mode 100644 index b4e223a03e..0000000000 --- a/sources/talk/20200105 7 Ways NOT to manage your remote team.md +++ /dev/null @@ -1,116 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (7 Ways NOT to manage your remote team) -[#]: via: (https://opensource.com/article/20/1/ways-not-manage-remote-team) -[#]: author: (Matt Shealy https://opensource.com/users/mshealy) - -7 Ways NOT to manage your remote team -====== -Learn to let go and let your team shine with these simple steps. -![World locations with red dots with a sun burst background][1] - -Building a remote development team presents unique challenges. Trying to build a cross-functional team, full of various personalities, virtually can lead to communication disasters. Fortunately, through planning, smart hiring, training, and communication, project leaders can build and lead virtual development teams successfully. - -The demand for remote teams continues to grow. The increased demand for software developers and [new communication technology][2] has removed the barriers of geography. Even with these advancements, disparate team members from different backgrounds may find it challenging to learn how to interact with one another. - -It's easy for misunderstandings and miscommunications to occur. It's becoming more and more critical to [rethink collaboration][3] in a work environment growing increasingly more remote. As a result, project leaders must rethink the needs of teams spread out across the globe. - -By avoiding a few key pitfalls, your team can overcome these challenges consistently. If you follow a few time-tested, in-house practices, and some that apply specifically to remote teams, you can manage a range of personalities and complete your build successfully. - -The following are seven practices to avoid when managing a remote team. - -### Don't slack on training - -A variety of different perspectives is the top benefit of working with diverse remote team members. However, it’s essential to understand and acknowledge those differences during training. - -Addressing language differences is only one part of acknowledging team diversity. When recruiting programmers, it would be best if you focus on candidates with an aptitude for working in a multicultural environment and even in a multi-coding language environment. - -Also, don’t make the mistake of thinking that personal characteristics are unimportant because team members aren’t working face-to-face. Team members still have to collaborate, so their personalities must mesh. - -Training isn’t all technical skills. Emotional training can also help a team work well together remotely. Emotional intelligence [training can help coworkers develop skills like empathy and awareness][4] that can make teams work better together. Emotional distance can make it challenging to establish bonds between new trainees and team leaders from the get-go, which can immediately loosen bonds in what could be a strong remote team. Consider what remote team-building training you can do via video or on Slack. Remember that is it important to constantly be proactive in strengthening relationships throughout the life of your team. - -### Don't use an ad hoc communication system - -When working with diverse remote team members, it’s essential that you use straightforward, effective code management and communication software. Ideally, you want the most uncomplicated resources available. - -The process may need to be further simplified for newer team members and freelancers who do not have the time to learn everything about the ins and outs of the organization’s policies. - -Create standard ways to communicate with team members. Maybe all work discussion happens in Slack or one of its [open source alternatives][5], while teams use [project management software][6] to keep work on schedule. - -Having a clear space for each type of conversation will help those who need to focus on work, while also offering an outlet for fun. Team members must use these resources daily, if not hourly. If your solutions are too complicated, learning to navigate the tools will pull focus from design and implementation work. - -### Don't lose sight of the big picture - -Avoid the pitfalls of focusing too closely on daily goals. It is essential you stay focused on the overall project. You should work with team members to establish your goals and milestones, and make sure team members stay on schedule. As the project leader, it’s your job to make sure these key events contribute to deliverable milestones. - -### Don't micromanage your team - -Some project managers, especially those with a coding background, find it difficult to delegate responsibility. It’s natural to gravitate toward solving familiar problems. However, it’s your job to guide the ship, not develop solutions. - -In [a micromanaged environment][7], the project manager tells the programmers what the code is, and exactly how to craft it. However, this management style ultimately leads to employee dissatisfaction. - -Your team should feel free to explore solutions, initiate positive change, and use innovation for exciting new ideas. - -If you don’t give your coders space to innovate and use their creativity, they feel undervalued. If this sentiment persists, your remote staff members are unlikely to produce the best work possible. - -### Use this opportunity to promote diversity - -If you are going to build a remote team, you must understand and acknowledge that [team members will have different backgrounds][8]. This circumstance is especially beneficial. The diverse viewpoints of staff members will enable your team to offer insights that expand beyond that of a centrally located talent pool. - -Also, your diverse remote team will give you access to experience with global trends. Furthermore, your team will be less likely to suffer from the effect of crowd mentality thinking. - -With the freedom to innovate, team members will feel more comfortable offering their input. Together, these benefits will enable your team as a whole to build a product better suited for multiple regions and verticals. - -### Don't forget to keep an eye on costs - -Ballooning costs are a top challenge for development teams. Despite project planning best practices, scope creep is a real problem for even the most experienced teams. There are two underlying factors that need to be addressed if this problem is to be solved. - -The first is the fact that the more analysis that is done throughout the development process, the more complexity arises and is ultimately added to the system. The second factor is the fact that people who have been through system development before know that there won’t ever be a "second phase" of the project. They know that there will only be one shot at the project, so they try and fit everything possible into the initial project phase. - -These two self-reinforcing factors lead to a death spiral of problems. Too much analysis leads to system complexity and loads of features being crammed into the first phase. A lack of trust between IT and business teams inevitably forms because of this. The design requirements become too big and complicated for there to be any chance of staying on schedule or on budget. Inevitably, blame lands with the IT team. - -The answer to this problem is to restrict analysis to only what the business team needs right now. IT should refrain from speculating on what may be needed in the future or asking business team members what they may need down the line. - -These requirements allow IT to build a reliable project plan and overall budget. If your team is looking to outsource the project at least in part, [calculating the app development costs][9] for each individual team or project component can help to keep things on track. - -### Don't think of time zone differences as a barrier - -Do not view time zone differences as a challenge. You can leverage time zones to your advantage and build your team in a way that will keep the project running around the clock. - -What is more important is choosing candidates who work independently. Good remote coders are responsible, organize their time effectively, and communicate well with team members. With an effective communication system, time differences will have no effect on the successful outcome of your team. - -Remote team members benefit significantly from predictable and straightforward engagement. The relatively new remote work environment demands that staff members establish a new standard for clear, concise communication. To promote a collaborative environment, teams must establish norms, such as universal jargon and consensus on communication tools. - -In an environment that thrives on innovation, predictability is an asset when it comes to teamwork. Everyone is different, and innovation is a sought-after commodity in software development. However, in the remote environment, consistent behavior helps team members communicate effectively. - -### Conclusion - -Remote work is quickly becoming the new default for software development. Be sure to avoid these pitfalls to set your teams up for success. - -Do you have any tips to recommend? Please share them in the comments. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/1/ways-not-manage-remote-team - -作者:[Matt Shealy][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/mshealy -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/world_remote_teams.png?itok=Wk1yBFv6 (World locations with red dots with a sun burst background) -[2]: https://www.chamberofcommerce.com/business-advice/strategies-and-tools-for-remote-team-collaboration -[3]: https://hbr.org/2018/02/how-to-collaborate-effectively-if-your-team-is-remote -[4]: https://www.skillsoft.com/content-solutions/business-skills-training/emotional-intelligence-training/ -[5]: https://opensource.com/alternatives/slack -[6]: https://opensource.com/business/16/2/top-issue-support-and-bug-tracking-tools -[7]: https://blog.trello.com/how-to-stop-micromanaging-your-remote-team -[8]: https://opensource.com/article/18/10/think-global-communication-challenges -[9]: https://www.appdevelopmentcost.com/#the-definitive-guide-to-understanding-app-development-costs diff --git a/sources/talk/20200107 Researchers aim for transistors that compute and store in one component.md b/sources/talk/20200107 Researchers aim for transistors that compute and store in one component.md deleted file mode 100644 index 6a0bb4f471..0000000000 --- a/sources/talk/20200107 Researchers aim for transistors that compute and store in one component.md +++ /dev/null @@ -1,56 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Researchers aim for transistors that compute and store in one component) -[#]: via: (https://www.networkworld.com/article/3510638/researchers-aim-to-build-transistors-that-can-compute-and-store-information-in-one-component.html) -[#]: author: (Patrick Nelson https://www.networkworld.com/author/Patrick-Nelson/) - -Researchers aim for transistors that compute and store in one component -====== -Materials incompatibilities have stalled efforts to integrate transistors and memory in a single on-chip, commercial component. That might be about to change. -iStock - -Researchers at Purdue University have made progress towards an elusive goal: building a transistor that can both process and store information. In the future, a single on-chip component could integrate the processing functions of transistors with the storage capabilities of ferroelectric RAM, potentially creating a process-memory combo that enables faster computing and is just atoms thick. - -The ability to cram more functions onto a chip, allowing for greater speed and power without increasing the footprint, is a core goal of electronics design. To get where they are today, engineers at Purdue had to overcome incompatibilities between transistors – the switching and amplification mechanisms used in almost all electronics – and ferroelectric RAM. Ferroelectric RAM is higher-performing memory technology; the material introduces non-volatility, which means it retains information when power is lost, unlike traditional dielectric-layer-constructed DRAM. - -**SEE ALSO:** [Researchers experiment with glass-based storage that doesn't require electronics cooling][1] - -In the past, materials conflicts have hampered the design of commercial electronics that integrate transistors and memory. “Researchers have been trying for decades to integrate the two, but issues happen at the interface between a ferroelectric material and silicon, the semiconductor material that makes up transistors. Instead, ferroelectric RAM operates as a separate unit on-chip, limiting its potential to make computing much more efficient,” Purdue explains in a [statement][2]. - -**[ [Get certified as an Apple Technical Coordinator with this seven-part online course from PluralSight.][3] ]** - -A team of engineers at Purdue, led by Peide Ye, came up with a solution: “We used a semiconductor that has ferroelectric properties. This way two materials become one material, and you don’t have to worry about the interface issues,” said Ye, who is a professor of electrical and computer engineering at the university. - -The Purdue engineers’ method revolves around a material called alpha indium selenide. It has ferroelectric properties, but it overcomes a limitation of conventional ferroelectric material, which generally acts as an insulator and doesn’t allow electricity to pass through. The alpha indium selenide material can become a semiconductor, which is necessary for the transistor element, and a room-temperature-stable, low voltage-requiring ferroelectric component, which is needed for the ferroelectric RAM. - -Advertisement - -Alpha indium selenide has a smaller band gap than other materials, the university explains. Band gaps are where no electrons can exist. That shrunken band gap, found in the material natively, means that material isn’t a serious insulator and isn’t too thick for electrical current to pass through — yet there is still a ferroelectric layer. The smaller band gap “[makes] it possible for the material to be a semiconductor without losing ferroelectric properties,” according to Purdue. - -“The result is a so-called ferroelectric semiconductor field-effect transistor, built in the same way as transistors currently used on computer chips.” - -More information is available [here][2]. - -Join the Network World communities on [Facebook][4] and [LinkedIn][5] to comment on topics that are top of mind. - --------------------------------------------------------------------------------- - -via: https://www.networkworld.com/article/3510638/researchers-aim-to-build-transistors-that-can-compute-and-store-information-in-one-component.html - -作者:[Patrick Nelson][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://www.networkworld.com/author/Patrick-Nelson/ -[b]: https://github.com/lujun9972 -[1]: https://www.networkworld.com/article/3488556/researchers-experiment-with-glass-based-storage-that-doesnt-require-electronics-cooling.html -[2]: https://www.purdue.edu/newsroom/releases/2019/Q4/reorganizing-a-computer-chip-transistors-can-now-both-process-and-store-information.html -[3]: https://pluralsight.pxf.io/c/321564/424552/7490?u=https%3A%2F%2Fwww.pluralsight.com%2Fpaths%2Fapple-certified-technical-trainer-10-11 -[4]: https://www.facebook.com/NetworkWorld/ -[5]: https://www.linkedin.com/company/network-world diff --git a/sources/talk/20200107 Wi-Fi 6 is slowly gathering steam.md b/sources/talk/20200107 Wi-Fi 6 is slowly gathering steam.md deleted file mode 100644 index cc11b7fdc8..0000000000 --- a/sources/talk/20200107 Wi-Fi 6 is slowly gathering steam.md +++ /dev/null @@ -1,79 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Wi-Fi 6 is slowly gathering steam) -[#]: via: (https://www.networkworld.com/article/3512153/wi-fi-6-will-slowly-gather-steam-in-2020.html) -[#]: author: (Jon Gold https://www.networkworld.com/author/Jon-Gold/) - -Wi-Fi 6 is slowly gathering steam -====== -There’s a lot to look forward to about 802.11ax, aka Wi-Fi 6, just don’t expect it to be a top-to-bottom revolution in 2020. -Thinkstock - -The next big wave of Wi-Fi technology, 802.11ax, is going to become more commonplace in enterprise installations over the course of the coming year, just as the marketing teams for the makers of Wi-Fi equivalent will have you believe. Yet the rosiest predictions of revolutionary change in what enterprise Wi-Fi is capable of are still a bit farther off than 2020, according to industry experts. - -The crux of the matter is that, while access points with 802.11ax’s Wi-Fi 6 branding will steadily move into enterprise deployments in, the broader Wi-Fi ecosystem will not be dominated by the new standard for several years, according to Farpoint Group principal Craig Mathias. - -[[Get regularly scheduled insights by signing up for Network World newsletters.]][1] [][2] - -“Keep in mind, we’ve got lots and lots of people that are still in the middle of deploying [802.11]ac,” he said, referring to the previous top-end Wi-Fi standard. The deployment of 802.11ax will tend to follow the same pattern as the deployment of 802.11ac and, indeed, most [previous new Wi-Fi standards][3]. The most common scenario will be businesses waiting for a refresh cycle, testing the new technology and then rolling it out. - -[][4] - -BrandPost Sponsored by HPE - -[Take the Intelligent Route with Consumption-Based Storage][4] - -Combine the agility and economics of HPE storage with HPE GreenLake and run your IT department with efficiency. - -In the near term, enterprises installing 802.11ax access points will bring performance increases – the system’s [MU-MIMO][5] antenna technology is more advanced than that present in previous versions of the Wi-Fi standard, and better suited to high-density environments with large numbers of endpoints connecting at the same time. Yet those increases will be small compared to those that will ensue once 802.11ax endpoints – that is, phones, tablets, computers and more specialized devices like [IoT][6] sensors and medical devices – hit the market. - -That, unfortunately, is still some way off, and Mathias said it will take around five years for 802.11ax to become ubiquitous. - -Advertisement - -“We’re not expecting a lot of [802.11]ax devices for a while,” he said. - -Making sure devices are compliant with modern Wi-Fi standards will be crucial in the future, though it shouldn’t be a serious issue that requires a lot of device replacement outside of fields that are using some of the aforementioned specialized endpoints, like medicine. Healthcare, heavy industry and the utility sector all have much longer-than-average expected device lifespans, which means that some may still be on 802.11ac. - -That’s bad, both in terms of security and throughput, but according to Shrihari Pandit, CEO of Stealth Communications, a fiber ISP based in New York, 802.11ax access points could still prove an advantage in those settings thanks to the technology that underpins them. - -“Wi-Fi 6 devices have eight radios inside them,” he said. “MIMO and beamforming will still mean a performance upgrade, since they’ll handle multiple connections more smoothly.” - -A critical point is that some connected devices on even older 802.11 versions – n, g, and even b in some cases – won’t be able to benefit from the numerous technological upsides of the new standard. Making sure that a given network is completely cross-compatible will be a central issue for IT staff looking to realize performance gains on networks that service legacy gear.” - -Pandit said that, increasingly, data-hungry customers like tech companies are looking to 802.11ax to act as a wireline replacement for those settings. “Lots of the tech companies we service here, some of them want Wi-Fi 6 so that they can use gigabit performance without having to run wires,” he said. - -Whether it goes by Wi-Fi 6 or 802.11ax, the next generation of Wi-Fi technology is likely to be marketed a bit differently than new Wi-Fi standards have been in the past, according to Mathias. It’s less about the mere fact that there’s a new Wi-Fi standard providing faster connectivity, and more about enabling new functionality that 802.11ax makes possible, including better handling of IoT devices and integration with AI/machine learning systems. - -Luckily, prices for top-end Wi-Fi equipment shouldn’t change much compared to the current top of the line, making it easy for almost any organization to budget for the switch. - -“We’re not expecting anyone to pay a premium for [802.11ax],” said Mathias. - -**Now see ["How to determine if Wi-Fi 6 is right for you"][2]** - -Join the Network World communities on [Facebook][7] and [LinkedIn][8] to comment on topics that are top of mind. - --------------------------------------------------------------------------------- - -via: https://www.networkworld.com/article/3512153/wi-fi-6-will-slowly-gather-steam-in-2020.html - -作者:[Jon Gold][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://www.networkworld.com/author/Jon-Gold/ -[b]: https://github.com/lujun9972 -[1]: https://www.networkworld.com/newsletters/signup.html -[2]: https://www.networkworld.com/article/3356838/how-to-determine-if-wi-fi-6-is-right-for-you.html -[3]: https://www.networkworld.com/article/3238664/80211-wi-fi-standards-and-speeds-explained.html -[4]: https://www.networkworld.com/article/3440100/take-the-intelligent-route-with-consumption-based-storage.html?utm_source=IDG&utm_medium=promotions&utm_campaign=HPE21620&utm_content=sidebar ( Take the Intelligent Route with Consumption-Based Storage) -[5]: https://www.networkworld.com/article/3256905/13-things-you-need-to-know-about-mu-mimo-wi-fi.html -[6]: https://www.networkworld.com/article/3207535/what-is-iot-the-internet-of-things-explained.html -[7]: https://www.facebook.com/NetworkWorld/ -[8]: https://www.linkedin.com/company/network-world diff --git a/sources/talk/20200109 How to Deliver Affordable and Optimized Application Access Worldwide with SASE.md b/sources/talk/20200109 How to Deliver Affordable and Optimized Application Access Worldwide with SASE.md deleted file mode 100644 index 9e217c7d24..0000000000 --- a/sources/talk/20200109 How to Deliver Affordable and Optimized Application Access Worldwide with SASE.md +++ /dev/null @@ -1,86 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (How to Deliver Affordable and Optimized Application Access Worldwide with SASE) -[#]: via: (https://www.networkworld.com/article/3512640/how-to-deliver-affordable-and-optimized-application-access-worldwide-with-sase.html) -[#]: author: (Cato Networks https://www.networkworld.com/author/Matt-Conran/) - -How to Deliver Affordable and Optimized Application Access Worldwide with SASE -====== -Gartner tells you to use your MPLS renewal budget to transition into SASE, but not every SASE can replace MPLS. Here's what to look for. -Vit_Mar - -Global expansion is a common goal for many enterprises. In some verticals, like manufacturing, running production lines globally is an established practice. However, deploying international sales, service, and engineering teams is becoming the norm for many other sectors including high tech, finance, retail, and more. - -A global enterprise footprint creates a unique set of challenges that do not occur in regional businesses. Users in a remote office will need to securely access data-center applications, cloud applications, or both. Depending on the distance between the remote location and the application—and the sensitivity of the application to high latency, packet loss, and jitter—an expensive set of technologies and capabilities will be needed to optimize the user experience. - -[SD-WAN][1] focuses on affordable, high-performance site connectivity. Alone it cannot solve the broader networking and security challenges faced by global enterprises, which is why Gartner and other analysts are already recognizing the need to look beyond SD-WAN for a new class of enterprise solutions. Gartner has coined the term [secure access service edge (SASE, pronounced “sassy”)][2] for solutions that converge SD-WAN capabilities with enterprise security into a global, cloud-native platform. Let’s take a deeper look. - -#### **The Application Access Optimization Challenge** - -Across the enterprise, IT finds itself facing various challenges delivering network access to users and data everywhere. While those challenges will vary, their impact point remains the same—the user experience and IT budget. - -For data-center access, organizations traditionally relied on global MPLS providers. The predictability of MPLS ensured consistent latency and low packet loss and jitter needed to support critical applications like voice and ERP. The challenge with global MPLS was the cost per megabit that required organizations to spend heavily on limited bandwidth, creating a capacity constraint. The introduction of SD-WAN appliances and Internet-based connectivity does little to address the global connectivity challenge because SD-WAN appliances can't control the packet routing once the packet is placed on the Internet-leg of the SD-WAN. - -Another option to address global connectivity challenges was to shorten the distance between users and applications. Enterprises built regional data centers or hubs to get applications closer to end users. This is a very costly and complex endeavor that is most suitable for very large organizations with distributed IT staff who can optimize application performance and availability. - -#### **Global Cloud Access** - -The migration to cloud applications and cloud data centers created a new challenge for remote users. While MPLS was optimized for the organization’s on-premises data-center access, cloud data centers often reside in different geographic locations. Special connectivity solutions, such as [AWS DirectConnect and Azure ExpressRoute][3], are used to optimally connect physical enterprise locations to the cloud data centers. And while SD-WAN appliances claim cloud optimization, they require deploying a second appliance into the cloud — no easy task. - -Regardless of application location, none of the network solutions discussed are extensible to home offices and mobile users, where deploying edge appliances for SD-WAN or WAN optimization is not possible. This creates an application access challenge because the users must use the public internet to access the edge of the data center hosting their application. This access is subject to the unpredictable quality of the network from the user’s location to the destination. - -#### **SASE Delivers Optimized and Secured Application Access Anywhere** - -Global expansion, the migration from on-premises to cloud data centers, and the emergence of the mobile and telecommuting workforce are straining legacy network architectures. The network “patches” created to address this challenge, such as edge-SD-WAN, hybrid MPLS, Internet transports, and premium cloud connectivity, are costly and incomplete. - -To address this architectural challenge, a new architecture that connects and optimizes all edges—physical, virtual, cloud, mobile—anywhere in the world, must be created. That’s the story of [SASE][2]. SASE services converge networking and security into an identity-aware, cloud-native software stack. It’s the convergence that is key. Without the necessary network optimizations and capabilities, the SASE platform will not be able to meet performance expectations everywhere. - -#### **Cloud-Native: Built for and Delivered from the Cloud** - -A core characteristic of SASE is a cloud-native, as-a-service model. A cloud-native architecture leverages key cloud capabilities, including elasticity, adaptability, self-healing, and self-maintenance. - -SASE calls for the creation of a network of cloud points of presence (PoPs), which comprise the SASE Cloud. The PoPs run the provider software that delivers a wide range of networking and network security capabilities as a service. The PoPs should seamlessly scale to adapt to changes in traffic load via the addition of compute nodes. The PoPs software can be upgraded to deliver new features or bug fixes seamlessly and without IT involvement. The cloud architecture must include self-healing capabilities to automatically move processing away from failing compute nodes and PoPs and into healthy ones. - -These capabilities can't be achieved by spinning up virtual appliances in the cloud. Appliances are designed to serve a single customer (single tenant) and lack the overall cloud orchestration layer to ensure elasticity and self-healing. - -**Globally Distributed: Available Near All Edges** - -SASE Cloud is implemented as a globally distributed cloud platform. The SASE Cloud design guarantees that wherever your edges are, the full range of networking and security capabilities will be available to support them. SASE providers will have to strategically deploy PoPs to support business locations, cloud applications, and mobile users. As Gartner notes, SASE PoPs must extend beyond public cloud providers’ footprints (like AWS and Azure) to deliver a low-latency service to enterprise edges. - -Building a global cloud platform requires providers to hone their ability to rapidly deploy PoPs into cloud and physical data centers, ensure high capacity and redundant connectivity to support both WAN and cloud access, and apply security and optimization end-to-end across all edges. - -#### **Thin Edge: DC, Branch, Cloud, User** - -By placing processing and business logic in the cloud, SASE has minimal requirements for connecting various edges. This is a key challenge for SD-WAN edges especially in the context of NFV and uCPE. Running SD-WAN and network security side by side on the same appliance increases the likelihood of an overload, forcing the need to over-spec the underlying appliance.  This isn't a theoretical issue: An increase in branch throughput or rise in encrypted traffic volume can force an out-of-budget expansion. A Thin Edge approach has the following benefits:** ** - - * **Low cost:** By minimizing edge processing, low-cost appliances can achieve high throughput as most resource-intensive processing, such as deep packet inspection, is done using cloud resources that can scale better. - * **Low maintenance:** By keeping the over-functionality limited, it is possible to run a slower upgrade cycle to the edges, which has a higher potential for disruption vs. introducing new capabilities in the cloud. - * **Low impact:** Cloud integration is achieved with no edge appliances at all (agentless), while security and global network optimization remains intact. Mobile devices and new kinds of IoT devices no longer need significant processing resources to participate in the corporate network. They can automatically connect to the nearest SASE PoP with minimal battery impact. - - - -#### **End-to-End Optimization** - -Combining intelligent routing at the WAN edge with a software-defined global private backbone enables end-to-end traffic optimization. Last-mile optimizations focus on addressing last-mile issues, such as packet loss, by dynamically routing traffic over multiple ISPs. Middle-mile optimizations focus on optimizing routing globally and over multiple carriers comprising a diverse underlay. The middle-mile optimization extends to all edges—physical, virtual, and mobile—which is a unique benefit to a cloud-based, rather than an edge appliance-based, architecture. - -In short, SASE implements a new architecture that is built to support the modern global enterprise and address the various resources, requirements, and use cases in a holistic platform. Yes, SASE provides a fresh way to secure the network, but SASE also needs the “networking capabilities” of the network if companies are to deliver users everywhere an optimum user experience. - --------------------------------------------------------------------------------- - -via: https://www.networkworld.com/article/3512640/how-to-deliver-affordable-and-optimized-application-access-worldwide-with-sase.html - -作者:[Cato Networks][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://www.networkworld.com/author/Matt-Conran/ -[b]: https://github.com/lujun9972 -[1]: https://www.catonetworks.com/sd-wan?utm_source=idg -[2]: https://www.catonetworks.com/sase?utm_source=idg -[3]: https://www.catonetworks.com/cato-cloud#cloud-datacenter diff --git a/sources/talk/20200114 What communities of practice can do for your organization.md b/sources/talk/20200114 What communities of practice can do for your organization.md deleted file mode 100644 index 886fc05201..0000000000 --- a/sources/talk/20200114 What communities of practice can do for your organization.md +++ /dev/null @@ -1,65 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (What communities of practice can do for your organization) -[#]: via: (https://opensource.com/open-organization/20/1/why-build-community-of-practice) -[#]: author: (Tracy Buckner https://opensource.com/users/tracyb) - -What communities of practice can do for your organization -====== -In open organizations, fostering passionate communities can increase -collaboration, accelerate problem solving, and lead to greater -innovation. -![Lots of people in a crowd.][1] - -As I discussed in the [first part of this series][2], community is a fundamental principle in open organizations. In open organizations, people often define their roles, responsibilities, and affiliations through shared interests and passions—[not title, role, or position on an organizational chart][3]. - -So fostering and supporting communities of practice (CoPs) can be a great strategy for building a more open organization. Members of communities of practice interact regularly, discuss various topics, and solve problems collectively and collaboratively. These communities provide members with an opportunity to share their expertise, learn from others, and network with one another. - -As Luis Gonçalves states in [Learning Organisation][4]: - -> CoPs provide a shared context where members of the organisation can communicate and share information; stimulate learning through peer-to-peer mentoring, coaching, self-reflection, and collaboration; generate new knowledge; and initiate projects that develop tangible results. - -But those aren't the only value such communities can offer. Communities of practice can also enhance an organization in the following ways (summarized in Figure 1). - -**Decreased learning curves**. Many organizations face the challenge of rapidly increasing productivity of new employees (or members). This task becomes especially challenging in organizations where an employee's manager may be located in a different state, country, or region. Communities of practice offer new employees a network of connections they can tap into more quickly and easily. By joining a CoP, they can immediately access a network of experts and share resources, ask questions, and seek guidance outside the formal lines of the organizational chart. - -Members of communities of practice interact regularly, discuss various topics, and solve problems collectively and collaboratively. - -**Increased collaboration.** A recent survey from My Customer.com [shows][5] that 40 percent of company employees report not feeling adequately supported by their colleagues—because "different departments have their own agendas." A lack of collaboration between departments limits innovation and increases opportunities for miscommunication. Communities of practice encourage members from _all_ roles across _all_ departments to unite in sharing their expertise. This increases collaboration and reduces the threat of organizational silos. - -**Rapid problem-solving.** Communities of practice provide a centralized location for communication and resources useful for solving organizational or business problems. Enabling people to come together—regardless of their organizational reporting structure, location, and/or management structure—encourages problem-solving and can lead to faster resolution of those problems. - -**Enhanced innovation.** Researchers Pouwels and Koster [recently argued][6] that “collaboration contributes to innovation." CoPs provide a unique opportunity for members to collaborate on topics within their shared domains of interest and passion. This passion ignites a desire to discover new and innovative ways to solve problems and create new ideas. - -![Benefits of Communities of Practice][7] - -_Figure 1: Benefits of communities of practice. Courtesy of Tracy Buckner. CC BY-SA._ - -[Étienne Wenger][8], an educational theorist and proponent of communities of practice, said that learning doesn't only occur through a master; it also happens among apprentices. Communities of practice foster learning by connecting apprentices, while encouraging collaboration and offering an opportunity for creative problem-solving and innovation. - -In the final article of this series, I'll explain how you can reap these benefits by creating your own community of practice. - --------------------------------------------------------------------------------- - -via: https://opensource.com/open-organization/20/1/why-build-community-of-practice - -作者:[Tracy Buckner][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/tracyb -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/BUSINESS_community2.png?itok=1blC7-NY (Lots of people in a crowd.) -[2]: https://opensource.com/open-organization/19/11/what-is-community-practice -[3]: https://opensource.com/open-organization/resources/open-org-definition -[4]: https://www.organisationalmastery.com/category/learning-organisation/ -[5]: https://www.mycustomer.com/experience/engagement/the-stats-that-prove-silos-are-your-biggest-cx-challenge -[6]: https://www.researchgate.net/profile/Ferry_Koster/publication/313659568_Inter-organizational_cooperation_and_organizational_innovativeness_A_comparative_study/links/59e64d510f7e9b13aca3c224/Inter-organizational-cooperation-and-organizational-innovativeness-A-comparative-study.pdf -[7]: https://opensource.com/sites/default/files/images/open-org/cop_benefits.png (Benefits of Communities of Practice) -[8]: https://en.wikipedia.org/wiki/%C3%89tienne_Wenger diff --git a/sources/talk/20200115 Instant, secure ‘teleportation- of data in the works.md b/sources/talk/20200115 Instant, secure ‘teleportation- of data in the works.md deleted file mode 100644 index d314baba66..0000000000 --- a/sources/talk/20200115 Instant, secure ‘teleportation- of data in the works.md +++ /dev/null @@ -1,68 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Instant, secure ‘teleportation’ of data in the works) -[#]: via: (https://www.networkworld.com/article/3512037/instant-secure-teleportation-of-data-in-the-works.html) -[#]: author: (Patrick Nelson https://www.networkworld.com/author/Patrick-Nelson/) - -Instant, secure ‘teleportation’ of data in the works -====== -Quantum teleportation, where information is sent instantaneously, will secure the Internet, researchers say. Scientists are making progress. -Thinkstock - -Sending information instantly between two computer chips using quantum teleportation has been accomplished reliably for the first time, according to scientists from the University of Bristol, in collaboration with the Technical University of Denmark (DTU). Data was exchanged without any electrical or physical connection – a transmission method that may influence the next generation of ultra-secure data networks. - -Teleportation involves the moving of information instantaneously and securely. In the “Star Trek” series, fictional people move immediately from one place to another via teleportation. In the University of Bristol experiment, data is passed instantly via a single quantum state across two chips using light particles, or photons. Importantly, each of the two chips knows the characteristics of the other, because they’re entangled through quantum physics, meaning they therefore share a single physics-based state. - -The researchers involved in these successful silicon tests said they built the photon-based silicon chips in a lab and then used them to encode the quantum information in single particles. It was “a high-quality entanglement link across two chips, where photons on either chip share a single quantum state,” said Dan Llewellyn of University of Bristol in a [press release][1]. - -[][2] - -BrandPost Sponsored by HPE - -[Take the Intelligent Route with Consumption-Based Storage][2] - -Combine the agility and economics of HPE storage with HPE GreenLake and run your IT department with efficiency. - -“These chips are able to encode quantum information in light generated inside the circuits and can process the quantum information,” the school stated. It claims a successful quantum teleportation of 91%, which is considered high quality. - -### Entanglement boosts data transmission - -Entanglement links to be used in data transmission are where information is conjoined, or entangled, so that the start of a link has the same state as the end of a link. The particles, and thus data, are at the beginning of the link and at the end of the link at the same time. - -The physics principle holds promise for data transmissions, in part because intrusion is easily seen; interference by a bad actor becomes obvious if the beginning state of the link and the end state are no longer the same. In other words, any change in one element means a change in the other, and that can be over distance, too. Additionally, the technique allows leaks to be stopped: Instant key destruction can occur at the actual moment of attempted interference. - -“Particles can be in two places at the same time, and they can even be entangled with twin particles, so that they can feel everything that happens to each other,” explained Jonas Schou Neergaard-Nielsen, a senior researcher at DTU, [in a 2015 story][3] about the university’s earlier teleportation exploration. “At the sub-microscopic level, where quantum mechanics rule, you find a completely different logic to what we are used to in our macroscopic reality,” Schou Neergaard-Nielsen said back in 2015. - -[[Get regularly scheduled insights by signing up for Network World newsletters.]][4] - -### Quantum chips gain momentum - -In the bigger picture, the area of quantum-based microprocessors is gaining momentum. It is thought, for example, that quantum-embedded chips could ultimately secure the internet of things. IoT security vendor Crypto Quantique has said that quantum chips could be made unclonable. Its solution uses a quantum method of [creating totally random keys][5] from the measurement of low currents on the silicon. It’s related to how electrons can leak through transistor gates. “Unforgeable hardware trust anchors [are] generated by the device,” Crypto Quantique explains on its website. “Our technology offers true randomness.” - -A secure quantum computing environment overall could have “profound impacts on modern society,” the University of Bristol said. And with the introduction of entangled physics states across networks, a highly secured “quantum internet could ultimately protect the world’s information from malicious attacks.” - -Join the Network World communities on [Facebook][6] and [LinkedIn][7] to comment on topics that are top of mind. - --------------------------------------------------------------------------------- - -via: https://www.networkworld.com/article/3512037/instant-secure-teleportation-of-data-in-the-works.html - -作者:[Patrick Nelson][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://www.networkworld.com/author/Patrick-Nelson/ -[b]: https://github.com/lujun9972 -[1]: https://www.bristol.ac.uk/news/2019/december/quantum-teleportation.html -[2]: https://www.networkworld.com/article/3440100/take-the-intelligent-route-with-consumption-based-storage.html?utm_source=IDG&utm_medium=promotions&utm_campaign=HPE21620&utm_content=sidebar ( Take the Intelligent Route with Consumption-Based Storage) -[3]: https://www.dtu.dk/english/news/2015/01/dtu-physics-researchers-developing-tomorrows-teleportation?id=ece937e9-1402-437a-8f57-cc3124563bc8 -[4]: https://www.networkworld.com/newsletters/signup.html -[5]: mailto:https://www.networkworld.com/article/3333808/quantum-embedded-chips-could-secure-iot.html -[6]: https://www.facebook.com/NetworkWorld/ -[7]: https://www.linkedin.com/company/network-world diff --git a/sources/talk/20200116 4 core skills to level-up your tech career in 2020.md b/sources/talk/20200116 4 core skills to level-up your tech career in 2020.md deleted file mode 100644 index e8385910d4..0000000000 --- a/sources/talk/20200116 4 core skills to level-up your tech career in 2020.md +++ /dev/null @@ -1,160 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (4 core skills to level-up your tech career in 2020) -[#]: via: (https://opensource.com/article/20/1/core-skills-tech-career) -[#]: author: (Dawn Parzych https://opensource.com/users/dawnparzych) - -4 core skills to level-up your tech career in 2020 -====== -There is one category of skill you should focus on to advance your -career this year. Here's how. -![Two hands holding a resume with computer, clock, and desk chair ][1] - -We do a lot to level-up our careers. We learn new programming languages; we take on new projects at work; we work on side projects on the weekend; we contribute to open source communities. What if I were to tell you that, while these activities are helpful, there is one set of skills you should focus on if you truly want to advance your career. - -These skills go by many names, such as soft skills, non-technical skills, leadership skills, and people skills. Calling them soft or non-technical skills leads to the mistaken idea that they are easy. For some, these skills are incredibly difficult. Calling them leadership skills makes people think they don't need to put effort into developing them if they don't want to be a leader. - -I prefer to call them core or functional skills. These skills are part of the core of what makes us human, and it is hard to function without them. - -When we have these skills, we can: - - * Communicate with others - * Collaborate and work with others - * Solve problems - * Understand and share the feelings of others - * Use time effectively or productively - - - -These skills are part of what makes us human, and everything in software is about humans. Humans are reviewing your code. Humans are installing or using the application you are writing. - -If these skills are so essential, why do we often dismiss them in favor of more "technical" skills and give them a bad rap? This isn't about focusing on one versus the other. Both are important and relevant. - -### Mindset and biases - -Our biases and mindset contribute to the importance we place on functional skills. Bias isn't a bad thing. There are [175 biases][2] that exist to help our brains combat four problems: - - * We have too much information to process. - * There's not enough meaning in the information we receive. - * There's not enough time to process information. - * We can't remember everything. Our memory is finite. - - - -One bias that sneaks in when it comes to assessing our skills is the Dunning-Kruger effect. We mistakenly assess our abilities as more exceptional than they are, which comes from an inability to recognize our own faults. You may think you know what you are doing when you don't because of the Dunning-Kruger effect. You think you are managing your time effectively, but in reality, you are working nights and weekends to get caught up. Yes, the work is getting completed, but at what cost? Working non-stop can lead to burnout or a decline in health. - -Another factor is your [mindset][3]. Do you have a growth mindset or a fixed mindset when it comes to learning a new skill? People with a fixed mindset believe that abilities are innate and can't be improved. Those with a growth mindset believe there is room for improvement, and you can improve any skill with practice. - -These statements reflect a fixed mindset: - - * "I'm just not a people person." - * "They're a natural-born leader." - - - -You're not born with the ability to speak or write. You learn these skills over time. The same goes for the core and functional skills important for developers. - -### Communication - -> "Over time I've learned the biggest source of failure is often due to people and teams. A lack of communication and coordination can cause serious problems." -> — Laurie Barth, [_How architecture improved my coding skills_][4] - -Communication includes verbal, non-verbal, and written communication. Failures along any of these can cause serious problems. Communication failures in tech look like: - - * Delays in resolving incidents - * Redesigning a feature - * Scope creep - * Lack of meaningful comments on pull requests (PRs)—these can be especially impactful to junior engineers - * Unnecessary conflicts and lack of alignment - * Delivering above or below expectations - - - -Cultural norms and personal preferences impact communication. Everybody has a preferred method of communicating, whether that is via email, face-to-face, Slack messages, phone, text, etc. Think about the cultural norms regarding communication in your workplace. Do they match your preferred method of communicating? If there is a mismatch, problems may arise. - -If you're a manager, do you know your direct reports' preferred communication style, or do you just utilize your preferred method? If a direct report prefers email so they can have some time to think before responding and you prefer face-to-face communication, a quick Slack message asking them to come to your office can cause unnecessary anxiety. - -### Empathy - -> "Empathy is much harder than we think… But to build empathy we need to slow down." -> —Andrew Tenzer and Ian Murray, [_The empathy delusion_][5] - -Empathy is one of the most important skills you can learn. Empathy is our ability to understand and share the feelings of others. We feel more connected to one another because of empathy. - -There are four attributes of empathy: - - * Seeing another person's perspective - * Being non-judgmental - * Recognizing emotions in other people - * Communicating your understanding of another person's feelings - - - -Communication and empathy are closely tied. To communicate effectively, you need to listen. To listen effectively, you need empathy. Instead of listening to what a colleague is saying, we usually think about how to best respond. As the adage goes, you have two ears and one mouth for a reason; you should be listening twice as often as you speak. - -When you show empathy towards another person, you are not minimizing their thoughts, feelings, or experiences. Instead of using comments like "it could be worse" or "at least…" use phrases like "that sounds horrible," "I can't imagine how you must feel," or "I'm here for you, how can I help?" - -### Get ready to level-up - -Improving on a skill takes time, but we often give up while we are learning once [impostor syndrome][6] kicks in. It takes years of practice to perfect something, and even with years of practice, you won't be perfect. You will make mistakes. When learning a new skill or improving on an existing skill, mastery—not perfection—should be the goal. Perfection implies there is no room for improvement; mastery indicates learning a skill is an ongoing journey, and there is room to improve. - -You don't want to be a perfect communicator. You want to be a master communicator. Even the most experienced public speakers make mistakes. If you aim for perfection, you will be disappointed. - -To improve a skill, you need to schedule time to practice. But not just any type of practice; to master a skill, use deliberate practice. Deliberate practice has five main components: - - 1. Create a specific goal. - 2. Break the goal down into small steps. - 3. Get feedback from a master. - 4. Step out of your comfort zone. - 5. Stay motivated. - - - -To illustrate this process, say you have a goal of presenting at a conference, but you aren't a confident public speaker. What are some small steps you can take to practice? - - * Identify and reduce the use of filler words like "um," "ah," or "you know." - * Make eye contact when speaking with others or let people know why you don't. - * Control mannerisms like fidgeting with your hands or nodding your head while talking. - * Incorporate appropriate pauses. - - - -Feedback is a necessary part of practicing. Seek out others to provide you with feedback. A great way to step out of your comfort zone and get feedback from master public speakers is to sign up for Toastmasters. This can also help you stay motivated as you work through the speeches towards becoming a Distinguished Toastmaster. - -You can apply this same process to any skill you are looking to master. - -### Where to learn more - -If you want to learn more about empathy and communication so you can level up your career, check out these resources: - - * [Communicating with empathy][7] course by Sharon Steed - * [_Deliberate practice: Your pathway to growth and mastery_][8] by Habits at Work - * [_Want to be more empathetic? Avoid these 7 responses_][9] by Laura Click - - - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/1/core-skills-tech-career - -作者:[Dawn Parzych][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/dawnparzych -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/resume_career_document_general.png?itok=JEaFL2XI (Two hands holding a resume with computer, clock, and desk chair ) -[2]: https://medium.com/better-humans/cognitive-bias-cheat-sheet-55a472476b18 -[3]: https://www.penguinrandomhouse.com/books/44330/mindset-by-carol-s-dweck-phd/ -[4]: https://dev.to/laurieontech/how-architecture-improved-my-coding-skills-21e -[5]: https://www.reachsolutions.co.uk/sites/default/files/2019-07/Reach%20Solutions%20The%20Empathy%20Delusion%20V2.pdf -[6]: https://en.wikipedia.org/wiki/Impostor_syndrome -[7]: https://www.lynda.com/Business-Skills-tutorials/Communicating-Empathy/534584-2.html -[8]: https://habitsatwork.com/blog/deliberate-practice -[9]: https://medium.com/@lauraclick/want-to-be-more-empathetic-avoid-these-7-responses-21bb52d5d2ad diff --git a/sources/talk/20200116 Google Cloud launches Archive cold storage service.md b/sources/talk/20200116 Google Cloud launches Archive cold storage service.md deleted file mode 100644 index cd395aafb5..0000000000 --- a/sources/talk/20200116 Google Cloud launches Archive cold storage service.md +++ /dev/null @@ -1,73 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Google Cloud launches Archive cold storage service) -[#]: via: (https://www.networkworld.com/article/3513903/google-cloud-launches-archive-cold-storage-service.html) -[#]: author: (Andy Patrizio https://www.networkworld.com/author/Andy-Patrizio/) - -Google Cloud launches Archive cold storage service -====== -Archive will focus on long-term data retention and compete against AWS Glacier, Microsoft Cool Blob Storage, and IBM Cloud Storage. -Google - -Google Cloud announced the general availability of Archive, a long-term data retention service intended as an alternative to on-premises tape backup. - -Google pitches it as cold storage, meaning it is for data which is accessed less than once a year and has been stored for many years. Cold storage data is usually consigned to tape backup, which remains a [surprisingly successful][1] market despite repeated predictions of its demise. - -Of course, Google's competition has their own products. Amazon Web Services has Glacier, Microsoft has Cool Blob Storage, and IBM has Cloud Storage. Google also offers its own Coldline and Nearline cloud storage offerings; Coldline is designed for data a business expects to touch less than once a quarter, while Nearline is aimed at data that requires access less than once a month. - -[][2] - -BrandPost Sponsored by HPE - -[Take the Intelligent Route with Consumption-Based Storage][2] - -Combine the agility and economics of HPE storage with HPE GreenLake and run your IT department with efficiency. - -With Archive, Google highlights a few differentiators from the competition and its own archival offerings. First, Google promises no delay on data retrieval, claiming millisecond latency. AWS can take minutes or hours. While Archive costs a little more than AWS and Azure – $1.23 per terabyte per month vs. $1 per terabyte per month for AWS and Azure – that’s due in part to the longer remit for an early deletion charge. Google offers 365 days compared with 180 days for AWS and Azure. - -"Having flexible storage options allows you to optimize your total cost of ownership while meeting your business needs," [wrote][3] Geoffrey Noer, Google Cloud storage product manager in a blog post announcing the service’s availability. "At Google Cloud, we think that you should have a range of straightforward storage options that allow you to more securely and reliably access your data when and where you need it, without performance bottlenecks or delays to your users." - -Archive is a store-and-forget service, where you keep stuff only because you have to. Tape replacement and archiving data under regulatory retention requirements are two of the most common use cases, according to Google. Other examples include long-term backups and original master copies of videos and images. - -The Archive class can also be combined with [Bucket Lock][4], Google Cloud’s data locking mechanism to prevent data from being modified, which is available to enterprises for meeting various data retention laws, according to Noer. - - * [Backup vs. archive: Why it’s important to know the difference][5] - * [How to pick an off-site data-backup method][6] - * [Tape vs. disk storage: Why isn’t tape dead yet?][7] - * [The correct levels of backup save time, bandwidth, space][8] - - - -The Archive class can be set up in dual-regions or multi-regions for geo-redundancy and offers checksum verification durability of "11 nines" – 99.999999999 percent. - -More information can be found [here][9]. - -Join the Network World communities on [Facebook][10] and [LinkedIn][11] to comment on topics that are top of mind. - --------------------------------------------------------------------------------- - -via: https://www.networkworld.com/article/3513903/google-cloud-launches-archive-cold-storage-service.html - -作者:[Andy Patrizio][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://www.networkworld.com/author/Andy-Patrizio/ -[b]: https://github.com/lujun9972 -[1]: https://www.networkworld.com/article/3263452/theres-still-a-lot-of-life-left-in-tape-backup.html -[2]: https://www.networkworld.com/article/3440100/take-the-intelligent-route-with-consumption-based-storage.html?utm_source=IDG&utm_medium=promotions&utm_campaign=HPE21620&utm_content=sidebar ( Take the Intelligent Route with Consumption-Based Storage) -[3]: https://cloud.google.com/blog/products/storage-data-transfer/archive-storage-class-for-coldest-data-now-available -[4]: https://cloud.google.com/storage/docs/bucket-lock -[5]: https://www.networkworld.com/article/3285652/storage/backup-vs-archive-why-its-important-to-know-the-difference.html -[6]: https://www.networkworld.com/article/3328488/backup-systems-and-services/how-to-pick-an-off-site-data-backup-method.html -[7]: https://www.networkworld.com/article/3315156/storage/tape-vs-disk-storage-why-isnt-tape-dead-yet.html -[8]: https://www.networkworld.com/article/3302804/storage/the-correct-levels-of-backup-save-time-bandwidth-space.html -[9]: https://cloud.google.com/blog/products/storage-data-transfer/whats-cooler-than-being-cool-ice-cold-archive-storage -[10]: https://www.facebook.com/NetworkWorld/ -[11]: https://www.linkedin.com/company/network-world diff --git a/sources/talk/20200117 Insights into Why Hyperbola GNU-Linux is Turning into Hyperbola BSD.md b/sources/talk/20200117 Insights into Why Hyperbola GNU-Linux is Turning into Hyperbola BSD.md deleted file mode 100644 index 68ede9acfa..0000000000 --- a/sources/talk/20200117 Insights into Why Hyperbola GNU-Linux is Turning into Hyperbola BSD.md +++ /dev/null @@ -1,174 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Insights into Why Hyperbola GNU/Linux is Turning into Hyperbola BSD) -[#]: via: (https://itsfoss.com/hyperbola-linux-bsd/) -[#]: author: (John Paul https://itsfoss.com/author/john/) - -Insights into Why Hyperbola GNU/Linux is Turning into Hyperbola BSD -====== - -In late December 2019, [Hyperbola][1] [announced][2] that they would be making major changes to their project. They have decided to drop the Linux kernel in favor of forking the OpenBSD kernel. This announcement only came months after Project Trident [announced][3] that they were going in the opposite direction (from BSD to Linux). - -Hyperbola also plans to replace all software that is not GPL v3 compliant with new versions that are. - -To get more insight into the future of their new project, I interviewed **Andre, co-founder of Hyperbola**. - -### Why Hyperbola GNU/Linux Turned into Hyperbola BSD - -![][4] - -_**It’s FOSS: In your announcement, you state that the Linux kernel is “rapidly proceeding down an unstable path”. Could you explain what you mean by that?**_ - -**Andre:** First of all, it’s including the adaption of DRM features such as [HDCP][5] (High-bandwidth Digital Content Protection). Currently there is an option to disable it at build time, however there isn’t a policy that guarantees us that it will be optional forever. - -Historically, some features began as optional ones until they reached total functionality. Then they became forced and difficult to patch out. Even if this does not happen in the case of HDCP, we remain cautious about such implementations. - -Another of the reasons is that the _**Linux kernel is no longer getting proper hardening**_. [Grsecurity][6] stopped offering public patches several years ago, and we depended on that for our system’s security. Although we could use their patches still for a very expensive subscription, the subscription would be terminated if we chose to make those patches public. - -Such restrictions goes against the FSDG principles that require us to provide full source code, deblobbed, and unrestricted, to our users. - -KSPP is a project that was intended to upstream Grsec into the kernel, but thus far it has not come close to reaching Grsec / PaX level of kernel hardening. There also has not been many recent developments, which leads us to believe it is now an inactive project for the most part. - -Lastly, the interest in [allowing Rust modules][7] into the kernel are a problem for us, due to Rust trademark restrictions which prevent us from applying patches in our distribution without express permission. We patch to remove non-free software, unlicensed files, and enhancements to user-privacy anywhere it is applicable. We also expect our users to be able to re-use our code without any additional restrictions or permission required. - -This is also in part why we use UXP, a fully free browser engine and application toolkit without Rust, for our mail and browser applications. - -Due to these restrictions, and the concern that it may at some point become a forced build-time dependency for the kernel we needed another option. - -_**It’s FOSS: You also said in the announcement that you would be forking the OpenBSD kernel. Why did you pick the OpenBSD kennel over the FreeBSD, the DragonflyBSD kernel or the MidnightBSD kernel?**_ - -**Andre:** [OpenBSD][8] was chosen as our base for hard-forking because it’s a system that has always had quality code and security in mind. - -Some of their ideas which greatly interested us were new system calls, including pledge and unveil which adds additional hardening to userspace and the removal of the systrace system policy-enforcement tool. - -They also are known for [Xenocara][9] and [LibreSSL][10], both of which we had already been using after porting them to [GNU/Linux-libre][11]. We found them to be well written and generally more stable than Xorg/OpenSSL respectively. - -None of the other BSD implementations we are aware of have that level of security. We also were aware [LibertyBSD][12] has been working on liberating the OpenBSD kernel, which allowed us to use their patches to begin the initial development. - -_**It’s FOSS: Why fork the kernel in the first place? How will you keep the new kernel up-to-date with newer hardware support?**_ - -**Andre:** The kernel is one of the most important parts of any operating system, and we felt it is critical to start on a firm foundation moving forward. - -For the first version we plan to keep in synchronization with OpenBSD where it is possible. In future versions we may adapt code from other BSDs and even the Linux kernel where needed to keep up with hardware support and features. - -We are working in coordination with [Libreware Group][13] (our representative for business activities) and have plans to open our foundation soon. - -This will help to sustain development, hire future developers and encourage new enthusiasts for newer hardware support and code. We know that deblobbing isn’t enough because it’s a mitigation, not a solution for us. So, for that reason, we need to improve our structure and go to the next stage of development for our projects. - -_**It’s FOSS: You state that you plan to replace the parts of the OpenBSD kernel and userspace that are not GPL compatible or non-free with those that are. What percentage of the code falls into the non-GPL zone?**_ - -**Andre:** It’s around 20% in the OpenBSD kernel and userspace. - -Mostly, the non-GPL compatible licensed parts are under the Original BSD license, sometimes called the “4-clause BSD license” that contains a serious flaw: the “obnoxious BSD advertising clause”. It isn’t fatal, but it does cause practical problems for us because it generates incompatibility with our code and future development under GPLv3 and LGPLv3. - -The non-free files in OpenBSD include files without an appropriate license header, or without a license in the folder containing a particular component. - -If those files don’t contain a license to give users the four essential freedoms or if it has not been explicitly added in the public domain, it isn’t free software. Some developers think that code without a license is automatically in the public domain. That isn’t true under today’s copyright law; rather, all copyrightable works are copyrighted by default. - -The non-free firmware blobs in OpenBSD include various hardware firmwares. These firmware blobs occur in Linux kernel also and have been manually removed by the Linux-libre project for years following each new kernel release. - -They are typically in the form of a hex encoded binary and are provided to kernel developers without source in order to provide support for proprietary-designed hardware. These blobs may contain vulnerabilities or backdoors in addition to violating your freedom, but no one would know since the source code is not available for them. They must be removed to respect user freedom. - -_**It’s FOSS: I was talking with someone about HyperbolaBSD and they mentioned [HardenedBSD][14]. Have you considered HardenedBSD?**_ - -**Andre:** We had looked into HardenedBSD, but it was forked from FreeBSD. FreeBSD has a much larger codebase. While HardenedBSD is likely a good project, it would require much more effort for us to deblob and verify licenses of all files. - -We decided to use OpenBSD as a base to fork from instead of FreeBSD due to their past commitment to code quality, security, and minimalism. - -_**It’s FOSS: You mentioned UXP (or [Unified XUL Platform][15]). It appears that you are using [Moonchild’s fork of the pre-Servo Mozilla codebase][16] to create a suite of applications for the web. Is that about the size of it?**_ - -**Andre:** Yes. Our decision to use UXP was for several reasons. We were already rebranding Firefox as Iceweasel for several years to remove DRM, disable telemetry, and apply preset privacy options. However, it became harder and harder for us to maintain when Mozilla kept adding anti-features, removing user customization, and rapidly breaking our rebranding and privacy patches. - -After FF52, all XUL extensions were removed in favor of WebExt and Rust became enforced at compile time. We maintain several XUL addons to enhance user-privacy/security which would no longer work in the new engine. We also were concerned that the feature limited WebExt addons were introducing additional privacy issues. E.g. each installed WebExt addon contains a UUID which can be used to uniquely and precisely identify users (see [Bugzilla 1372288][17]). - -After some research, we discovered UXP and that it was regularly keeping up with security fixes without rushing to implement new features. They had already disabled telemetry in the toolkit and remain committed to deleting all of it from the codebase. - -We knew this was well-aligned with our goals, but still needed to apply a few patches to tweak privacy settings and remove DRM. Hence, we started creating our own applications on top of the toolkit. - -This has allowed us to go far beyond basic rebranding/deblobbing as we were doing before and create our own fully customized XUL applications. We currently maintain [Iceweasel-UXP][18], [Icedove-UXP][19] and [Iceape-UXP][20] in addition to sharing toolkit improvements back to UXP. - -_**It’s FOSS: In a [forum post][21], I noticed mentions of HyperRC, HyperBLibC, and hyperman. Are these forks or rewrites of current BSD tools to be GPL compliant?**_ - -**Andre:** They are forks of existing projects. - -Hyperman is a fork of our current package manager, pacman. As pacman does not currently work on BSD, and the minimal support it had in the past was removed in recent versions, a fork was required. Hyperman already has a working implementation using LibreSSL and BSD support. - -HyperRC will be a patched version of OpenRC init. HyperBLibC will be a fork from BSD LibC. - -_**It’s FOSS: Since the beginning of time, Linux has championed the GPL license and BSD has championed the BSD license. Now, you are working to create a BSD that is GPL licensed. How would you respond to those in the BSD community who don’t agree with this move?**_ - -**Andre:** We are aware that there are disagreements between the GPL and BSD world. There are even disagreements over calling our previous distribution “GNU/Linux” rather than simply “Linux”, since the latter definition ignores that the GNU userspace was created in 1984, several years prior to the Linux kernel being created by Linus Torvalds. It was the two different software combined that make a complete system. - -Some of the primary differences from BSD, is that the GPL requires that our source code must be made public, including future versions, and that it can only be used in tandem with compatibly licensed files. BSD systems do not have to share their source code publicly, and may bundle themselves with various licenses and non-free software without restriction. - -Since we are strong supporters of the Free Software Movement and wish that our future code remain in the public space always, we chose the GPL. - -_**It’s FOSS: I know at this point you are just starting the process, but do you have any idea who you might have a usable version of HyperbolaBSD available?**_ - -**Andre:** We expect to have an alpha release ready by 2021 (Q3) for initial testing. - -_**It’s FOSS: How long will you continue to support the current Linux version of Hyperbola? Will it be easy for current users to switch over to**_? - -**Andre:** As per our announcement, we will continue to support Hyperbola GNU/Linux-libre until 2022 (Q4). We expect there to be some difficulty in migration due to ABI changes, but will prepare an announcement and information on our wiki once it is ready. - -_**It’s FOSS: If someone is interested in helping you work on HyperbolaBSD, how can they go about doing that? What kind of expertise would you be looking for?**_ - -**Andre:** Anyone who is interested and able to learn is welcome. We need C programmers and users who are interested in improving security and privacy in software. Developers need to follow the FSDG principles of free software development, as well as the YAGNI principle which means we will implement new features only as we need them. - -Users can fork our git repository and submit patches to us for inclusion. - -_**It’s FOSS: Do you have any plans to support ZFS? What filesystems will you support?**_ - -**Andre:** [ZFS][22] support is not currently planned, because it uses the Common Development and Distribution License, version 1.0 (CDDL). This license is incompatible with all versions of the GNU General Public License (GPL). - -It would be possible to write new code under GPLv3 and release it under a new name (eg. HyperZFS), however there is no official decision to include ZFS compatibility code in HyperbolaBSD at this time. - -We have plans on porting BTRFS, JFS2, NetBSD’s CHFS, DragonFlyBSD’s HAMMER/HAMMER2 and the Linux kernel’s JFFS2, all of which have licenses compatible with GPLv3. Long term, we may also support Ext4, F2FS, ReiserFS and Reiser4, but they will need to be rewritten due to being licensed exclusively under GPLv2, which does not allow use with GPLv3. All of these file systems will require development and stability testing, so they will be in later HyperbolaBSD releases and not for our initial stable version(s). - -* * * - -I would like to thank Andre for taking the time to answer my questions and for revealing more about the future of HyperbolaBSD. - -What are your thoughts on Hyperbola switching to a BSD kernel? What do you think about a BSD being released under the GPL? Please let us know in the comments below. - -If you found this article interesting, please take a minute to share it on social media, Hacker News or [Reddit][23]. - --------------------------------------------------------------------------------- - -via: https://itsfoss.com/hyperbola-linux-bsd/ - -作者:[John Paul][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://itsfoss.com/author/john/ -[b]: https://github.com/lujun9972 -[1]: https://www.hyperbola.info/ -[2]: https://www.hyperbola.info/news/announcing-hyperbolabsd-roadmap/ -[3]: https://itsfoss.com/bsd-project-trident-linux/ -[4]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/01/hyperbola_linux_bsd.png?ssl=1 -[5]: https://patchwork.kernel.org/patch/10084131/ -[6]: https://grsecurity.net/ -[7]: https://lwn.net/Articles/797828/ -[8]: https://www.openbsd.org/ -[9]: https://www.xenocara.org/ -[10]: https://www.libressl.org/ -[11]: https://en.wikipedia.org/wiki/Linux-libre -[12]: https://libertybsd.net/ -[13]: https://en.libreware.info/ -[14]: https://hardenedbsd.org/ -[15]: http://thereisonlyxul.org/ -[16]: https://github.com/MoonchildProductions/UXP -[17]: https://bugzilla.mozilla.org/show_bug.cgi?id=1372288 -[18]: https://wiki.hyperbola.info/doku.php?id=en:project:iceweasel-uxp -[19]: https://wiki.hyperbola.info/doku.php?id=en:project:icedove-uxp -[20]: https://wiki.hyperbola.info/doku.php?id=en:project:iceape-uxp -[21]: https://forums.hyperbola.info/viewtopic.php?id=315 -[22]: https://itsfoss.com/what-is-zfs/ -[23]: https://reddit.com/r/linuxusersgroup diff --git a/sources/talk/20200118 7 things I learned from starting an open source project.md b/sources/talk/20200118 7 things I learned from starting an open source project.md deleted file mode 100644 index 4742064f15..0000000000 --- a/sources/talk/20200118 7 things I learned from starting an open source project.md +++ /dev/null @@ -1,97 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (7 things I learned from starting an open source project) -[#]: via: (https://opensource.com/article/20/1/open-source-project) -[#]: author: (Mike Bursell https://opensource.com/users/mikecamel) - -7 things I learned from starting an open source project -====== -It's not really about project mechanics at all. -![Stickers from all different open source projects and communities][1] - -I'm currently involved—heavily involved—in [Enarx][2], an open source (of course!) project to support running sensitive workloads on untrusted hosts. I've had involvement in various open source projects over the years, but this is the first for which I'm one of the founders. We're at the stage now where we've got a fair amount of code, quite a lot of documentation, a logo, and (important!) stickers. The project will hopefully be included in a Linux Foundation group—the [Confidential Computing Consortium][3]—so things are going very well indeed. - -I thought it might be useful to reflect on some of the things we did to get things going. To be clear, Enarx is a particular type of project, one that we believe has commercial and enterprise applications. It's also not mature yet, and we'll have hurdles and challenges along the way. What's more, the route we've taken won't be right for all projects, but hopefully, there's enough here to give a few pointers to other projects or people considering starting one up. - -The first thing I'd say is that there's lots of help to be had out there. I'd start with Opensource.com, where you'll find [lots of guidance][4]. I'll follow up by saying that, however much of it you follow, you'll still get things wrong. That said, here's my list of things to consider when starting an open source project. - -### 1\. Aim for critical mass - -I'm very lucky to work at the amazing [Red Hat][5], where everything we do is open source and where we take open source and community very seriously. I've heard it called a "critical mass" company—in order to get something taken seriously, you need to get enough people interested in it that it's difficult to ignore. Enarx's two co-founders—Nathaniel McCallum and I—are both very enthusiastic about the project and have spent a lot of time gaining sponsors within the organisation (you know who you are, and we thank you—we also know we haven't done a good enough job with you on all occasions!) and "selling" it to engineers to get them interested enough that it was difficult to stop. - -Some projects just bobble along with one or two contributors, but if you want to attract people and attention, getting a good set of people together who can get momentum going is a must. - -### 2\. Create a demo - -If you want to get people involved, a demo is great. It doesn't necessarily need to be polished, but it does need to show that what you're doing is possible and that you know what you're doing. For early demos, you may be talking about command-line output; that's fine if what you're providing isn't a user interface (UI) product. Being able to talk about what you're doing and convey both your passion and the importance of the project is a great boon. People like to be able to _see_ or _experience_ something, and it's much easier to communicate your enthusiasm if they have something real that expresses that. - -### 3\. Choose a license - -Once you have code and it's open source, you want other people to be able to contribute. This may seem like an unimportant step, but selecting an appropriate open source licence[1][6] will allow other people to contribute on well-understood and defined terms, making it easier for them to be involved—and for the organisations for which they work to allow them to do so. - -### 4\. Get documentation - -You might think that developer documentation is the most important to get out there—otherwise, how will other people get involved in coding? I disagree, at least to start with. For a small project, you can probably scale to a few more people just by explaining what the code does, what it should do, and what's missing. However, if there's no documentation available to explain what it's for and how it's going to help people, then why would anyone bother even looking at it? - -This doesn't need to be polished marketing copy, and it doesn't need to be serious, but it does need to convey to people why they should care. It's also going to help you with the first point I mentioned, attaining critical mass, as being able to point to documentation, use cases, and the rest will help convince people that you've thought through the _point_ of your project. We've used a GitHub wiki as our main documentation hub, and we try to update it with new information as we generate it. This is an area, to be clear, where we could do better. But at least we know that. - -### 5\. Be visible - -People aren't going to find out about you unless you're visible. We were incredibly lucky in that the Confidential Computing Consortium was formed just as we were beginning to get to a level of critical mass, and we immediately had a platform to increase our exposure. We have a [Twitter account][7], I publish articles on [my blog][8], and at Opensource.com, we've been lucky enough to have the chance to publish on Red Hat's [now + Next][9] blog, I've done interviews with the press, and we speak at conferences wherever and whenever we can. - -We're very lucky to have these opportunities, and it's clear that not all these approaches are appropriate for all projects, but make use of what you can: the more that people know about you, the more people can contribute. - -### 6\. Be welcoming - -Let's assume that people have found out about you: what's next? Well, they're hopefully going to want to get involved. If they don't feel welcome, then any involvement they have will taper off quickly. Yes, you need documentation (and, after a while, technical documentation, no matter what I said above), but you also need ways for contributors to talk to you and for them to feel that they are valued. We have [Gitter channels][10], and our daily standups are open to anyone who wants to join. Recently, someone opened an issue on our [issues database][11], and during the conversation on that thread, it transpired that our daily standup time doesn't work for them (given their time zone), so we're going to ensure that at least once a week it _does_, and we've assured them that we'll accommodate them. - -### 7\. Work with people you like - -I really, really enjoy meeting and working with the members of the Enarx project team. We get on well, we joke, we laugh, and we share a common aim: to make Enarx successful. I'm a firm believer in doing things you enjoy, where possible. Particularly in the early stages of a project, you need people who are enthusiastic and enjoy working closely together—even if they're geographically separated by thousands of kilometres.[2][12] If they don't get on, there's a decent chance that your and their enthusiasm for the project will falter, that the momentum will be lost, and that the project will end up failing. You won't always get the chance to choose those with whom you work, but if you can, then choose people you like and get on with. - -### Conclusion: People - -I didn't realise it when I started writing this article, but it's not really about project mechanics at all: it's about people. If you read back, you'll find the importance of people visible in every tip, even the one about choosing a license. Open source projects aren't really about code: they're about people, how they share, how they work together, and how they interact. - -I'm certain that your experience of open source projects will vary, and I'd be very surprised if everyone agrees about the top seven things you should do for project success. Arguably, Enarx _isn't_ a success yet, and I shouldn't be giving advice at this stage of our maturity. But when I think back to all of the open source projects that I can think of that _are_ successful, people feature strongly, and I don't think that's a surprise at all. - -* * * - - 1. Or "license," if you're from the US. - 2. Or, in fact, miles. - - - -* * * - -_This article originally appeared on [Alice, Eve, and Bob – a security blog][13] and is republished with permission._ - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/1/open-source-project - -作者:[Mike Bursell][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/mikecamel -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/stickers-osdc-lead.png?itok=2RNn132b (Stickers from all different open source projects and communities) -[2]: https://enarx.io/ -[3]: https://confidentialcomputing.io/ -[4]: https://opensource.com/article/20/1/getting-started-open-source -[5]: https://redhat.com/ -[6]: tmp.3liT27tUaE#1 -[7]: https://twitter.com/enarxproject -[8]: https://aliceevebob.com/ -[9]: https://next.redhat.com/ -[10]: https://gitter.im/enarx/ -[11]: https://github.com/enarx/enarx/issues -[12]: tmp.3liT27tUaE#2 -[13]: https://aliceevebob.com/2019/12/17/7-tips-for-kicking-off-an-open-source-project/ diff --git a/sources/talk/20200121 Beyond Moore-s Law- Neuromorphic computing.md b/sources/talk/20200121 Beyond Moore-s Law- Neuromorphic computing.md deleted file mode 100644 index cf2595c012..0000000000 --- a/sources/talk/20200121 Beyond Moore-s Law- Neuromorphic computing.md +++ /dev/null @@ -1,86 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Beyond Moore's Law: Neuromorphic computing?) -[#]: via: (https://www.networkworld.com/article/3514692/beyond-moores-law-neuromorphic-computing.html) -[#]: author: (Patrick Nelson https://www.networkworld.com/author/Patrick-Nelson/) - -Beyond Moore's Law: Neuromorphic computing? -====== -Some researchers think brain-copying architectures should replace traditional computing. One group explains how that might work. -4x-image / Getty Images - -With the conceivable exhaustion of [Moore’s Law][1] – that the number of transistors on a microchip doubles every two years – the search is on for new paths that lead to reliable incremental processing gains over time. - -One possibility is that machines inspired by how the brain works could take over, fundamentally shifting computing to a revolutionary new tier, according to an explainer study released this month by Applied Physics Reviews. - -[[Get regularly scheduled insights by signing up for Network World newsletters.]][2] - -“Today’s state-of-the-art computers process roughly as many instructions per second as an insect brain,” say [the paper’s][3] authors Jack Kendall, of Rain Neuromorphics, and Suhas Kumar, of Hewlett Packard Labs. The two write that processor architecture must now be completely re-thought if Moore’s law is to be perpetuated, and that replicating the “natural processing system of a [human] brain” is the way forward. - -[][4] - -BrandPost Sponsored by HPE - -[Take the Intelligent Route with Consumption-Based Storage][4] - -Combine the agility and economics of HPE storage with HPE GreenLake and run your IT department with efficiency. - -Deep neural networks (DNNs) should be the foundation, the group believes. A DNN is basically dynamic deep learning where layers pull high- and low-level detail features (edges and shapes, for example) from data. Kendall and Kumar explain that a human brain, which DNN copies, can sort through massive datasets and generally identify data  better than a traditional computer, so therefore it should be the starting point. - -This kind of thing is being attempted already. Existing artificial intelligence (AI) is a stab at getting computers to learn like a human brain. Much like the brain, AI engines learn from patterns in data. Algorithms are combined with processing power, and rewards are dished out when the machine gets it right. - -A brain-inspired neuromorphic computer, however, would take computing a step further, the team believes. Neuromorphic computing mimics neuro-biological architectures in a kind of hybrid digital-analog circuit, in a way like a body does biologically. - -The group says that they think there are 10 basics that need to be gotten right to get to this next level: - -**Parellelism** – Similar to how a brain works rapidly, numerous mathematical operations must be made to occur simultaneously. It’s an extension of what we see now in graphical processing units (GPUs) where large scale graphics are created using concurrent calculations called matrix multiplications. - -**In-memory computing** – It wastes resources to fetch data from remote places, and human brains, indeed, don’t do that; they store information in the same synapses that perform the thought. The introduction of electronic processing semiconductors that combine memory – [Memristors –][5] could help here. (I wrote a few weeks ago about [progress being made combining transistors with storage][6]. That combo could have similar resource advantages.) - -**Analog computing** – Numbers are analog, not digital, the authors point out. Most real-world numbers aren’t zeros and ones, so, for efficiency, any new computing architecture needs to accept that concept, adapt and handle the inherent precision problems that result. - -**Plasticity** – Real-time tuning needs to take place to account for things changing. - -**Probabilistic computing** – The authors suggest computers should get less precise, just like the human brain. Coming up with certain degrees of probability is faster than precise calculation, and it requires less information. - -**Scalability** – The depth of the network allows for complexity. By introducing more layers, one gains more scaling. - -**Sparsity** – Large-scale networks, including neural computers, can’t connect every node, just as not all neurons are connected to each other in the brain. It’s a redundancy that wastes resources. Hub-and-spoke topology works better and allows for better scaling. The same should happen in the next computers, the researchers say. - -**Learning (credit assignment)** – The adjustment of synaptic weights (the strength and amount of influence synapses have) needs attention related to new information presented. - -**Causality** – The relationship between cause and effect in a result has to be addressed. Causal interference is a problem, and machine learning generally has had problems with getting this bit right. - -**Nonlinearity** – The brain isn’t linear like a computer is. “The brain operates at the edge of chaos to produce the most optimal learning and computation,” the team says. The next computer architecture needs to encompass that brain-like nonlinearity, but also operate within linearity, like today’s electronics. - -“Our present hardware is not able to keep up,” Kendall and Kumar say in their paper, which also looks at materials. “The future of computing will not be about cramming more components on a chip but in rethinking processor architecture,” which should be neuromorphic. - -**Now see** [10 of the world's fastest supercomputers][7] - -Join the Network World communities on [Facebook][8] and [LinkedIn][9] to comment on topics that are top of mind. - --------------------------------------------------------------------------------- - -via: https://www.networkworld.com/article/3514692/beyond-moores-law-neuromorphic-computing.html - -作者:[Patrick Nelson][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://www.networkworld.com/author/Patrick-Nelson/ -[b]: https://github.com/lujun9972 -[1]: https://www.networkworld.com/article/3189051/its-time-to-dump-moores-law-to-advance-computing-researcher-says.html -[2]: https://www.networkworld.com/newsletters/signup.html -[3]: https://aip.scitation.org/doi/10.1063/1.5129306 -[4]: https://www.networkworld.com/article/3440100/take-the-intelligent-route-with-consumption-based-storage.html?utm_source=IDG&utm_medium=promotions&utm_campaign=HPE21620&utm_content=sidebar ( Take the Intelligent Route with Consumption-Based Storage) -[5]: https://www.networkworld.com/article/2931818/brain-uploads-coming-as-pcs-get-more-powerful.html -[6]: https://www.networkworld.com/article/3510638/researchers-aim-to-build-transistors-that-can-compute-and-store-information-in-one-component.html -[7]: https://www.networkworld.com/article/3236875/embargo-10-of-the-worlds-fastest-supercomputers.html -[8]: https://www.facebook.com/NetworkWorld/ -[9]: https://www.linkedin.com/company/network-world diff --git a/sources/talk/20200121 Never enough- Working openly with anxiety.md b/sources/talk/20200121 Never enough- Working openly with anxiety.md deleted file mode 100644 index 5fb89e3bc1..0000000000 --- a/sources/talk/20200121 Never enough- Working openly with anxiety.md +++ /dev/null @@ -1,93 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Never enough: Working openly with anxiety) -[#]: via: (https://opensource.com/open-organization/20/1/leading-openly-anxiety) -[#]: author: (Sam Knuth https://opensource.com/users/samfw) - -Never enough: Working openly with anxiety -====== -Open organizations reward initiative. For leaders with anxiety, that may -fuel some exhausting patterns. -![A graph of a wave.][1] - -_Editor's note: This article is part of a series on working with mental health conditions. It details the author's personal experiences and is not meant to convey professional medical advice or guidance._ - -Something in [a recent podcast interview][2] with food writer Melissa Clark caught my ear. Asked if she was a "productive person,'' Clark replied by saying: "I am an anxious person. I have a lot of anxiety, and my way of coping with it is to be very, very busy […]. That's how I deal with the world. I [pause] _do_." - -Clark's point resonated with me, because I live with multiple mental health conditions that have a fundamental impact on how I approach my work. And I believe they've played a role in the career success I've experienced. - -I have [generalized anxiety disorder][3] and [obsessive-compulsive disorder][4] (OCD). Both of these conditions have had serious impacts on my life. Some of those impacts have been disruptive. At the same time, some have contributed positively to my success and my development as a leader in a growing organization. - -I've spent most of my career in an organization built on openness and transparency, and yet I have rarely spoken about my mental health and how it might impact my work. In sharing these stories now, I hope to help reduce the [stigma of mental health at work][5] and connect with others who may be experiencing similar or related situations. Given the prevalence of [mental illness globally][6], chances are good that if you don't experience a mental health condition first hand, then you're likely working on a daily basis with someone who does. - -Learning about how mental illness manifests at work may help you navigate relationships with others as well as your own challenges. As a leader in an open organization, I feel compelled to share my experiences in the hope that they are useful to others. Working openly has specific implications for me—and, I suspect, for others with similar mental health conditions—which I'll detail in this series. - -### How it started - -My anxiety and OCD started shortly after I graduated from college and was living in New York City (though I could probably trace their histories further, this was the moment when they became apparent). The wave of confidence I rode during the dot com boom was crushed in the bubble-bursting crash in March of 2001. The memory of coming into work, being called into an all hands meeting (the first we'd ever had at my small company), and being told that as of today there was no money to make payroll, is etched into my mind. - -My girlfriend and I had just moved into a $2100-per-month apartment. Fear of not being able to pay the rent, or being otherwise swallowed up by the city, resulted in a general sense of unease and nervousness in my gut, combined with very real symptoms of OCD. - -For example, while walking to work at a temp job I took after my company folded, I would wonder if I had remembered to lock the apartment door. I would retrace the steps of my morning routine in my mind, trying to find that moment when I turned the key. If I couldn't specifically remember, the sense of unease and worry in my gut would build to the point that I couldn't think about anything else. Frequently, I would turn around, rush back home, and double check that the door was locked. When I did so, I would have to do something memorable, like repeat a phrase out loud, so that I could mark the moment in my memory. Then, back on the way to work, I would again wonder if I had locked the door, and I could say "Yes, and when you did it, you said out loud 'It's Tuesday morning and I'm locking the door!'" - -I've spent most of my career in an organization built on openness and transparency, and yet I have rarely spoken about my mental health and how it might impact my work. - -### So, how does this translate to an advantage at work? - -One of the primary factors contributing to success at my company is an ability to take initiative. Much work needs to be done, and we're in an environment of continual growth and change—which means it's not always clear _what_ needs to be done or _who_ should be doing it. That creates the opportunity for people to observe a need then step up to fill it. This is true in many open organizations, where everyone, regardless of job title or level, is encouraged to step forward. - -Living with anxiety, I continually feel like I need to be doing something, or worry that I'm not doing enough. This motivates me to seek opportunities for contributing. In other words, the anxiety makes me proactive. Being "proactive" or a "self starter" is something you'll find in the "qualifications" section of many job postings! - -I'm very fortunate to have built my career at a successful company, where continual growth creates financial incentives. One of my largest anxieties is about money—the fear of not having enough of it. Being in a leadership role at a quickly growing, profitable company exponentially multiplies what I call the anxiety performance loop (see Figure 1). A high quarterly bonus or other financial reward for a job well done is an invitation to do more, to raise the bar higher, to double down on the behaviors that seem to provide positive outcomes at work. Quarter after quarter after quarter. - -![][7] - -You can observe in all this a virtuous cycle: Opportunities I find at work satisfy my mental needs, and as a result I experience success and rewards. And this, on the face of it, is true. - -So, what's the problem? - -The anxiety-driven performance loop presents two challenges: it never ends, and it is based on a negative emotional state (fear and worry). - -Perhaps the best phrase to illustrate this would be "What have you done for me lately?" In my mental landscape, this is what everyone is thinking about me all the time. No matter what I achieve, no matter what reward or recognition I receive, I imagine that within minutes the person acknowledging my achievement is thinking, "Now, why are you still sitting there? Get out and go do some more!" - -People are not, of course, really thinking this. But my mind can locate enough truth in it to justify a quick return to the fear of not doing enough, which restarts the cycle. - -The anxiety-driven performance loop presents two challenges: it never ends, and it is based on a negative emotional state (fear and worry). - -We live in a world of short attention spans, high expectations, and significant competitive pressures. All of these are real challenges that fuel the idea that after each accomplishment we need to raise the bar higher and keep going. Having anxiety causes me to internalize these pressures, which triggers the "looping" effect. - -The result is that both my company and my career benefit. Mentally, though, I get exhausted. - -I have developed a few coping mechanisms to help me maintain balance: - - * **Mediation.** After I was first diagnosed with my conditions almost 20 years ago, I saw a therapist. After a round of sessions, the therapist referred me to a mediation center, which opened up a new world of thought for me. I've recently been working to reinvigorate my daily practice. - * **Exercise.** I'm a bit compulsive about exercise. I make time every single day for at least one hour of exercise (for me it's walking, cross country skiing, or running). - * **Self awareness, reality checks, and reminders.** Anxiety and OCD can lead to a distorted view of reality. I may overstate stakes, read too much into other people's motivations, or imagine consequences that are just not realistic. Reminding myself of the _true_ worst case scenario (which usually isn't that bad), realizing that other people have more important things to worry about than me, or reminding myself that this is "just a job" can all help bring me back to a realistic perspective. I also have a few other people who can help with this. - - - -So far I've focused primarily on the performance-enhancing aspects of anxiety. In future articles, I'll discuss some of its performance-reducing aspects, as well as the impact my condition has on my colleagues. - --------------------------------------------------------------------------------- - -via: https://opensource.com/open-organization/20/1/leading-openly-anxiety - -作者:[Sam Knuth][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/samfw -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/LIFE_wavegraph.png?itok=z4pXCf_c (A graph of a wave.) -[2]: http://www.third-story.com/listen/melissaclark -[3]: https://www.mayoclinic.org/diseases-conditions/generalized-anxiety-disorder/symptoms-causes/syc-20360803 -[4]: https://www.mayoclinic.org/diseases-conditions/obsessive-compulsive-disorder/symptoms-causes/syc-20354432 -[5]: https://www.bloomberg.com/news/articles/2019-11-13/mental-health-is-still-a-don-t-ask-don-t-tell-subject-at-work -[6]: https://ourworldindata.org/mental-health -[7]: https://opensource.com/sites/default/files/images/open-org/anxiety_performance_loop.png diff --git a/sources/talk/20200121 What you need to know about System76-s open source firmware project.md b/sources/talk/20200121 What you need to know about System76-s open source firmware project.md deleted file mode 100644 index 5e391d05c2..0000000000 --- a/sources/talk/20200121 What you need to know about System76-s open source firmware project.md +++ /dev/null @@ -1,67 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (What you need to know about System76's open source firmware project) -[#]: via: (https://opensource.com/article/20/1/system76-open-source-firmware) -[#]: author: (Don Watkins https://opensource.com/users/don-watkins) - -What you need to know about System76's open source firmware project -====== -This Q&A with System76 principal engineer Jeremy Soller discusses the -company's project for an open source embedded controller. -![Person using a laptop][1] - -When you power on your computer, there’s a lot more going on than you might think. One of the most important elements involved is the embedded controller (EC). This is what is responsible for providing abstractions for the battery, charging system, keyboard, touchpad, suspend/resume, and thermal control, among others. These controllers are typically proprietary and usually run proprietary firmware. - -System76 is about to change that paradigm. Recently, the company adopted [coreboot][2] for their Galago Pro and Darter Pro laptop models. Now they intend to extend the open source approach to the EC. There is a project associated with Chrome OS devices called [Chromium EC][3] that is open source; however, it is only available for Chromebooks and specific EC chips. System76 wanted to supply their customers with an open source embedded controller firmware, too. - -They had to start from scratch with a project that can compile for the EC architecture they have in their laptops, the [Intel 8051][4]. Their project for an [open source EC][5], the System76 EC, is a GPLv3-licensed embedded controller firmware for System76 laptops. It is designed to be portable to boards using several 8-bit microcontrollers. This project has grown to the point where it is now possible to boot a System76 Galago Pro and have the battery, keyboard, touchpad, suspend/resume, and thermal control mentioned earlier. - -Eager to learn more, I emailed [Jeremy Soller][6], who is Principal Engineer at System76, for a deeper dive. Below are some highlights from our conversation. - -### Q: What is the importance of the Intel 8051? Do all laptops use that chipset? - -A: The embedded controller in our laptops, the ITE IT8587E, uses the Intel 8051 instruction set. Not all laptops use this instruction set, but many do. This is important because we need a toolchain that can compile firmware for the 8051 instruction set, as well as firmware that is written for that toolchain. - -### Q: What is involved in writing open code to utilize the Intel 8051? - -A: Mostly we have to define the registers for utilizing hardware on the embedded controller. There are protocols like SMBus and PECI that are implemented in hardware and need drivers for them. These drivers often have to be written for each embedded controller to abstract its hardware, so there is a common interface. Our EC firmware has abstractions for some Arduinos as well as the EC in our laptops, so we can write firmware that is portable. - -### Q: Google developed an open EC. Why not fork that project? - -A: Our initial concept was to utilize Chromium EC for our open EC firmware, but this was not possible. After discussions with members of the team at Google working on it, it became clear that the firmware was not capable of being ported to 8-bit microcontrollers like the 8051 used in our EC, or the AVR used in many Arduinos. It was mostly targeted to ARM microcontrollers. We mutually concluded that it was better to start a new project targeting 8-bit microcontrollers, which is a new codebase that is GPLv3, as opposed to the BSD license used by Chromium EC. - -### Q: How significant is it that System76 is open sourcing the code? - -A: The only other x86_64 laptops with open source EC firmware are certain Chromebooks using Chromium EC. However, these laptops have poor support for full desktop Linux distributions such as Ubuntu. We are providing users of our laptops with significant capabilities to view and modify the behavior of the laptop to their needs, all while running a full desktop operating system. When it is paired with our open system firmware, there is very little that a user cannot do with one of these laptops. - -### Q: What implications does open code have for firmware and other developers? - -A: I strongly believe that open EC firmware will be just as important for hardware customization as open system firmware. The user can adjust keyboard mappings, change fan curves, modify battery charging settings, and more. The most exciting thing about this is that I cannot predict all that is possible with this change. Many of the components in the system are tied to the EC firmware. Having the ability to change the EC and system firmware means these components could potentially be modified in a large number of different, unpredictable ways. - -### Q: What is really important about developing software for this EC, and what sets it apart? - -A: Something particularly important is that the EC we are using is the IT8587E, and its instruction set architecture is Intel 8051. Chromium EC cannot be compiled for the 8051, due to being targeted toward 32-bit microcontrollers. Our project aims to support the ubiquitous 8-bit microcontrollers from many vendors, as well as Arduino’s for easy prototyping. In addition, this unifies the work we were doing on [Thelio Io][7] with the work we have done on laptop firmware. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/1/system76-open-source-firmware - -作者:[Don Watkins][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/don-watkins -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/laptop_screen_desk_work_chat_text.png?itok=UXqIDRDD (Person using a laptop) -[2]: https://opensource.com/article/19/11/coreboot-system76-laptops -[3]: https://chromium.googlesource.com/chromiumos/platform/ec/+/master/README.md -[4]: https://en.wikipedia.org/wiki/Intel_MCS-51 -[5]: https://github.com/system76/ec -[6]: https://www.linkedin.com/in/jeremy-soller-0475a117/ -[7]: https://opensource.com/article/18/11/system76-thelio-desktop-computer diff --git a/sources/talk/20200123 Survey- Digital transformation can reveal network weaknesses.md b/sources/talk/20200123 Survey- Digital transformation can reveal network weaknesses.md deleted file mode 100644 index c03da59858..0000000000 --- a/sources/talk/20200123 Survey- Digital transformation can reveal network weaknesses.md +++ /dev/null @@ -1,102 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Survey: Digital transformation can reveal network weaknesses) -[#]: via: (https://www.networkworld.com/article/3516030/survey-digital-transformation-can-reveal-network-weaknesses.html) -[#]: author: (Linda Musthaler https://www.networkworld.com/author/Linda-Musthaler/) - -Survey: Digital transformation can reveal network weaknesses -====== -When enterprises embraced digital transformation, some found their existing networks had a limited ability to address cloud connectivity or access for mobile users. -Metamorworks / Getty Images - -[Digital transformation][1] is a catch-all phrase that describes the process of using technology to modernize or even revolutionize how services are delivered to customers. Not only technology but also people and processes commonly undergo fundamental changes for the ultimate goal of significantly improving business performance. - -Such transformations have become so mainstream that IDC estimated that 40% of all technology spending now goes toward digital transformation projects, with enterprises spending in excess of $2 trillion on their efforts through 2019. - -[[Get regularly scheduled insights by signing up for Network World newsletters.]][2] - -Every company’s digital transformation project is unique. Whether it’s transforming a company’s marketing and sales processes by using machine learning to garner deep insights on each and every customer, or building a seamless experience across sales channels and revamping distribution channels to provide the best products and resources to customers, a digital-transformation project is going to be dependent on as well as have an impact on the enterprise’s network infrastructure. - -[][3] - -BrandPost Sponsored by HPE - -[Take the Intelligent Route with Consumption-Based Storage][3] - -Combine the agility and economics of HPE storage with HPE GreenLake and run your IT department with efficiency. - -Many companies assume their networks can handle these changes. But can they? Do these new ways of working strain the existing network infrastructure by imposing new requirements for agility, cloud access, security and mobility? - -### Gauging Confidence in the Network Post-Digital Transformation - -A recent survey of more than 1,300 IT professionals dared to ask about the impact of digital transformation on each respondent’s enterprise network. Having just conducted its fourth annual state of the WAN survey at the end of 2019, Cato Networks issued the report, [Networking in 2020: Understanding Digital Transformation’s Impact on IT Confidence in Enterprise Networks][4]_._ Steve Taylor, publisher and editor-in-chief of Webtorials.Com, and Dr. Jim Metzler, principal at Ashton, Metzler, and Associates, were instrumental in designing and the analyzing the results from the portion of the survey relating to digital transformation. There are some worthy observations here for network managers. - -The study looked at networking and security priorities for IT professional in 2020. As part of that process, the study sought to identify how ready enterprise networks are for the digital era. According to the report, “The modern business has data and users residing everywhere. And just as the enterprise network provided performance and security to data centers and branch offices in the past, so, too, it must provide performance and security to the cloud and mobile users—both hallmarks of digital initiatives.” Without a network that delivers the right infrastructure with the right performance and security levels anywhere, digital transformation efforts can run aground. - -1,333 respondents took part in the survey in late 2019. Qualified respondents were those who work in IT and are involved in the purchase of telco services for enterprises with an SD-WAN or MPLS backbone (or a mix of MPLS and Internet VPN). The vast majority of the respondents say they are moderately or extremely involved in their organization’s digital transformation initiatives. - -More than half of respondents identified working for companies with a global or regional footprint. Nearly half of respondents work for companies with more than 2,500 employees. The vast majority said their organization spans 11 or more locations, with a quarter of the respondents from companies with more than 100 locations. All respondents’ companies have some cloud presence and most have two or more physical [data centers][5]. - -To gauge the impact of digital transformation on the network, the survey asked a number of qualitative questions pertaining to network characteristics that include agility, security, performance, and management and operations. For each characteristic, the study looked at the “network confidence level”; that is, whether the respondent feels more or less confident in the network’s capabilities in that area following the deployment of the transformation project. The study segmented respondents by the type of network they operate—[MPLS][6], hybrid (MPLS and Internet-based VPN), [SD-WAN][7], or [SASE][8] (secure access service edge, pronounced “sassy”). SASE converges SD-WAN and other networking capabilities and a complete security stack into a global, cloud-native platform. (Disclosure: Report publisher Cato Networks delivers an SD-WAN service and also bills itself as the world’s first SASE platform.) - -**Overall Findings** - -I’ll get to the results about network confidence level in a moment. First let’s look at some general information disclosed in the report: - - * Budgets are growing in 2020. Respondents report that both their network and their security budgets are expected to grow in 2020. That’s good news, considering both areas are being asked to do more. - * Site connectivity continues to drive the major networking challenges for 2020. This includes bandwidth costs, performance between locations, and managing the network. - * Mobility is becoming strategic for network buyers. The importance of managing mobile and remote access grew significantly since the last annual survey. Addressing this need has become another top networking challenge. - * Security is an essential consideration for [WAN][9] transformation. Enterprises must have a multi-edge security strategy that includes defending against emerging threats like malware/ransomware, enforcing corporate security policies on mobile users, and full awareness of the cost of buying and managing security appliances and software. - * The most critical applications are now in the cloud. More than half (60%) of all respondents indicate that their organization’s most critical applications will be hosted in the cloud over the next 12 months. This has a huge impact on how users will access the cloud via their WAN. - * Digital initiatives are driving a rethinking of legacy networks. More than half of the respondents whose organizations still rely on MPLS say their organizations are actively planning to deploy SD-WAN in the next 12 months to lower costs and support new business initiatives. - - - -### Digital transformations rattle network confidence - -To better understand why enterprises are abandoning MPLS and what lessons can be derived for any WAN transformation initiatives, respondents were asked to rate a series of statements evaluating their perceptions of their networks’ agility, management and operations, performance, and security. The respondents were then grouped by their network in order to assess the change in network confidence pre- and post-digital transformation. - -With one exception, respondents express lower confidence in their networks post-digital transformation. This is true in areas of MPLS’s presumed strength, such as performance, and it’s even true for hybrid networks as well as for SD-WAN. As organizations roll out digital initiatives, they uncover the weaknesses in their existing networks, such as a limited ability to address cloud connectivity or mobile user access. - -According to the report, the only exception is when respondents run a SASE architecture. They express greater confidence post-digital transformation. SASE’s convergence of SD-WAN with security, cloud connectivity, and mobility is well suited for digital transformation but may only be appreciated when required by the business. - -Going back to the network characteristics of agility, security, performance, and management and operations, let’s look at how each one is perceived in terms of respondents’ network confidence. - - * Network agility – This characteristic includes the ability to add new sites, adjust available bandwidth, add cloud resources, and generally adapt quickly to changing business needs. It’s understandable that respondents with an MPLS-based network would rate their confidence in network agility as low, but confidence among respondents who deployed an SD-WAN dropped the most when asked about rapidly delivering new public cloud infrastructure. The opposite is also true: SASE’s built-in cloud connectivity is a major factor in respondents being more confident in their network agility post-digital transformation. - * Security – It’s critical to protect users and resources regardless of the underlying network. MPLS does not protect resources and users, and certainly not those connected to the Internet, leading MPLS-only respondents to be significantly less confident in their network’s security post-digital transformation. SD-WAN respondents also demonstrate lower confidence in security post-digital transformation, largely because SD-WAN on its own fails to restrict access to specific applications or provide the advanced security tools needed to protect all edges – mobile devices, sites, and cloud resources. By contrast, SASE confidence grew post-digital transformation. Converging a complete security stack into the network allows SASE to bring granular control to sites, mobile, and cloud resources. - * Performance – Delivering cloud resources presents problems for MPLS and SD-WAN. Users expect their cloud application experience to be as responsive as on-premises applications. This point plays a significant role in performance confidence. When asked if respondents can provide access to cloud-based resources with the performance and availability comparable to internally hosted resources, respondents with MPLS, hybrid WAN, and SD-WAN networks showed significant drop-off in confidence post-digital transformation. On the other hand, SASE solutions that include native cloud optimization improve cloud performance out-of-the-box, making those network owners more confident that they can deliver what users need. - * Management and operations – Respondent confidence was high before digital transformation but dropped off post-digital transformation across all network types except for SASE. According to the report, the lack of redundant last mile connections with MPLS leaves sites susceptible to cable cuts and other last mile problems. Adding Internet VPNs to MPLS improves last mile access but still does not allow organizations to automatically overcome last mile issues without downtime. SD-WAN and SASE are better able to overcome last mile issues with active/active configurations. - - - -Digital transformation initiatives can vastly change network traffic patterns, bandwidth requirements, access locations, and security needs. These changes might not be apparent until the project is fully deployed. Every organization needs a network infrastructure that provides adequate performance, security, agility and manageability to support digital initiatives, now and into the future. Some network architectures are better at providing those characteristics than others are. IT organizations that want to be confident in their network’s ability to meet the future need to consider areas such as cloud, mobility and especially security when transforming their WANs today. - -Join the Network World communities on [Facebook][10] and [LinkedIn][11] to comment on topics that are top of mind. - --------------------------------------------------------------------------------- - -via: https://www.networkworld.com/article/3516030/survey-digital-transformation-can-reveal-network-weaknesses.html - -作者:[Linda Musthaler][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://www.networkworld.com/author/Linda-Musthaler/ -[b]: https://github.com/lujun9972 -[1]: https://www.networkworld.com/article/3512830/how-to-deal-with-the-impact-of-digital-transformation-on-networks.html -[2]: https://www.networkworld.com/newsletters/signup.html -[3]: https://www.networkworld.com/article/3440100/take-the-intelligent-route-with-consumption-based-storage.html?utm_source=IDG&utm_medium=promotions&utm_campaign=HPE21620&utm_content=sidebar ( Take the Intelligent Route with Consumption-Based Storage) -[4]: https://go.catonetworks.com/Survey-Networking-in-2020.html -[5]: https://www.networkworld.com/article/3223692/what-is-a-data-centerhow-its-changed-and-what-you-need-to-know.html -[6]: https://www.networkworld.com/article/2297171/network-security-mpls-explained.html -[7]: https://www.networkworld.com/article/3031279/sd-wan-what-it-is-and-why-you-ll-use-it-one-day.html -[8]: https://www.networkworld.com/article/3453030/sase-is-more-than-a-buzzword-for-bioivt.html -[9]: https://www.networkworld.com/article/3248989/what-is-a-wan-wide-area-network-definition-and-examples.html -[10]: https://www.facebook.com/NetworkWorld/ -[11]: https://www.linkedin.com/company/network-world diff --git a/sources/talk/20200124 Gartner- Data-center spending will inch up this year.md b/sources/talk/20200124 Gartner- Data-center spending will inch up this year.md deleted file mode 100644 index a58dc86acd..0000000000 --- a/sources/talk/20200124 Gartner- Data-center spending will inch up this year.md +++ /dev/null @@ -1,54 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Gartner: Data-center spending will inch up this year) -[#]: via: (https://www.networkworld.com/article/3515314/data-center-spending-will-inch-up-in-year-of-accelerated-it-investment-gartner.html) -[#]: author: (Andy Patrizio https://www.networkworld.com/author/Andy-Patrizio/) - -Gartner: Data-center spending will inch up this year -====== -After a down year in 2019, IT spending will pick up this year, led by enterprise software and the cloud, according to IT research firm Gartner, including an uptick for data-center spending that had takend a dip. -Getty Images - -Global IT spending could reach $3.865 trillion in 2020, up 3.4% over 2019, according to newly released data from IT research firm Gartner. In comparison, 2019 saw just 0.5% growth over 2018 levels. Spending is expected to continue to climb into 2021, surpassing the $4 trillion mark with 3.7% growth. - -Spending on hardware – including edge devices and data center hardware – will be deemphasized, while investments in software and services, including cloud, will see an increase, the firm predicts. - -**READ MORE:** [Data centers in 2020 will feature greater automation, cheaper memory][1] - -"With the waning of global uncertainties, businesses are redoubling investments in IT as they anticipate revenue growth, but their spending patterns are continually shifting," said John-David Lovelock, distinguished research vice president at Gartner, in a statement. - -After a decline of 2.7% in 2019, data center systems sales will grow 1.9% in 2020, while devices – everything from laptops to printers to smartphones – will rise just 0.8% in 2020 after a 4.3% decline in 2019. - -IT services will rise 5.0%, increasing its momentum over 2019, which saw a rise of 3.6%. But the real action will be in enterprise software, which is expected to grow 10.5% this year. This includes both on-premises software (such as Microsoft, Oracle) and cloud services. More of the spending growth is aimed at SaaS than on-premises software, Gartner notes. - -"Almost all of the market segments with enterprise software are being driven by the adoption of software as a service (SaaS)," Lovelock said. "We even expect spending on forms of software that are not cloud to continue to grow, albeit at a slower rate. SaaS is gaining more of the new spending, although licensed-based software will still be purchased and its use expanded through 2023." - -In a conference call with clients, Lovelock said there has been a shift over the last three years, where the world is going from "'we like all tech' to 'we like softer tech and not all tech.'" The trend is toward consulting, software, and the cloud, the softest of tech. - -The weakest segment is mobile devices. It's not that people don’t want them any longer, but in the mobile device space there is no more must-have feature, nothing to make people line up for days in advance like we saw a decade ago with each new iPhone release. "People are happy with the devices they have. The market is down to a replacement market so they extend their spending," Lovelock said. - -In data center space, there's a similar pattern. Servers last longer, and at the same time, more work is being done outside the company at colocations and the cloud. - -"The cloud is taking a lot [of money] out of the data center," Lovelock said. "SaaS and IaaS are all viable for organizations but taking data center dollars. Where we keep saying software is growing most quickly, that’s very true. But recognize that it is also taking money from other areas. Budgets aren’t going up, concentrations in spending is where we are seeing things happen." - -Join the Network World communities on [Facebook][2] and [LinkedIn][3] to comment on topics that are top of mind. - --------------------------------------------------------------------------------- - -via: https://www.networkworld.com/article/3515314/data-center-spending-will-inch-up-in-year-of-accelerated-it-investment-gartner.html - -作者:[Andy Patrizio][a] -选题:[lujun9972][b] -译者:[zxy-wyx](https://github.com/zxy-wy) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://www.networkworld.com/author/Andy-Patrizio/ -[b]: https://github.com/lujun9972 -[1]: https://www.networkworld.com/article/3487684/data-centers-in-2020-automation-cheaper-memory.html -[2]: https://www.facebook.com/NetworkWorld/ -[3]: https://www.linkedin.com/company/network-world diff --git a/sources/talk/20200124 How Open-RAN could ‘white-box- 5G.md b/sources/talk/20200124 How Open-RAN could ‘white-box- 5G.md deleted file mode 100644 index c42a630540..0000000000 --- a/sources/talk/20200124 How Open-RAN could ‘white-box- 5G.md +++ /dev/null @@ -1,70 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (How Open-RAN could ‘white-box’ 5G) -[#]: via: (https://www.networkworld.com/article/3516075/how-open-ran-could-white-box-5g.html) -[#]: author: (Patrick Nelson https://www.networkworld.com/author/Patrick-Nelson/) - -How Open-RAN could ‘white-box’ 5G -====== -Open-hardware, software-defined mobile radio infrastructure could kick-start private LTE and 5G and perhaps eventually lead to their supremacy over Wi-Fi for enterprises. -mrdoomits / Getty Images - -One of Britain’s principal mobile networks, O2, has just announced that it intends to deploy Open Radio Access Network technology (O-RAN) in places. - -O-RAN is a wireless industry initiative for designing and building radio network solutions using “a general-purpose, vendor-neutral hardware and software-defined technology,” explains Telecom Infra Project, the body responsible, on its website. - -TIP is the trade body that, along with Intel and Vodafone, conceived of the technology alternative – an attempt at toppling the dominance of Ericsson, Huawei and Nokia, which provide almost all mobile telco infrastructure now. - -[][1] - -BrandPost Sponsored by HPE - -[Take the Intelligent Route with Consumption-Based Storage][1] - -Combine the agility and economics of HPE storage with HPE GreenLake and run your IT department with efficiency. - -O2 joins fellow UK mobile operator Vodafone, which is also experimenting with O-RAN. - -O2 is working with partners including; Mavenir, DenseAir and WaveMobile to introduce O-RAN solutions, [the Telefónica-owned network says in a press release][2]. - -What it means by that is that by encouraging less powerful, smaller vendors to provide infrastructure, the grip that Ericsson, Huawei and Nokia hold over mobile networks might be lessened. Costs could be reduced because those big three would have to reduce prices to remain competitive. - -But most interestingly, it also allows for the standardizing of telco infrastructure, possibly making future private mobile networks cheaper and easier to implement. Private LTE and 5G networks are expected to genearate $4.7 billion in revenue by the end of this year, [according to an SNS Telecom & IT report published in October][3]. That number is expected to be $8 billion by the end of 2023. - -**[ Don’t miss [customer reviews of top remote access tools][4] and see [the most powerful IoT companies][5] . | Get daily insights by [signing up for Network World newsletters][6]. ]** - -Indeed, white-box telco equipment might be the result. White-box IT hardware is used in enterprises, and could be advantageous in telco equipment, too. Conceivably, as telco equipment prices and availability became more within reach, along with the availability of new, unlicensed, shared spectrum, such as is being launched in the U.S. with Citizen Broadband Radio Service; then implementation of a an enterprise-level, private LTE or 5G network, with “white-box” hardware and programmable software-defined networks, may be one-day no harder than a Wi-Fi network install, common now. - -“By providing authority over wireless coverage and capacity, private LTE and 5G networks ensure guaranteed and secure connectivity, while supporting a wide range of applications,” SNS Telecom & IT says of private mobile networks in its report. Factory robotics and IoT sensor  networks will be driving that investment. LTE and 5G are being pitched as more reliable than Wi-Fi, in part because of less congestion. Private mobile networks can be provided by existing mobile-network operators or built independently. - -In the case of TIP’s O-RAN, the vision is for modular base stations with a software stack functioning on common, off-the-shelf hardware, called COTS. Field-programmable gate arrays (FPGAs) are also part of the concept. - -“Thus the main objective of this project is to have RAN solutions that benefit from the flexibility and pace of innovation associated with software-driven developments on fully programmable platforms,” [TIP said on its website][7] last year. The influence of Wi-Fi diminishes. - -Join the Network World communities on [Facebook][8] and [LinkedIn][9] to comment on topics that are top of mind. - --------------------------------------------------------------------------------- - -via: https://www.networkworld.com/article/3516075/how-open-ran-could-white-box-5g.html - -作者:[Patrick Nelson][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://www.networkworld.com/author/Patrick-Nelson/ -[b]: https://github.com/lujun9972 -[1]: https://www.networkworld.com/article/3440100/take-the-intelligent-route-with-consumption-based-storage.html?utm_source=IDG&utm_medium=promotions&utm_campaign=HPE21620&utm_content=sidebar ( Take the Intelligent Route with Consumption-Based Storage) -[2]: https://news.o2.co.uk/press-release/o2-to-further-improve-network-service-for-customers-using-open-radio-access-network-ran-technology/ -[3]: https://www.snstelecom.com/private-lte -[4]: https://www.networkworld.com/article/3262145/lan-wan/customer-reviews-top-remote-access-tools.html#nww-fsb -[5]: https://www.networkworld.com/article/2287045/internet-of-things/wireless-153629-10-most-powerful-internet-of-things-companies.html#nww-fsb -[6]: https://www.networkworld.com/newsletters/signup.html#nww-fsb -[7]: https://telecominfraproject.com/tip-project-group-feature-openran/ -[8]: https://www.facebook.com/NetworkWorld/ -[9]: https://www.linkedin.com/company/network-world diff --git a/sources/talk/20200127 IBM Power-based cloud instances available- from Google.md b/sources/talk/20200127 IBM Power-based cloud instances available- from Google.md deleted file mode 100644 index 95ba1965c7..0000000000 --- a/sources/talk/20200127 IBM Power-based cloud instances available- from Google.md +++ /dev/null @@ -1,60 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (IBM Power-based cloud instances available… from Google) -[#]: via: (https://www.networkworld.com/article/3516409/ibm-power-based-cloud-instances-available-from-google.html) -[#]: author: (Andy Patrizio https://www.networkworld.com/author/Andy-Patrizio/) - -IBM Power-based cloud instances available… from Google -====== -IBM’s high-performance RISC processors are now available to Google Cloud Platform users as a service. -Oak Ridge National Laboratory - -IBM and Google may be competitors in the cloud platform business, but that doesn't prevent them from working together. Google is partnering with IBM to offer "Power Systems as a service" on its Google Cloud platform. - -IBM’s Power processor line is the last man standing in the RISC/Unix war, surviving Sun Microsystems’ SPARC and HP’s PA-RISC. Along with mainframes it’s the last server hardware business IBM has, having divested its x86 server line in 2014. - -IBM already sells cloud instances of Power to its IBM Cloud customers, so this is just an expansion of existing offerings to a competitor with a considerable data center footprint. Google said that customers can run Power-based workloads on GCP on all of its operating systems save mainframes — AIX, IBM i, and Linux on IBM Power. - -This gives GCP customers the option of moving legacy IT systems running on IBM Power Systems to a hybrid cloud and the option of using Google or IBM, which have their respective strengths. IBM is focused on IBM customers, while Google is more focused on containerization, AI and ML, and low latency. - -IBM gains because its customers now have a second option, and customers like choice. GCP wins because it gives the company access to legacy IBM customers, something it never had as a relatively new company. It has no on-premises legacy, after all. - -"For organizations using a hybrid cloud strategy, especially, IBM Power Systems are an important tool. Because of their performance and ability to support mission critical workloads—such as SAP applications and Oracle databases—enterprise customers have been consistently looking for options to run IBM Power Systems in the cloud," wrote Kevin Ichhpurani, GCP's corporate vice president of global ecosystem in a [blog post][1] announcing the deal. - -"IBM Power Systems for Google Cloud offers a path to do just that, providing the best of both the cloud and on-premise worlds. You can run enterprise workloads like SAP and Oracle on the IBM Power servers that you’ve come to trust, while starting to take advantage of all the technical capabilities and favorable economics that Google Cloud offers," Ichhpurani added. - -[[Get regularly scheduled insights by signing up for Network World newsletters.]][2] - -Ichhpurani also noted several other benefits for customers: - - * Integrated billing: GCP customers can deploy the solution through the Google Cloud Marketplace and get a single bill for their GCP and IBM Power use. - * Private API access: IBM Power resources can access Google Cloud’s Private API Access technology securely and at low latency - * Integrated customer support: Customer support for both GCP and IBM have a single point of contact for any issues. - * Rapid deployment: An intuitive new management console enables quick ramp-up and rapid deployment of the solution. - - - -IBM Power is available to GCP customers now. - -Join the Network World communities on [Facebook][3] and [LinkedIn][4] to comment on topics that are top of mind. - --------------------------------------------------------------------------------- - -via: https://www.networkworld.com/article/3516409/ibm-power-based-cloud-instances-available-from-google.html - -作者:[Andy Patrizio][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://www.networkworld.com/author/Andy-Patrizio/ -[b]: https://github.com/lujun9972 -[1]: https://cloud.google.com/blog/products/gcp/ibm-power-systems-now-available-on-google-cloud -[2]: https://www.networkworld.com/newsletters/signup.html -[3]: https://www.facebook.com/NetworkWorld/ -[4]: https://www.linkedin.com/company/network-world diff --git a/sources/talk/20200127 Some Useful Probability Facts for Systems Programming.md b/sources/talk/20200127 Some Useful Probability Facts for Systems Programming.md deleted file mode 100644 index 143516dd21..0000000000 --- a/sources/talk/20200127 Some Useful Probability Facts for Systems Programming.md +++ /dev/null @@ -1,117 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Some Useful Probability Facts for Systems Programming) -[#]: via: (https://theartofmachinery.com/2020/01/27/systems_programming_probability.html) -[#]: author: (Simon Arneaud https://theartofmachinery.com) - -Some Useful Probability Facts for Systems Programming -====== - -Probability problems come up a lot in systems programming, and I’m using that term loosely to mean everything from operating systems programming and networking, to building large online services, to creating virtual worlds like in games. Here’s a bunch of rough-and-ready probability rules of thumb that are deeply related and have many practical applications when designing systems. - -## (\frac{1}{N}) chance tried (N) times - -Retries are everywhere in systems programming. For example, imagine you’re designing a world for a roleplaying game. When monsters in one particular forest are defeated, they have a small chance of dropping some special item. Suppose that chance is (\frac{1}{10}). Basic probability says that players are expected to need 10 victories before gaining a special item. But in probability, “expected value” is just a kind of average value, and there’s no guarantee that players will get the item even if they do win 10 battles. - -What’s a player’s chance of getting at least one special item after 10 battles? Let’s just try getting a computer to calculate the probability of getting at least one success for (N) tries at a (\frac{1}{N}) chance, for a range of values of (N): - -![Plot of probability of at least one success after trying a 1/N chance N times. The probability starts at 100% and drops, but quickly flattens out to a value just below 65%.][1] - -Eyeballing the graph, it looks like the probability is roughly constant for (N) greater than about 3. In fact, it converges on (1 - e^{- 1}), where (e) is Euler’s constant, 2.718281828459… This number (along with (e^{- 1})) is extremely common in engineering, so here’s a table of practical values: - -exp(-1.0) | 1.0-exp(-1.0) ----|--- -36.7% | 63.2% -A bit over a third | A bit under two thirds - -So, if you don’t need an exact answer (and you often don’t) you could just say that if the drop probability is (\frac{1}{10}), most players will get a special item within 10 battles, but (close enough) about a third won’t. Because the monster battles are statistically independent, we can make a rough guess that about 1 in 9 players still won’t have a special item after 20 battles. Also, roughly 60% won’t after 5 battles because (0.6 \times 0.6 = 0.36), so 60% is close to the square root of 36.7%. - -> If you have (\frac{1}{N}) chance of success, then you’re more likely than not to have succeeded after (N) tries, but the probability is only about two thirds (or your favourite approximation to (1 - e^{- 1})). The value of (N) doesn’t affect the approximation much as long as it’s at least 3. - -Here’s the proof: The chance of the player failing to get a special item after all (10) battles is ((\frac{9}{10})^{10} = .349), so the chance of getting at least one is (1 - .349 = .651). More generally, the chance of succeeding at least once is (1 - (1 - \frac{1}{N})^{N}), which converges on (1 - e^{- 1}) (by [one of the definitions of (e)][2]). - -By the way, this rule is handy for quick mental estimates in board games, too. Suppose a player needs to get at least one 6 from rolling 8 six-sided dice. What’s probability of failure? It’s about (\frac{1}{3}) for the first 6 dice, and (\frac{5}{6} \times \frac{5}{6}) for the remaining two, so all up it’s about (\frac{1}{3} \times \frac{25}{36} \approx \frac{8}{36} \approx \frac{1}{4}). A calculator says ((\frac{5}{6})^{8} = .233), so the rough approximation was good enough for gameplay. - -## (N) balls in (N) buckets - -I’ll state this one up front: - -> Suppose you throw (N) balls randomly (independently and one at a time) into (N) buckets. On average, a bit over a third ((e^{- 1})) of the buckets will stay empty, a bit over a third ((e^{- 1}) again) will have exactly one ball, and the remaining quarter or so ((1 - 2e^{- 1})) will contain multiple balls. - -The balls-and-buckets abstract model has plenty of concrete engineering applications. For example, suppose you have a load balancer randomly assigning requests to 12 backends. If 12 requests come in during some time window, on average about 4 of the backends will be idle, only about 4 will have a balanced single-request load, and the remaining (average) 3 or 4 will be under higher load. Of course, all of these are averages, and there’ll be fluctuations in practice. - -As another example, if a hash table has (N) slots, then if you put (N) different values into it, about a third of the slots will still be empty and about a quarter of the slots will have collisions. - -If an online service has a production incident once every 20 days on average, then (assuming unrelated incidents) just over a third of 20-day periods will be dead quiet, just over a third will have the “ideal” single incident, while a quarter of 20-day periods will be extra stressful. In the real world, production incidents are even more tightly clustered because they’re not always independent. - -This rule of thumb also hints at why horizontally scaled databases tend to have hot and cold shards, and why low-volume businesses (like consulting) can suffer from feast/famine patterns of customer demand. - -Random allocation is much more unbalanced than we intuitively expect. A famous example comes from World War II when, late in the war, the Germans launched thousands of V-1 and V-2 flying bombs at London. Hitting a city with a rocket from across the Channel already required pushing 1940s technology to new limits, but several British analysts looked at maps of bomb damage and concluded that the Germans were somehow targetting specific areas of London, implying an incredible level of technological advancement. In 1946, however, an actuary did the proper statistical analysis and said that, no, [the clustering of bomb damage was simply what you’d expect from random chance][3]. (That analysis is based on the [Poisson distribution][4], and the ratios in the rule for (N) balls and (N) buckets can be calculated from a Poisson distribution with (\lambda = \frac{N}{N} = 1).) - -![25 points uniformly randomly placed on a 5x5 grid, showing spurious clustering. 8 boxes are empty, 10 boxes contain one point and 7 boxes contain two or more points.][5] - -Random allocation only balances out when the number of “balls” is much larger than the number of “buckets”, i.e., when averaging over a large number of items, or a long time period. That’s one of the many reasons that engineering solutions that work well for large-scale FAANG companies can be problematic when used by companies that are orders of magnitude smaller. - -Proving the third-third-quarter rule is pretty easy if you look at just one bucket. Each of the (N) balls represents a (\frac{1}{N}) chance of adding a ball to the bucket, so the chance of the bucket staying empty is just the (e^{- 1} \approx 36.7%) from the first rule. Linearity of expectation means we can combine the results for each bucket and say that 36.7% of _all_ buckets are expected to be empty, even though the bucket counts aren’t independent. Also, there are (N) possible ways of exactly one ball landing in the bucket, and each way requires one ball to fall in (with probability (\frac{1}{N})) and the other (N - 1) balls to miss (with probability (1 - \frac{1}{N})). So the probably of exactly one ball falling in is (\left. N \times \frac{1}{N} \times (1 - \frac{1}{N})^{N - 1}\rightarrow e^{- 1} \right.). - -### Fixed points of random permutations - -I don’t think this rule has as many practical applications as the (N) balls/buckets rule, but it’s kind of a freebie. - -Think of a battle game in which 6 players start from 6 spawn/home points. If the players play a second round, what’s the chance that someone starts from the same point? Mathematically, that’s asking about the chance of a random permutation having a “fixed point”. - -> If a group of things are randomly shuffled, a bit of over a third ((e^{- 1})) of the time there’ll be no fixed points, a bit of over a third ((e^{- 1})) of the time there’ll be just one fixed point, and the remaining quarter or so of the time there’ll be two or more. - -The number of fixed points in a random shuffle happens to approximate the same distribution as the number of balls in the buckets before, which can be [proven from first principles using the inclusion-exclusion principle][6]. But there’s an even simpler proof for a related fact: - -> A random permutation has exactly one fixed point on average, regardless of size. - -If there are (N) things, each one has a (\frac{1}{N}) chance of ending up in its original location after the shuffle, so on average there’ll be (N \times \frac{1}{N} = 1) fixed points. Note that it’s impossible to get exactly one fixed point by shuffling a two element set (try it!) but 1 is still the average of 2 and 0. (“Average” doesn’t always mean what we want it to mean.) - -That proof might seem too simple, but it’s a demonstration of how powerful linearity of expectation is. Trying to calculate statistics for permutations can be tricky because the places any item can go depend on the places all the other items have gone. Linearity of expectation means we don’t have to care about all the interactions as long as we only need to know the average. The average isn’t always the most useful statistic to calculate, but it’s often the easiest by far. - -## The coupon collector’s problem - -Let’s look at [the common “loot box” mechanism][7]. Specifically, suppose there are 10 collector items (say, one for each hero in a franchise) that are sold in blind boxes. Let’s take the fairest case in which there are no rare items and each item has an equal (\frac{1}{10}) chance of being in a given box. How many boxes will a collector buy on average before getting a complete set? This is the called the coupon collector’s problem, and for 10 items the answer is about 29. - -> The answer to the coupon collector’s problem is a bit more than (N\ln N) (add (\frac{N}{2}) for some more accuracy). - -((\ln N) is (\log) base (e), or just `log(N)` in most programming languages.) - -The coupon collector’s problem hints at why the loot box mechanism is so powerful. The (N) balls in (N) buckets rule tells us that the collector will have about two thirds of the items after buying 10 boxes. It feels like the collector is most of the way there, and it would be a shame to give up and let so much progress go to waste, but actually 10 boxes is only about a third of the expected number of boxes needed. That’s a simplistic model, but item rarity, variation of box type and (in computer games) making some items “unlockable” by completing sets of other items (or fulfilling other dependencies) only make it easier to get collectors to buy more than they originally expect. - -The (N\ln N) rule is very rough, so here’s a plot for comparison: - -![Plot of approximations to the coupon collector's problem. N ln N underestimates significantly, but has the right growth rate. N ln N + N/2 still underestimates slightly, but the error is less than 10%. The 1:1 slope N is also included to show that, beyond small values of N, multiple times N purchases are needed to get all items on average.][8] - -The exact value is rarely needed, but it’s useful to know that you’ll quickly need multiple times (N) trials to get all (N) hits. Any application of the (N) balls/buckets rule naturally extends to a coupon collector’s problem (e.g., on average you’ll need to put over (N\ln N) items into a hash table before all (N) slots are full) but the coupon collector’s problem comes up in other places, too. Often it’s tempting to use randomness to solve a problem statelessly, and then you find yourself doing a coupon collector problem. A cool example is [the FizzleFade effect in the classic 90s first-person shooter Wolfenstein 3D][9]. When the player character died, the screen would fill up with red pixels in what looks like random order. A simple and obvious way to implement that would be to plot red pixels at random coordinates in a loop, but filling the screen that way would be boring. With (320 \times 200 = 64000) pixels, most (~63.2%) of the screen would be filled red after 64000 iterations, but then the player would have to wait over (\ln(64000) \approx 11) times longer than that watching the last patches of screen fade away. The developers of Wolfenstein had to come up with a way to calculate a pseudo-random permutation of pixels on the screen, without explicitly storing the permutation in memory. - -Here’s a loose explanation of where the (\ln N) factor comes from: We know already that any pixel has approximately (\frac{1}{e}) chance of not being coloured by any batch of (N) pixel plots. So, after a batch of (N) pixel plots, the number of unfilled pixels goes down by a factor of (e) on average. If we assume we can multiply the average because it’s close enough to the geometric mean, the number of unfilled pixels will drop from (N) to something like (\frac{N}{e^{k}}) after (k) batches. That means the number of batches needed to go from (N) unfilled pixels to 1 is something like (\ln N), from the basic definition of logarithms. - -In the computer age it’s easy to get an answer once we know we have a specific probability problem to solve. But rough rules like the ones in this post are still useful during the design phase, or for getting an intuitive understanding for why a system behaves the way it does. - --------------------------------------------------------------------------------- - -via: https://theartofmachinery.com/2020/01/27/systems_programming_probability.html - -作者:[Simon Arneaud][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://theartofmachinery.com -[b]: https://github.com/lujun9972 -[1]: https://theartofmachinery.com/images/systems_programming_probability/one_on_n_tried_n_times.svg -[2]: https://en.wikipedia.org/wiki/Characterizations_of_the_exponential_function#Characterizations -[3]: https://www.cambridge.org/core/journals/journal-of-the-institute-of-actuaries/article/an-application-of-the-poisson-distribution/F75111847FDA534103BD4941BD96A78E -[4]: https://en.wikipedia.org/wiki/Poisson_distribution -[5]: https://theartofmachinery.com/images/systems_programming_probability/london_v1_simulation.svg -[6]: https://golem.ph.utexas.edu/category/2019/11/random_permutations_part_1.html -[7]: https://www.pcgamer.com/au/the-evolution-of-loot-boxes/ -[8]: https://theartofmachinery.com/images/systems_programming_probability/coupon_collector.svg -[9]: http://fabiensanglard.net/fizzlefade/index.php diff --git a/sources/talk/20200128 Communication superstars- A model for understanding your organization-s approach to new technologies.md b/sources/talk/20200128 Communication superstars- A model for understanding your organization-s approach to new technologies.md deleted file mode 100644 index 632c290741..0000000000 --- a/sources/talk/20200128 Communication superstars- A model for understanding your organization-s approach to new technologies.md +++ /dev/null @@ -1,84 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Communication superstars: A model for understanding your organization's approach to new technologies) -[#]: via: (https://opensource.com/open-organization/20/1/communication-technology-superstars) -[#]: author: (Ron McFarland https://opensource.com/users/ron-mcfarland) - -Communication superstars: A model for understanding your organization's approach to new technologies -====== -Adopting new communication technologies can make your organization more -open. But are your people ready? -![Different cell phones][1] - -Multiple books in [the _Open Organization_ series][2] discuss the many ways new communication technologies are changing the nature of both work and management. I've seen these changes firsthand during my nearly three decades working for Japanese corporations. Over time, I've been able to classify and characterize some of the impacts these technologies—particularly new telecommunication technologies and social media—are having on daily life in many organizations. And in April 2016, I shared those observations in an article called _[How new communication technologies are affecting peer-to-peer engagement][3]_. - -But a lot can change in a little under four years. - -[The Open Organization Ambassadors][4] have learned a great deal about the ways open principles are impacting organizational practices. In particular, we've developed an [Open Organization Definition][5] that specifies the five principles that distinguish open organizations from other types of organization—namely, more transparency, more inclusivity, greater adaptability, deeper collaboration and a sense of purpose teams/community. I've also delivered [a presentation on this topic][6] several times since 2016 and learned new insights along the way. So I'd like to update this article with a few comments that reflect those findings. And then, in a follow-up article, I'd like to offer readers some guidelines on how _they_ can determine their organization's level of comfort with communication technology and use it to increase their success relative to industry competitors. - -Simply put: New communication technologies are affecting the way peer-to-peer decision-making practices function in organizations today. And that's affecting several important organizational dimensions: peers' transparency with each other when making decisions, the sense of inclusivity between members in decisions-making activities, their adaptability when situations change, their ability to collaborate with more individuals in the decision-making process, and their ability to build teams, groups, and communities to decide how to achieve their goals. - -### Four approaches to communication technology - -In Japan, I see companies that heavily promote today's communication technologies, as well as some that avoid them. Imagine four types of companies currently making use of today's communication technologies as they compete with other firms. These technologies are key, because they influence the environment in which certain peer-to-peer communities must work. It affects their collaboration and transparency with each other, their inclusivity with members they couldn't consider before because of location, their adaptability in a crisis, and their ability to build a sense of community among their members. This, in turn, affects members' enthusiasm, desire, and engagement—so _investment_ and _utilization_ are critical considerations. In fact, we can actually chart the four types of technology-adopters according to those two variables: investment and utilization. - -Some companies are underinvested in new communication technologies, considering their needs and the relatively lower costs of these technologies today. And what they _do_ have, they're not using to capacity. I call these companies communication technology **"slow movers" (low investment/low utilization)**. Others buy whatever is available at any cost, but don't fully put what they've purchased to full use. I call these communication technology **"fashion followers" (high investment/low utilization)**. Still other companies invest in the very minimum amount of communication technology, but what they do have they use to full capacity. I call these communication technology **"conservative investors" (low investment/high utilization)**. Lastly, there are some companies that invest heavily in communication technology and work very hard to put it to full use. I call these communication technology **"communication superstars" (high investment/high utilization)**. - -These "communication superstars" have the ideal environment for peer-to-peer, front-line discussions and decision making. They have greater collaboration and transparency with each other. They include members on their teams that they wouldn't (or couldn't) consider before because of location. They are more adaptable in a crisis. And they have the ability to build a stronger sense of community among their members. Unfortunately, in Japan, particularly among smaller companies, I'd say more than 70 percent are "slow movers" or "conservative investors." If companies would pay more attention to investing in communication technology, and simultaneously increase their efforts at training staff to use the technology to its full potential, then peer-to-peer, front-line employees could explode with creativity and better leverage all five of the open organization principles I mentioned above. - -New communication technologies are affecting the way peer-to-peer decision-making practices function in organizations today. - -These technologies affect four aspects of information today: volume, speed, quality, and distribution. - -### Increased capacity for decision-making (volume) - -In "communication superstar" environments, communication technologies can actually increase the amount of information that can be made available quickly. Gone are the days in which only researchers or professors have access to in-depth information. Now, front-line people can obtain volumes of information if they know what they're looking for. With more and greater in-depth information in communication superstar company environments, front-line people working there can have more educated discussions, leading to greater inclusivity and collaboration, which can allow them to make the types of decisions that only top management (supported by consultants and researchers) could have made in the past. - -### Faster pace of decision-making and execution (speed) - -New technologies in these "communication superstar" companies are leading to quicker information acquisition, feedback, and flow between the front-line members in the organizations, even if they are very widely disbursed. - -Using the metaphor of adjusting the temperature of water coming out of a faucet, I would describe the effect this way: If you move the handle but the temperature changes very slowly, then finding the temperature you want becomes difficult, because the pace of temperature change is very slow, and differences between settings are difficult to determine. But if you move the handle and water temperature change is more immediate, you'll find that getting the correct temperature is much easier; you're moving quicker and making more rapid adjustments. - -The same logic applies to peer-to-peer discussions and feedback. I have a five-minute-to-twenty-four-hour goal when replying to my worldwide customers. That means that if I receive an email from a customer (something that arrives on my desktop computer at home, my desktop computer in the office, or on my mobile phone), I like to reply within five minutes. This really surprises customers, as they're probably still sitting in front of their computer! In the worst case, I try to reply within 24 hours. This gives me a competitive advantage when attempting to get customers to work with me. Front-line, peer-to-peer communities in these "communication superstar" companies can have that same competitive advantage in making quality decisions and executing them faster. The capacity for speedier replies allows us to make more adjustments quicker. It keeps both employees and customers involved, motivated and engaged. They become more transparent with information, include members they hadn't considered before. They can adapt more rapidly when redirection is required. They can collaborate at a more in-depth level and can build tighter, more trusting project communities. Information arriving too slowly can cause people to "turn off" and direct their attention elsewhere. This weakens the passion, dedication, and engagement of the project. - -### Toward wiser decisions (quality) - -Information not only travels more quickly when the business communication channels are adequate, but it's also subjected to more scrutiny through greater group collaboration and inclusivity. People can share second opinions and gather additional empirical data using these technologies. Furthermore, new communication technologies allow employees and managers to deliver data in new ways. With my years in sales training around the world, I've learned that using multiple visual aids, infographics, and so forth have greatly enhanced communication when English language barriers could have impeded it. All this can lead to high levels of peer-to-peer, front-line engagement, as up-to-date status reports can be quickly distributed and easily understood, making everyone more responsive. - -New technologies in these "communication superstar" companies are leading to quicker information acquisition, feedback, and flow between the front-line members in the organizations, even if they are very widely disbursed. - -### Maximal reach (distribution) - -Not long ago, teammates had to be physically close to one another and know each other well in order to communicate successfully. That's no longer the case, as communication channels can be developed with people literally all over the world. This has led to greater global inclusivity and collaboration. Good communication is the outcome of developing a trusting relationship. For me, building trust with people I've never met face-to-face has taken a bit longer, but I've done it with modern technology. Developing trust this way has led to great peer-to-peer transparency. - -Let me explain. Good communication starts with initial contact, whether meeting someone in person or virtually (via social media or some telecommunication format). Over some period of time and through several exchanges, a relationship starts to develop, and a level of trust is reached. People evaluate one another's character and integrity, and they also judge each other's competence and skills. With this deepening of trust over time, greater communication and collaboration can evolve. At that point, open and in-depth discussions and transparency on very difficult, complex, and sometimes uncomfortable topics can take place. With the ability to communicate at that level, peer-to-peer discussions and decisions can be made. With today's communication technology, greater information exchange can be made among a group of widely disbursed members leading to an expanded team community. I currently have approximately 20 customers around the world. Some I have never met in person; most I have just met in person once. Being stationed in Japan can make regular get-togethers with Europeans and Americans rather difficult. Fortunately, with today's communication technology, I can find solutions for many problems without physically getting together, as I have built a trusting relationship with them. - -### Concluding comments - -With all the benefits of this "communication superstar" working environment, in open organizations that promote peer-to-peer discussions, decision-making and management, I recommend the other three groups to move in that direction. The "slow movers" more than likely have managerial barriers to open information exchange. They should be convinced of the benefits of a more opened organization and the value of greater information exchange. If they don't improve their communication environment, they may lose their competitive advantage. The "fashion followers" should more carefully study their communication needs and time their investments with their in-company training capacities. The "conservative investors" should study their communication bottlenecks and find the technologies that are available to eliminate them. That's the path to super-stardom. - -As I mentioned at the beginning of this article, it's important to determine exactly which of these categories a company falls into with regard to communication technology ["slow movers" (low investment/low utilization), "fashion followers" (high investment/low utilization), "conservative investors" (low investment/high utilization) or "communication superstars" (high investment/high utilization)] against their competitors. Therefore, I would like to address that issue in a future article. - --------------------------------------------------------------------------------- - -via: https://opensource.com/open-organization/20/1/communication-technology-superstars - -作者:[Ron McFarland][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/ron-mcfarland -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/BUSINESS_mobilemashup3.png?itok=v1gVY8RJ (Different cell phones) -[2]: https://opensource.com/open-organization/resources/book-series -[3]: https://opensource.com/open-organization/16/4/how-new-communication-technologies-are-affecting-peer-peer-engagement -[4]: https://opensource.com/open-organization/resources/meet-ambassadors -[5]: https://opensource.com/open-organization/resources/open-org-definition -[6]: https://www.slideshare.net/RonMcFarland1/competitive-advantage-through-digital-investment-utilization?qid=9fbb4c4b-f2c2-4468-9f0a-3ebaa6efc91d&v=&b=&from_search=1 diff --git a/sources/talk/20200129 You can now have a Mac Pro in your data center.md b/sources/talk/20200129 You can now have a Mac Pro in your data center.md deleted file mode 100644 index f779534e5f..0000000000 --- a/sources/talk/20200129 You can now have a Mac Pro in your data center.md +++ /dev/null @@ -1,66 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (You can now have a Mac Pro in your data center) -[#]: via: (https://www.networkworld.com/article/3516490/you-can-now-have-a-mac-pro-in-your-data-center.html) -[#]: author: (Andy Patrizio https://www.networkworld.com/author/Andy-Patrizio/) - -You can now have a Mac Pro in your data center -====== -The company that once eschewed the enterprise now has a server version of the Mac Pro. Apple's rack-mountable Mac Pro starts at $6,499. -Apple - -Steve Jobs rather famously said he hated the enterprise because the people who use the product have no say in its purchase. Well, Apple's current management has adopted the enterprise, ever so slowly, and is now shipping its first server in years. Sort of. - -Apple introduced a new version of the Mac Pro in December 2019, after a six-year gap in releases, and said it would make the computer rack-mountable for data centers. But at the time, all the attention was on the computer’s aesthetics, because it looked like a cheese grater. The other bit of focus was on the price; a fully decked Mac Pro cost an astronomical $53,799. Granted, that did include specs like 1.5TB of DRAM and 8TB of SSD storage. Those are impressive specs for a server, although the price is still a little crazy. - -Earlier this month, Apple quietly delivered on the promise to make the Mac Pro rack-mountable. The Mac Pro rack configuration comes with a $500 premium over the cost of the standing tower, which means it starts at $6,499. - -[][1] - -BrandPost Sponsored by HPE - -[Take the Intelligent Route with Consumption-Based Storage][1] - -Combine the agility and economics of HPE storage with HPE GreenLake and run your IT department with efficiency. - -That gives you an 8-core Intel Xeon W CPU, 32GB of memory, a Radeon Pro 580X GPU, and 256GB of SSD storage. Most importantly, it gives you the rack mounting rails (which ship in a separate box for some reason) needed to install it in a cabinet. Once installed, the Mac Pro is roughly the size of a 4U server. - -Mac Pros are primarily used in production facilities, where they are used with other audio and video production hardware. MacStadium, a Mac developer with its own data centers, has been installing and testing the servers and thus far has had high praise for both the [ease of install][2] and [performance][3]. - -The server-ready version features a slight difference in its case, according to people who have tested it. The twist handle on the Mac Pro case is replaced with two lock switches that allow the case to be removed to access the internal components. It comes with two Thunderbolt 3 ports and a power button. - -The Mac Pro may be expensive, but you get a lot of performance for your money. Popular YouTube Mac enthusiast Marques Brownlee [tested it out][4] on a 8k resolution video encoding job. Brownlee found a MacBook Pro took 20 minutes to render the five-minute-long video, a iMac Pro desktop took 12 minutes, and the Mac Pro processed the video in 4:20. So the Mac Pro encoded 8k resolution video faster than real time. - -**[ Learn [how server disaggregation can boost data center efficiency][5] and [how Windows Server 2019 embraces hyperconverged data centers][6] . | Get regularly scheduled insights by [signing up for Network World newsletters][7]. ]** - -Apple’s last server was the Xserve, killed off in 2010 after several years of neglect. Instead, it made a version of MacOS for the whole Mac line that would let the hardware be run as a server, which is exactly what the new rack-mountable version of the Mac Pro is. - -MacStadium is doing benchmarks like Node.js, a JavaScript runtime. It will be interesting to see if anyone outside of audio/video encoding uses a Mac Pro in their data centers. - -Join the Network World communities on [Facebook][8] and [LinkedIn][9] to comment on topics that are top of mind. - --------------------------------------------------------------------------------- - -via: https://www.networkworld.com/article/3516490/you-can-now-have-a-mac-pro-in-your-data-center.html - -作者:[Andy Patrizio][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://www.networkworld.com/author/Andy-Patrizio/ -[b]: https://github.com/lujun9972 -[1]: https://www.networkworld.com/article/3440100/take-the-intelligent-route-with-consumption-based-storage.html?utm_source=IDG&utm_medium=promotions&utm_campaign=HPE21620&utm_content=sidebar ( Take the Intelligent Route with Consumption-Based Storage) -[2]: https://twitter.com/brianstucki/status/1219299028791226368 -[3]: https://blog.macstadium.com/blog/2019-mac-pros-at-macstadium -[4]: https://www.youtube.com/watch?v=DOPswcaSsu8&t= -[5]: https://www.networkworld.com/article/3266624/how-server-disaggregation-could-make-cloud-datacenters-more-efficient.html -[6]: https://www.networkworld.com/article/3263718/software/windows-server-2019-embraces-hybrid-cloud-hyperconverged-data-centers-linux.html -[7]: https://www.networkworld.com/newsletters/signup.html -[8]: https://www.facebook.com/NetworkWorld/ -[9]: https://www.linkedin.com/company/network-world diff --git a/sources/talk/20200130 Intel denies reports of Xeon shortage.md b/sources/talk/20200130 Intel denies reports of Xeon shortage.md deleted file mode 100644 index fce436ea0a..0000000000 --- a/sources/talk/20200130 Intel denies reports of Xeon shortage.md +++ /dev/null @@ -1,64 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Intel denies reports of Xeon shortage) -[#]: via: (https://www.networkworld.com/article/3516392/intel-denies-reports-of-xeon-shortage.html) -[#]: author: (Andy Patrizio https://www.networkworld.com/author/Andy-Patrizio/) - -Intel denies reports of Xeon shortage -====== -The PC side of Intel's Xeon processor supply remains constrained, but server customers should get their orders this year. -Intel - -Intel has denied reports that its Xeon supply chain is suffering the same constraints as its PC desktop/laptop business. CEO Bob Swan said during the company's recent earnings call that its inventory was depleted but customers are getting orders. - -The issue blew up last week when HPE – one of Intel's largest server OEM partners – reportedly [told UK-based publication The Register][1] that there were supply constraints with Cascade Lake processors, the most recent generation of Xeon Scalable processors, and urged HPE customers "to consider alternative processors." HPE did not clarify if it meant Xeon processors other than Cascade Lake or AMD Epyc processors. - -AMD must have loved that. - -[][2] - -BrandPost Sponsored by HPE - -[Take the Intelligent Route with Consumption-Based Storage][2] - -Combine the agility and economics of HPE storage with HPE GreenLake and run your IT department with efficiency. - -At the time, Intel was in the quiet period prior to announcing fourth quarter 2019 results, so when I initially approached them for comment, company executives could not answer. But on last week’s earnings call, Swan set the record straight. While supply of desktop CPUs remains constrained, especially on the low-end, Xeon supply is in “pretty good shape,” as he put it, even after a 19% growth in demand for the quarter. - -“When you have that kind of spike in demand, we are not perfect across all products or all SKUs. But server CPUs, we really prioritize that and try to put ourselves in a position where we are not constrained, and we are in pretty good shape. Pretty great shape, macro. Micro, a few challenges here and there. But server CPU supply is pretty good,” he [said on an earnings call][3] with Wall Street analysts. - -Intel CFO George Davis added that supply is expected to improve in the second half of this year, across the board, thanks to an expansion of production capacity. "In the second half of the year we would expect to be able to bring both our server products and, most importantly, our PC products back to a more normalized inventory level," Davis said. - -Intel’s data center group had record revenue of $7.2 billion in Q4 2019, up 19% from Q4 2018. In particular, cloud revenue was up 48% year-over-year as cloud service providers continue building out crazy levels of capacity. - -**[ Check out our [12 most powerful hyperconverged infrasctructure vendors][4]. | Get regularly scheduled insights by [signing up for Network World newsletters][5]. ]** - -Hyperscalers like Amazon and Google are building data centers the size of football stadiums and filling them with tens of thousands of servers at a time. I’ve heard concerns about this trend of a half-dozen or so companies hoovering up all of the supply of CPUs, memory, flash and traditional disk, and so on, but so far any real shortages have not come to pass. - -Perhaps not surprisingly, Intel's enterprise and government revenue was down 7% as more and more companies reduce their data center footprint, while communication and service providers' revenue grew 14% as customers continue to adopt AI-based solutions to transform their networks and transition to 5G. - -Join the Network World communities on [Facebook][6] and [LinkedIn][7] to comment on topics that are top of mind. - --------------------------------------------------------------------------------- - -via: https://www.networkworld.com/article/3516392/intel-denies-reports-of-xeon-shortage.html - -作者:[Andy Patrizio][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://www.networkworld.com/author/Andy-Patrizio/ -[b]: https://github.com/lujun9972 -[1]: https://www.theregister.co.uk/2020/01/20/intel_hpe_xeon_shortage/ -[2]: https://www.networkworld.com/article/3440100/take-the-intelligent-route-with-consumption-based-storage.html?utm_source=IDG&utm_medium=promotions&utm_campaign=HPE21620&utm_content=sidebar ( Take the Intelligent Route with Consumption-Based Storage) -[3]: https://seekingalpha.com/article/4318803-intel-corporation-intc-ceo-bob-swan-on-q4-2019-results-earnings-call-transcript?part=single -[4]: https://www.networkworld.com/article/3112622/hardware/12-most-powerful-hyperconverged-infrastructure-vendors.htmll -[5]: https://www.networkworld.com/newsletters/signup.html -[6]: https://www.facebook.com/NetworkWorld/ -[7]: https://www.linkedin.com/company/network-world diff --git a/sources/talk/20200131 How bacteria could run the Internet of Things.md b/sources/talk/20200131 How bacteria could run the Internet of Things.md deleted file mode 100644 index 48f86de474..0000000000 --- a/sources/talk/20200131 How bacteria could run the Internet of Things.md +++ /dev/null @@ -1,70 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (How bacteria could run the Internet of Things) -[#]: via: (https://www.networkworld.com/article/3518413/how-bacteria-could-run-the-internet-of-things.html) -[#]: author: (Patrick Nelson https://www.networkworld.com/author/Patrick-Nelson/) - -How bacteria could run the Internet of Things -====== -The Internet of Bio-Nano Things (IoBNT) would use certain kinds of bacteria, which scientists think has the attributes needed to make effective sensor networks. -Thinkstock - -Biologically created computing devices could one day be as commonplace as today’s microprocessors and microchips, some scientists believe. Consider DNA, the carrier of genetic information and the principal component of chromosomes; it's showing promise [as a data storage medium][1]. - -A recent study ([PDF][2]) suggests taking matters further and using microbes to network and communicate at nanoscale. The potential is highly attractive for the Internet of Things (IoT), where concealability and unobtrusiveness may be needed for the technology to become completely ubiquitous. - -Advantages to an organic version of IoT include not only the tiny size but also the autonomous nature of bacteria, which includes inherent propulsion. There’s “an embedded, natural propeller motor,” the scientists from Queen Mary University in London explain of the swimming functions microbes perform. - -[][3] - -BrandPost Sponsored by HPE - -[Take the Intelligent Route with Consumption-Based Storage][3] - -Combine the agility and economics of HPE storage with HPE GreenLake and run your IT department with efficiency. - -At this point, research into the Internet of Bio-Nano Things (IoBNT) is at an early stage, and the Queen Mary University researchers are predominantly explaining how similarities between bacteria and computing could be exploited. But the study is intriguing. - -"The microbes share similarities with components of typical computer IoT devices," wrote Raphael Kim and Stefan Posland in their [paper][2] published on the subject. “This presents a strong argument for bacteria to be considered as a living form of Internet of Things (IoT) device.” - -Environmental IoT is one area they say could benefit. In smart cities, for example, bacteria could be programmed to sense for pollutants. Microbes have good chemical-sensing functions and could turn out to work better than electronic sensors. In fact, the authors say that microbes share some of the same sensing, actuating, communicating and processing abilities that the computerized IoT has. - -In the case of sensing and actuating, bacteria can detect chemicals, electromagnetic fields, light, mechanical stress and temperature — just what’s required in a traditional printed circuit board-based sensor. Plus, the microbes respond. They can produce colored proteins, for example. And not only that, they respond in a more nuanced way compared to the chip-based sensors. They can be more sensitive, as one example. - -[The time of 5G is almost here][4] - -The aforementioned DNA, built into bacteria, functions as a control unit, both for processing and storing data. Genomic DNA would contain the instructions for some functioning, and plasmids — which is another form of DNA related to how genes get into organisms — customize process functions through gene addition and subtraction. - -Networking is also addressed. Transceivers are also in bacterial IoT, the team says. The importing and exporting of molecules act as a form of signaling pathway, and a DNA exchange between two cells can take place. That’s called “molecular communication” and is described as a bacterial nanonetwork. Digital-to-DNA and back to DNA again is a DNA-related area currently showing promise. - -Bacteria should become a “substrate to build a biological version of the Internet of Things,” the scientists say. Interestingly, similar to how traditional IoT has been propelled forward by tech hobbyists mucking around with Arduino microcontrollers and Raspberry Pi educational mini-computers, Kim and Posland reckon it will be do-it-yourself biology that will kick-start IoBNT. They point out that easily obtainable educational products like [the Amino Labs kit][5] already allow the generation of specific colors from bacteria, for example. - -“Currently, tools and techniques to run small-scale experiments with micro-organisms are widely available to the general public, through various channels, including maker spaces.” - -The team also suggest that hypothetically the “gamification of bacteria” could become a part of the experimentation. Biotic games exist. The researchers propose “to utilize the DIY biology movement and gamification techniques to leverage user engagement and introduction to bacteria.” - -Join the Network World communities on [Facebook][6] and [LinkedIn][7] to comment on topics that are top of mind. - --------------------------------------------------------------------------------- - -via: https://www.networkworld.com/article/3518413/how-bacteria-could-run-the-internet-of-things.html - -作者:[Patrick Nelson][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://www.networkworld.com/author/Patrick-Nelson/ -[b]: https://github.com/lujun9972 -[1]: https://www.networkworld.com/article/3268646/dna-data-storage-closer-to-becoming-reality.html -[2]: https://arxiv.org/ftp/arxiv/papers/1910/1910.01974.pdf -[3]: https://www.networkworld.com/article/3440100/take-the-intelligent-route-with-consumption-based-storage.html?utm_source=IDG&utm_medium=promotions&utm_campaign=HPE21620&utm_content=sidebar ( Take the Intelligent Route with Consumption-Based Storage) -[4]: https://www.networkworld.com/article/3354477/mobile-world-congress-the-time-of-5g-is-almost-here.html -[5]: https://amino.bio/ -[6]: https://www.facebook.com/NetworkWorld/ -[7]: https://www.linkedin.com/company/network-world diff --git a/sources/talk/20200201 IBM-s CEO Virginia Rometty to be replaced by its cloud, Red Hat chiefs.md b/sources/talk/20200201 IBM-s CEO Virginia Rometty to be replaced by its cloud, Red Hat chiefs.md deleted file mode 100644 index db462d27c0..0000000000 --- a/sources/talk/20200201 IBM-s CEO Virginia Rometty to be replaced by its cloud, Red Hat chiefs.md +++ /dev/null @@ -1,62 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (IBM's CEO Virginia Rometty to be replaced by its cloud, Red Hat chiefs) -[#]: via: (https://www.networkworld.com/article/3518795/ibms-ceo-virginia-rometty-to-be-replaced-by-its-cloud-red-hat-chiefs.html) -[#]: author: (Michael Cooney https://www.networkworld.com/author/Michael-Cooney/) - -IBM's CEO Virginia Rometty to be replaced by its cloud, Red Hat chiefs -====== -IBM cloud leader Arvind Krishna and Red Hat CEO Jim Whitehurst, to take reins from long-time CEO -IBM - -If anyone was still wondering how serious IBM is about being a major cloud player that question was resoundly answered this week when its current cloud and cognitive-software leader Arvind Krishna and Red Hat CEO Jim Whitehurst to be CEO and president, respectively, to replace long-time CEO Virginia Rometty. - -Krishna, 57, was a principal architect of IBM’s $34 billion acquisition of Red Hat last year and is currently IBM’s senior vice president of Cloud and Cognitive Software, which has become the company’s palpable future.    - -[[Get regularly scheduled insights by signing up for Network World newsletters.]][1] - -The [Red Hat acquisition][2] not only made Big Blue a bigger open-source and enterprise-software player, but mostly it got IBM into the lucrative hybrid-cloud business, targeting huge cloud competitor Google, Amazon and Microsoft among others. Gartner says that market will be worth $240 billion by next year. - -[][3] - -BrandPost Sponsored by HPE - -[Take the Intelligent Route with Consumption-Based Storage][3] - -Combine the agility and economics of HPE storage with HPE GreenLake and run your IT department with efficiency. - -In its most recent financial call IBM talked-up the successes of its cloud and Red Hat growth. For example its total cloud revenue of $6.8 billion was up 21% year over year, and Red Hat’s normalized revenue was up 24%, eclipsing $1 billion in a quarter for the first time, IBM stated. - -“The next chapter of cloud will be driven by mission-critical workloads managed in a hybrid, multi-cloud environment. This will be based on a foundation of Linux, with containers and Kubernetes. This quarter we had strong performance in RHEL and OpenShift,”  said Jim Kavanaugh IBM senior vice president and chief financial officer (a full transcript of that financial call is available from Seeking Alpha [here][4].)  “As we look forward, the largest hybrid-cloud opportunity is in services, advising clients on architectural choices, moving workloads, building new applications and of course managing them.” - -In announcing the leadershiop transition, which will occur April 6, [Rometty wrote of Krishna][5]: "He is a brilliant technologist who has played a significant role in developing our key technologies such as artificial intelligence, cloud, quantum computing and blockchain.  He is also a superb operational leader, able to win today while building the business of tomorrow." - -Under Rometty, who was named CEO in 2012, IBM has acquired 65 companies, reinvented more than 50% of IBM's portfolio, built a $21 billion hybrid-cloud business and established IBM's position in AI, quantum computing and blockchain, IBM stated. Rometty will remain as executive chairman until the end of 2020 and then retire after some 40 years at the company.  - -Meanwhile, Rometty had this to say about Whitehurst, 52, who is currently IBM senior vice president and CEO of Red Hat: "Jim is also a seasoned leader who has positioned Red Hat as the world's leading provider of open-source enterprise IT software solutions and services, and has been quickly expanding the reach and benefit of that technology to an even wider audience as part of IBM.” - -Join the Network World communities on [Facebook][6] and [LinkedIn][7] to comment on topics that are top of mind. - --------------------------------------------------------------------------------- - -via: https://www.networkworld.com/article/3518795/ibms-ceo-virginia-rometty-to-be-replaced-by-its-cloud-red-hat-chiefs.html - -作者:[Michael Cooney][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://www.networkworld.com/author/Michael-Cooney/ -[b]: https://github.com/lujun9972 -[1]: https://www.networkworld.com/newsletters/signup.html -[2]: https://www.networkworld.com/article/3317517/the-ibm-red-hat-deal-what-it-means-for-enterprises.html -[3]: https://www.networkworld.com/article/3440100/take-the-intelligent-route-with-consumption-based-storage.html?utm_source=IDG&utm_medium=promotions&utm_campaign=HPE21620&utm_content=sidebar ( Take the Intelligent Route with Consumption-Based Storage) -[4]: https://seekingalpha.com/article/4318204-international-business-machines-corporation-ibm-q4-2019-results-earnings-call-transcript -[5]: https://newsroom.ibm.com/2020-01-30-Arvind-Krishna-Elected-IBM-Chief-Executive-Officer -[6]: https://www.facebook.com/NetworkWorld/ -[7]: https://www.linkedin.com/company/network-world diff --git a/sources/talk/20200202 6 open governance questions every project needs to answer.md b/sources/talk/20200202 6 open governance questions every project needs to answer.md deleted file mode 100644 index f349b66ade..0000000000 --- a/sources/talk/20200202 6 open governance questions every project needs to answer.md +++ /dev/null @@ -1,80 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (6 open governance questions every project needs to answer) -[#]: via: (https://opensource.com/article/20/2/open-source-projects-governance) -[#]: author: (Gordon Haff https://opensource.com/users/ghaff) - -6 open governance questions every project needs to answer -====== -Open governance insights from Chris Aniszczyk, VP of Developer Relations -at the Linux Foundation. -![Two government buildings][1] - -When we think about what needs to be in place for an open source project to function, one of the first things to come to mind is probably a license. For one thing, absent an approved [Open Source Initiative (OSI) license][2], a project isn’t truly open source in the minds of many. Furthermore, the choice to use a copyleft license like the GNU General Public License (GPL) or a permissive license like Massachusetts Institute of Technology (MIT) can affect the sort of community that grows up around and uses the project. - -However, Chris Aniszczyk, VP of Developer Relations at the Linux Foundation, argues that it’s equally important to consider the **open governance of a project** because the license itself doesn’t actually tell you how the project is governed. - -These are some of the questions that Aniszczyk argues need be answered. He adds that answering these questions before disputes arise, and answering them in a way that’s viewed as open and fair to all participants leads to projects that tend to be more successful long term, especially as they grow in size. - -### 6 open governance questions for every project - - 1. Who makes the decisions? - 2. How are maintainers added? - 3. Who owns the rights to the domain? - 4. Who owns the rights to the trademarks? - 5. How are those things governed? - 6. Who owns how the build system works? - - - -However, while all of these questions should be considered, there isn’t one correct way of answering them. Different projects—and foundations hosting projects—take different approaches, whether to accommodate the requirements of a particular community or just for historical reasons. - -The latter is often the case when a project uses something often called the Benevolent Dictator for Life (BDFL) model, in which one person—usually the project's founder—generally has the final say on major project decisions. Many projects end up here by default—perhaps most notably the Linux kernel. However, Red Hat’s Joe Brockmeier observed to me that it’s mostly considered an anti-pattern at this point. "While a few BDFL-driven projects have succeeded to do well, others have stumbled with that approach," he says. - -Aniszczyk observes that "foundations have different sets of bylaws, charters, and how they’re structured, and there are fascinating differences between these organizations. Like Apache is very famous for the Apache Way, and that’s how they expect projects to operate. They very much have guardrails about how releases are done. [It’s] kind of an incubator process where every project starts way before it graduates to a top-level project. In terms of how projects are governed, it’s almost like an infinite amount of approaches," he concludes. - -### Minimum requirements - -That said, Aniszczyk lists some minimum requirements. - -"Our pattern, at least, in many Linux Foundation and Cloud Native Computing Foundation (CNCF) projects, is a _governance.md_ file, which describes how decisions are made, how things are governed, how maintainers are added, removed, how are sub-projects added, removed, etc., how releases are done. That would be step one," he says. - -#### Ownership - -Secondly, he doesn’t "think you could do open governance without assets being neutrally owned. At the end of the day, someone owns the domain, the rights to the trademark, some of the copyright, potentially. There are many great organizations out there that are super lightweight. There are things like the Apache Foundation, Software in the Public Interest, and the Software Freedom Conservancy." - -Aniszczyk also sees some common approaches as at least potential anti-patterns. A key example is contributor license agreements (CLA), which define the terms under which intellectual property, like code, is contributed to a project. He says that if a company wants "to build a product or use a dual license type model, that’s a very valid reason for a CLA. Otherwise, I view CLA as a high friction tool for developers." - -#### Developer Certificate of Origin - -Instead, he generally encourages people to "use what we call the 'Developer Certificate of Origin.' It’s how the Linux kernel works, where basically it takes all the basic things that most CLAs do, which would be like, ‘Did I write this code? Did I not copy it elsewhere? Do I have the rights to give this to you, and you sign off on?’ It’s been a very successful model played out in the kernel and many other ecosystems. I’m generally not really supportive of having CLAs unless there’s a real strict business need." - -#### Naming a project - -He also sees a lot of what he considers mistakes in naming. "Project branding is super important. There’s a common pattern where people will start a project, it could be within a company or yourself, or you have a startup, and you’ll call it, let’s say, 'Docker.' Then you have Docker the project, and you have Docker, the company. Then you also have Docker the product or Docker the enterprise product. All those things serve different audiences. It leads to confusion because I have an inherent belief that the name of something has a value proposition attached to it. Please name your company separate from your project, from your product," he argues. - -#### Trust - -Finally, Aniszczyk points to the role of open governance in building trust and confidence that a company can’t just take a project unilaterally for its own ends. "Trust is table stakes in order to build strong communities because, without openly governed institutions in projects, trust is very hard to come by," he concludes. - -_List to the Innovate @Open podcast episode from which Chris Aniszczyk’s remarks were drawn can be heard [here][3]._ - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/2/open-source-projects-governance - -作者:[Gordon Haff][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/ghaff -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/LAW_lawdotgov2.png?itok=n36__lZj (Two government buildings) -[2]: https://opensource.org/licenses -[3]: https://grhpodcasts.s3.amazonaws.com/cra1911.mp3 diff --git a/sources/talk/20200202 Bulletin Board Systems- The VICE Exposé.md b/sources/talk/20200202 Bulletin Board Systems- The VICE Exposé.md deleted file mode 100644 index 9e5396fd8c..0000000000 --- a/sources/talk/20200202 Bulletin Board Systems- The VICE Exposé.md +++ /dev/null @@ -1,127 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Bulletin Board Systems: The VICE Exposé) -[#]: via: (https://twobithistory.org/2020/02/02/bbs.html) -[#]: author: (Two-Bit History https://twobithistory.org) - -Bulletin Board Systems: The VICE Exposé -====== - -By now, you have almost certainly heard of the dark web. On sites unlisted by any search engine, in forums that cannot be accessed without special passwords or protocols, criminals and terrorists meet to discuss conspiracy theories and trade child pornography. - -We have reported before on the dark web’s [“hurtcore” communities][1], its [human trafficking markets][2], its [rent-a-hitman websites][3]. We have explored [the challenges the dark web presents to regulators][4], the rise of [dark web revenge porn][5], and the frightening size of [the dark web gun trade][6]. We have kept you informed about that one dark web forum where you can make like Walter White and [learn how to manufacture your own drugs][7], and also about—thanks to our foreign correspondent—[the Chinese dark web][8]. We have even attempted to [catalog every single location on the dark web][9]. Our coverage of the dark web has been nothing if not comprehensive. - -But I wanted to go deeper. - -We know that below the surface web is the deep web, and below the deep web is the dark web. It stands to reason that below the dark web there should be a deeper, darker web. - -A month ago, I set out to find it. Unsure where to start, I made a post on _Reddit_, a website frequented primarily by cosplayers and computer enthusiasts. I asked for a guide, a Styx ferryman to bear me across to the mythical underworld I sought to visit. - -Only minutes after I made my post, I received a private message. “If you want to see it, I’ll take you there,” wrote _Reddit_ user FingerMyKumquat. “But I’ll warn you just once—it’s not pretty to see.” - -### Getting Access - -This would not be like visiting Amazon to shop for toilet paper. I could not just enter an address into the address bar of my browser and hit go. In fact, as my Charon informed me, where we were going, there are no addresses. At least, no web addresses. - -But where exactly were we going? The answer: Back in time. The deepest layer of the internet is also the oldest. Down at this deepest layer exists a secret society of “bulletin board systems,” a network of underground meetinghouses that in some cases have been in continuous operation since the 1980s—since before Facebook, before Google, before even stupidvideos.com. - -To begin, I needed to download software that could handle the ancient protocols used to connect to the meetinghouses. I was told that bulletin board systems today use an obsolete military protocol called Telnet. Once upon a time, though, they operated over the phone lines. To connect to a system back then you had to dial its _phone number_. - -The software I needed was called [SyncTerm][10]. It was not available on the App Store. In order to install it, I had to compile it. This is a major barrier to entry, I am told, even to veteran computer programmers. - -When I had finally installed SyncTerm, my guide said he needed to populate my directory. I asked what that was a euphemism for, but was told it was not a euphemism. Down this far, there are no search engines, so you can only visit the bulletin board systems you know how to contact. My directory was the list of bulletin board systems I would be able to contact. My guide set me up with just seven, which he said would be more than enough. - -_More than enough for what,_ I wondered. Was I really prepared to go deeper than the dark web? Was I ready to look through this window into the black abyss of the human soul? - -![][11] _The vivid blue interface of SyncTerm. My directory of BBSes on the left._ - -### Heatwave - -I decided first to visit the bulletin board system called “Heatwave,” which I imagined must be a hangout for global warming survivalists. I “dialed” in. The next thing I knew, I was being asked if I wanted to create a user account. I had to be careful to pick an alias that would be inconspicuous in this sub-basement of the internet. I considered “DonPablo,” and “z3r0day,” but finally chose “ripper”—a name I could remember because it is also the name of my great-aunt Meredith’s Shih Tzu. I was then asked where I was dialing from; I decided “xxx” was the right amount of enigmatic. - -And then—I was in. Curtains of fire rolled down my screen and dispersed, revealing the main menu of the Heatwave bulletin board system. - -![][12] _The main menu of the Heatwave BBS._ - -I had been told that even in the glory days of bulletin board systems, before the rise of the world wide web, a large system would only have several hundred users or so. Many systems were more exclusive, and most served only users in a single telephone area code. But how many users dialed the “Heatwave” today? There was a main menu option that read “(L)ast Few Callers,” so I hit “L” on my keyboard. - -My screen slowly filled with a large table, listing all of the system’s “callers” over the last few days. Who were these shadowy outcasts, these expert hackers, these denizens of the digital demimonde? My eyes scanned down the list, and what I saw at first confused me: There was a “Dan,” calling from St. Louis, MO. There was also a “Greg Miller,” calling from Portland, OR. Another caller claimed he was “George” calling from Campellsburg, KY. Most of the entries were like that. - -It was a joke, of course. A meme, a troll. It was normcore fashion in noms de guerre. These were thrill-seeking Palo Alto adolescents on Adderall making fun of the surface web. They weren’t fooling me. - -I wanted to know what they talked about with each other. What cryptic colloquies took place here, so far from public scrutiny? My index finger, with ever so slight a tremble, hit “M” for “(M)essage Areas.” - -Here, I was presented with a choice. I could enter the area reserved for discussions about “T-99 and Geneve,” which I did not dare do, not knowing what that could possibly mean. I could also enter the area for discussions about “Other,” which seemed like a safe place to start. - -The system showed me message after message. There was advice about how to correctly operate a leaf-blower, as well as a protracted debate about the depth of the Strait of Hormuz relative to the draft of an aircraft carrier. I assumed the real messages were further on, and indeed I soon spotted what I was looking for. The user “Kevin” was complaining to other users about the side effects of a drug called Remicade. This was not a drug I had heard of before. Was it some powerful new synthetic stimulant? A cocktail of other recreational drugs? Was it something I could bring with me to impress people at the next VICE holiday party? - -I googled it. Remicade is used to treat rheumatoid arthritis and Crohn’s disease. - -In reply to the original message, there was some further discussion about high resting heart rates and mechanical heart valves. I decided that I had gotten lost and needed to contact FingerMyKumquat. “Finger,” I messaged him, “What is this shit I’m looking at here? I want the real stuff. I want blackmail and beheadings. Show me the scum of the earth!” - -“Perhaps you’re ready for the SpookNet,” he wrote back. - -### SpookNet - -Each bulletin board system is an island in the television-static ocean of the digital world. Each system’s callers are lonely sailors come into port after many a month plying the seas. - -But the bulletin board systems are not entirely disconnected. Faint phosphorescent filaments stretch between the islands, links in the special-purpose networks that were constructed—before the widespread availability of the internet—to propagate messages from one system to another. - -One such network is the SpookNet. Not every bulletin board system is connected to the SpookNet. To get on, I first had to dial “Reality Check.” - -![][13] _The Reality Check BBS._ - -Once I was in, I navigated my way past the main menu and through the SpookNet gateway. What I saw then was like a catalog index for everything stored in that secret Pentagon warehouse from the end of the _X-Files_ pilot. There were message boards dedicated to UFOs, to cryptography, to paranormal studies, and to “End Times and the Last Days.” There was a board for discussing “Truth, Polygraphs, and Serums,” and another for discussing “Silencers of Information.” Here, surely, I would find something worth writing about in an article for VICE. - -I browsed and I browsed. I learned about which UFO documentaries are worth watching on Netflix. I learned that “paper mill” is a derogatory term used in the intelligence community (IC) to describe individuals known for constantly trying to sell “explosive” or “sensitive” documents—as in the sentence, offered as an example by one SpookNet user, “Damn, here comes that paper mill Juan again.” I learned that there was an effort afoot to get two-factor authentication working for bulletin board systems. - -“These are just a bunch of normal losers,” I finally messaged my guide. “Mostly they complain about anti-vaxxers and verses from the Quran. This is just _Reddit_!” - -“Huh,” he replied. “When you said ‘scum of the earth,’ did you mean something else?” - -I had one last idea. In their heyday, bulletin board systems were infamous for being where everyone went to download illegal, cracked computer software. An entire subculture evolved, with gangs of software pirates competing to be the first to crack a new release. The first gang to crack the new software would post their “warez” for download along with a custom piece of artwork made using lo-fi ANSI graphics, which served to identify the crack as their own. - -I wondered if there were any old warez to be found on the Reality Check BBS. I backed out of the SpookNet gateway and keyed my way to the downloads area. There were many files on offer there, but one in particular caught my attention: a 5.3 megabyte file just called “GREY.” - -I downloaded it. It was a complete PDF copy of E. L. James’ _50 Shades of Grey_. - -_If you enjoyed this post, more like it come out every four weeks! Follow [@TwoBitHistory][14] on Twitter or subscribe to the [RSS feed][15] to make sure you know when a new post is out._ - -_Previously on TwoBitHistory…_ - -> I first heard about the FOAF (Friend of a Friend) standard back when I wrote my post about the Semantic Web. I thought it was a really interesting take on social networking and I've wanted to write about it since. Finally got around to it! -> -> — TwoBitHistory (@TwoBitHistory) [January 5, 2020][16] - --------------------------------------------------------------------------------- - -via: https://twobithistory.org/2020/02/02/bbs.html - -作者:[Two-Bit History][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://twobithistory.org -[b]: https://github.com/lujun9972 -[1]: https://www.vice.com/en_us/article/mbxqqy/a-journey-into-the-worst-corners-of-the-dark-web -[2]: https://www.vice.com/en_us/article/vvbazy/my-brief-encounter-with-a-dark-web-human-trafficking-site -[3]: https://www.vice.com/en_us/article/3d434v/a-fake-dark-web-hitman-site-is-linked-to-a-real-murder -[4]: https://www.vice.com/en_us/article/ezv85m/problem-the-government-still-doesnt-understand-the-dark-web -[5]: https://www.vice.com/en_us/article/53988z/revenge-porn-returns-to-the-dark-web -[6]: https://www.vice.com/en_us/article/j5qnbg/dark-web-gun-trade-study-rand -[7]: https://www.vice.com/en_ca/article/wj374q/inside-the-dark-web-forum-that-tells-you-how-to-make-drugs -[8]: https://www.vice.com/en_us/article/4x38ed/the-chinese-deep-web-takes-a-darker-turn -[9]: https://www.vice.com/en_us/article/vv57n8/here-is-a-list-of-every-single-possible-dark-web-site -[10]: http://syncterm.bbsdev.net/ -[11]: https://twobithistory.org/images/sync.png -[12]: https://twobithistory.org/images/heatwave-main-menu.png -[13]: https://twobithistory.org/images/reality.png -[14]: https://twitter.com/TwoBitHistory -[15]: https://twobithistory.org/feed.xml -[16]: https://twitter.com/TwoBitHistory/status/1213920921251131394?ref_src=twsrc%5Etfw diff --git a/sources/talk/20200203 Private equity firms are gobbling up data centers.md b/sources/talk/20200203 Private equity firms are gobbling up data centers.md deleted file mode 100644 index 25feb6394e..0000000000 --- a/sources/talk/20200203 Private equity firms are gobbling up data centers.md +++ /dev/null @@ -1,66 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Private equity firms are gobbling up data centers) -[#]: via: (https://www.networkworld.com/article/3518817/private-equity-firms-are-gobbling-up-the-data-center-market.html) -[#]: author: (Andy Patrizio https://www.networkworld.com/author/Andy-Patrizio/) - -Private equity firms are gobbling up data centers -====== -Private equity firms accounted for 80% of all data-center acquisitions in 2019. Is that a good thing? -scanrail / Getty Images - -Merger and acquisition activity surrounding [data-center][1] facilities is starting to resemble the Oklahoma Land Rush, and private-equity firms are taking most of the action. - -New research from Synergy Research Group saw more than 100 deals in 2019, a 50% growth over 2018, and private-equity companies accounted for 80% of them. - -[[Get regularly scheduled insights by signing up for Network World newsletters.]][2] - -M&A activity broke the 100 transaction mark for the first time in 2019, and that comes despite a 45% decline in public company activity, such as the massive Digital Reality Trust [purchase][3] of Interxion. At the same time, the size of the deals dropped in 2019, with fewer worth $1 billion or more vs. 2018, and the average deal value fell 24% vs. 2018. - -[][4] - -BrandPost Sponsored by HPE - -[Take the Intelligent Route with Consumption-Based Storage][4] - -Combine the agility and economics of HPE storage with HPE GreenLake and run your IT department with efficiency. - -Since 2015, there have been approximately 350 data-center deals, both public and private, with a total value of $75 billion, according to Synergy. Over this period, private equity buyers have accounted for 57% of the deal volume. Deals were roughly a 50-50 split until 2018 when public company purchases began to trail off. - -Anecdotally, I’ve heard one reason for the decline in big deals is there are no more big purchases to be had, at least in the US. DRT/Interxion is an exception, and Interxion is a foreign company. Other big deals, like Equinix purchasing Verizon’s data centers for $3.6 billion in 2017 or AT&T selling its data centers to private equity company Brookfield in 2019. There just isn’t much left to sell. - -The question becomes is this necessarily a good thing? Private equity firms have something of a well-earned bad reputation for buying up companies, sucking all the profit out of them and discarding the empty husk. - -But John Dinsdale, chief analyst for Synergy, said not to worry, that the private equity firms grabbing data centers are looking to grow them. “This is a heavily infrastructure-oriented business where what you can take out is pretty directly related to what you put in. A lot of these equity investors are looking to build something rather than quickly flipping the assets,” he said via e-mail. - -He added “In these types of business there isn’t that much manpower, HQ or overhead there to be stripped out.” Which is true. Data centers are pretty low-staffed. It was a national news item several years ago that Apple’s $1 billion data center in rural North Carolina would only [create 50 jobs][5]. That’s true for most data centers. - -At least one big player, Digital Realty Trust, was formed in 2004 after private-equity firm GI Partners bought out 21 data centers from a bankruptcy. DRT has grown to 214 centers in the U.S. and Europe. - -So in this case, a private equity firm buying out your data center provider might prove to be a good thing. - -Join the Network World communities on [Facebook][6] and [LinkedIn][7] to comment on topics that are top of mind. - --------------------------------------------------------------------------------- - -via: https://www.networkworld.com/article/3518817/private-equity-firms-are-gobbling-up-the-data-center-market.html - -作者:[Andy Patrizio][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://www.networkworld.com/author/Andy-Patrizio/ -[b]: https://github.com/lujun9972 -[1]: https://www.networkworld.com/article/3223692/what-is-a-data-centerhow-its-changed-and-what-you-need-to-know.html -[2]: https://www.networkworld.com/newsletters/signup.html -[3]: https://www.networkworld.com/article/3451437/digital-realty-acquisition-of-interxion-reshapes-data-center-landscape.html -[4]: https://www.networkworld.com/article/3440100/take-the-intelligent-route-with-consumption-based-storage.html?utm_source=IDG&utm_medium=promotions&utm_campaign=HPE21620&utm_content=sidebar ( Take the Intelligent Route with Consumption-Based Storage) -[5]: https://www.cultofmac.com/132012/despite-huge-unemployment-rate-apples-1-billion-data-super-center-only-created-50-new-jobs/ -[6]: https://www.facebook.com/NetworkWorld/ -[7]: https://www.linkedin.com/company/network-world diff --git a/sources/talk/20200204 Stuck in a loop- 4 signs anxiety may be affecting your work.md b/sources/talk/20200204 Stuck in a loop- 4 signs anxiety may be affecting your work.md deleted file mode 100644 index 7247f94476..0000000000 --- a/sources/talk/20200204 Stuck in a loop- 4 signs anxiety may be affecting your work.md +++ /dev/null @@ -1,92 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Stuck in a loop: 4 signs anxiety may be affecting your work) -[#]: via: (https://opensource.com/open-organization/20/2/working-anxiety-inaction-loop) -[#]: author: (Sam Knuth https://opensource.com/users/samfw) - -Stuck in a loop: 4 signs anxiety may be affecting your work -====== -Gathering feedback is an everyday practice in open organizations. Are -you collecting data to improve your products—or to alleviate your own -apprehensions? -![arrows cycle symbol for failing faster][1] - -_Editor's note: This article is part of a series on working with mental health conditions. It details the author's personal experiences and is not meant to convey professional medical advice or guidance._ - -A few months ago, I was chatting with one of our VPs about my new role and some of the work I was hoping to do with my team. I'd decided that one of my first actions in the new position would be to interview members of the senior leadership team to get their input on strategy. I'd be leading an entirely new function for my department, and I felt it would be good to get input from a wide array of stakeholders before jumping to action. This is part of my standard practice working in an open organization. - -I had several goals for these one-on-one conversations. I wanted to be transparent in my work. I wanted to validate some of my hypotheses. I wanted to confirm that what I wanted to do would be valuable to other leaders. And I wanted to get some assurance that I was on the right track. - -Or so I thought. - -"Hmmm," said the VP after I had shared my initial ideas. He hesitated. "It's very broad." More hesitation. I'm not sure what I had expected him to say, but this was definitely not the kind of assurance I was hoping for. "You need to be careful about tilting at windmills." I didn't know what "[tilting at windmills][2]" meant, but it sounded like a good thing to avoid doing. - -After having several more of these conversations over the course of a few weeks—many of them lively and fruitful—I came to one clear conclusion: Although I was getting lots of great input, I wasn't going to find any kind of consensus about priorities among the leadership team. - -So why was I asking? - -Eventually I realized what was _really_ underlying my desire to seek input: not just a desire to learn from the people I was interviewing, but also a nagging question in my gut. "Am I doing the right thing?" - -One manifestation of anxiety is a worry that we're doing something wrong, which is also related to [imposter syndrome][3] (worry that we're going to be "found out" as unqualified for or incapable of the work or the role we've been given). - -I've [previously described][4] a positive "anxiety performance loop" that can drive high performance. I can occasionally fall into another kind of anxiety loop, an "inaction loop," which can _lower_ performance. Figure 1 (below) illustrates it. - -![][5] - -One challenge of this manifestation of anxiety is that it creeps up on me; I don't consciously realize that I'm stuck in it until something happens that makes it apparent. - -In this case, that "something" was my coach. - -My desire to get input from a large variety of stakeholders was resulting in so much input that it was preventing me from moving forward. - -During a session when my coach was asking me questions about my work, I came to the realization that I was overly worried about whether I was on the right track. My desire to get input from a large variety of stakeholders (a legitimate thing to do) was resulting in so much input that it was preventing me from moving forward. - -If I hadn't been fortunate enough to be working with a coach, I may never have had that realization—or I may have had it through a much harder experience. At some point, anxiety about whether you are doing the right thing could lead to failure, not because you did the wrong thing but because you didn't do anything at all. - -I've found a few signs to help me realize if I'm in an anxiety inaction loop. I may be in one of these loops if: - - * I talk about what I'm _planning_ to do rather than what I _am_ doing - * I feel that I need just _one more person's_ opinion, or I just need to check in with my boss _one more time_, before moving ahead - * I am revising the same presentation repeatedly but never actually giving the presentation to anyone - * I am avoiding or delaying something (such as giving a talk, or making a decision) - - - -Having tools for self-reflection is critical. The reality is that most of the time I'm not working with a coach, and I need to be able to recognize these symptoms on my own. That will only happen if I set aside time to reflect on how things are going and to ask myself hard questions about whether I am stuck in any of these stalling patterns. I've started to build this time into my calendar, usually on Friday afternoons, or early in the morning before my meetings start. - -The fact that my anxiety can manifest both as dual worries—that I am not doing the right thing and that I am not doing enough—can be paradoxical. - -Recognizing the anxiety loop is the first step. To get out of it, I've developed a few techniques like: - - * Setting achievement milestones in 90 day increments, reviewing them on a weekly basis, and using this as an opportunity to reflect on progress. - * Reminding myself that (in fact) I might _not_ be doing the right thing. If that's the case, I'll get feedback, correct, and keep going (it won't be the end of the world). - * Reminding myself that I am in this job for a reason; people want me to do the job. They don't want me to ask them what to do or wait for them to tell me what to do. - * When seeking input from others, saying "This is what I am planning on doing" rather than "What do you think of this?" then either hearing objections if they arise or moving ahead if not. - - - -The fact that my anxiety can manifest both as dual worries—that I am not doing the right thing _and_ that I am not doing enough—can be paradoxical. Over-correcting to get out of an anxiety inaction loop could put me right into [an anxiety performance loop][4]. Neither situation feels like a healthy one. - -As with most things, the answer is balance and moderation. Finding that balance is precisely the challenge anxiety creates. In some cases I may be worried I'm not doing enough; in others I may be worried that what I'm doing isn't right, which leads me to slow down. The best approach I have found so far is awareness—taking the time to reflect and trying to correct if I'm going too far in either direction. - --------------------------------------------------------------------------------- - -via: https://opensource.com/open-organization/20/2/working-anxiety-inaction-loop - -作者:[Sam Knuth][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/samfw -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/fail_progress_cycle_momentum_arrow.png?itok=q-ZFa_Eh (arrows cycle symbol for failing faster) -[2]: https://en.wikipedia.org/wiki/Don_Quixote#Tilting_at_windmills -[3]: https://en.m.wikipedia.org/wiki/Impostor_syndrome -[4]: https://opensource.com/open-organization/20/1/leading-openly-anxiety -[5]: https://opensource.com/sites/default/files/images/open-org/loop_2.png diff --git a/sources/talk/20200206 How Drupal 8 aims to be future-proof.md b/sources/talk/20200206 How Drupal 8 aims to be future-proof.md deleted file mode 100644 index 616aaa164f..0000000000 --- a/sources/talk/20200206 How Drupal 8 aims to be future-proof.md +++ /dev/null @@ -1,114 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (How Drupal 8 aims to be future-proof) -[#]: via: (https://opensource.com/article/20/2/drupal-8-promises) -[#]: author: (Shefali Shetty https://opensource.com/users/shefalishetty) - -How Drupal 8 aims to be future-proof -====== -What you need to know about Drupal 8 updates. -![Drupal logo with gray and blue][1] - -Thomas Edison famously said, "The three great essentials to achieve anything worthwhile are, first, hard work; second, stick-to-itiveness; third, common sense." This quote made me wonder if "sticking-to-it" is contradictory to innovation; does it make you resistant to change? But, the more I pondered on it, I realized that innovation is fueled by perseverance. - -Before Drupal 8 was introduced, the Core committee had not just promised to innovate; they decided to be persistent. Persistent in continuous reinvention. Persistent in making Drupal easier to adopt—not only by the market but also by developers with various levels of expertise. However, to be able to make Drupal successful and relevant in the long run, a drastic change was needed—a change that would build a better future. For this, Drupal 8 had to dismantle the Drupal 7 architecture and lay a fresh foundation for a promising future. Moving on to Drupal 9 (coming soon) and subsequent versions will now be easy and straightforward. - -### Freedom to innovate with open source - -Innovation brings freedom, and freedom creates innovation. Open source gives you the freedom to access, learn, contribute, and, most importantly, the freedom to innovate. The ability to learn, catch up, and reinvent is extremely crucial today. Drupal began as a small internal news website and later went on to become an open source content management system (CMS) because there was a potential to make it much more compelling by attracting more contributions. It gave developers the freedom to collaborate, re-use components, and improvise on it to create something more modern, powerful, and relevant. - -### Promises delivered: Drupal 8 version history - -The web is always changing. To stay relevant, [Drupal][2] had to introduce changes that were revolutionary but, at the same time, not so hard to accept. Drupal 7, as a content management system, was widely welcomed. But it lacked in certain aspects like developer adoptability, easy upgrade paths, better API support, and more. Drupal 8 changed everything. They did not choose to build upon Drupal 7, which would have been an easier choice for an open source CMS. For a more future-proof CMS that is ready to accept changes, Drupal 8 had to be rebuilt with more modern components like Symfony, Twig, PHP 7, and initiatives like the API-first initiative, mobile-first initiative, Configuration Management initiative, etc. - -Drupal 8 was released with a promise of providing more ambitious digital experiences with better UX improvements and mobile compatibilities. The goal was to continuously innovate and reinvent itself. For this to work, these practices needed to be put in place: semantic versioning (major.minor.patch), scheduled releases (two minor releases per year), and introducing experimental modules in Core. All of this while providing backward compatibility and removing deprecated code. - -Let’s look at some of the promises that have been delivered with each minor version of Drupal 8. - - * **Drupal 8.0** - * Modern and sophisticated PHP practices, object-oriented programming, and libraries. - * Storage and management of configuration was a bit of a messy affair with Drupal 7. The Configuration Management Initiative was introduced with Drupal 8.0, which allowed for cleaner installations and config management. Configurations are now stored in easily readable YAML format files. These config files can also be readily imported. This allows for smooth and easy transitions to different deployment environments. - * Adding Symfony components drastically improved Drupal 8’s flexibility, performance, and robustness. Symfony is an open source PHP framework, and it abides by the MVC (Model-View-Controller) architecture. - * Twig is a powerful template engine for PHP, replaced Drupal’s engine since 2005, PHPTemplate. With Twig, the code is now more readable, and the theme system is less complex, uses inheritance to avoid redundant code, and offers more security by sanitizing variables and functions. - * The Entity API, which was quite limited and a contributed module in Drupal 7, is now full-fledged and is in Drupal 8 Core. Since Drupal 8 treats everything as an "entity," the Entity API provides a standardized method of working with them. - * The CKEditor, which is a WYSIWYG (What You See Is What You Get) editor, was introduced. It allows for editing on the go, in-context editing, and previewing your changes before it gets published. - * **Drupal 8.1** - * The alpha version of the BigPipe module got introduced to Core as an experimental module. BigPipe renders Drupal 8 pages faster using methods like caching and auto-placeholder-ing. - * A Migrate UI module suite got introduced to Core as an experimental module. It makes migrating from Drupal 7 to Drupal 8 easier. - * The CKEditor now includes spell-check functionality and the ability to add optional languages in text. - * Improved testing infrastructure and support especially for Javascript interactions. - * Composer is an essential tool to manage third-party dependencies of websites and modules. With Drupal 8.1, Drupal Core and all its dependencies are now managed and packaged by Composer. - * **Drupal 8.2** - * The Place Block module is now an experimental module in Core. With this module, you can easily play around with blocks right from the web UI. Configuring and editing blogs can be done effortlessly. - * A new Content Moderation module that is based on the contributed module Workbench Moderation has been introduced as an experimental module in Core. It allows for granular workflow permissions and support. - * Content authoring experiences have been enhanced with better revision history and recovery. - * Improved page caching for 404 responses. - * **Drupal 8.3** - * The BigPipe module is now stable! - * More improvements in the CKEditor. A smooth copy-paste experience from Word, drag and drop images, and an Autogrow plugin that lets you work with bigger screen sizes and more. - * Better admin status reporting for improved administrator experience. - * The Field Layout module was added as an experimental module in Core. This module replaces the Display Suite in Drupal 7 and allows for arranging and assigning layouts to different content types. - * **Drupal 8.4** - * The 8.4 version calls for many stable releases of previously experimental modules. - * Inline Form Errors module, which was introduced in Drupal 8.0, is now stable. With this module, form errors are placed next to the form element in question, and a summary of the errors is provided on the top of the form. - * Another stable release—the DateTime Range module that allows date formats to match that of the Calendar module. - * The Layout Discovery API, which was added as an experimental module in Drupal 8.3, is now stable and ready to roll. With this module, the Layout API is added to Drupal 8 Core. It has adopted the previously popular contributed modules—Panels and Panelizer—that were used extensively to create amazing layouts. Drupal 8’s Layout initiative has ensured that you have a powerful Layout building tool right out of the box. - * The very popular Media module is added as an API for developers to be able to port a wide range of Media contributed modules from Drupal 7. For example, media modules like the Media entity, media entity document, media entity browser, media entity image, and more. However, this module is still hidden from site builders till the porting and fixing of issues are over with. - * **Drupal 8.5** - * One of the top goals that Drupal 8 set out to reach was making rich images, media integration, and asset management easier and better for content authors. It has successfully achieved this goal by adding the Media module now in Core (and it isn’t hidden anymore).  - * Content Moderation module is now stable. Defining various levels and statuses of workflow and moving them around is effortless. - * The Layout builder module is introduced as an experimental module. It gives site builders full control and flexibility to customize and built layouts from other layout components, blocks, and regions. This has been one of the top goals for Drupal 8 site builders. - * The Migrate UI module suite that was experimental in Drupal 8.1 is now considered stable. - * Big pipe module which got previously stable in version 8.5, now comes by default in the standard installation profile. All Drupal 8 sites are now faster by default. - * PHP 7.2 is here, and Drupal 8.5 now runs on it and fully supports the new features and performance improvements that it offers. - * **Drupal 8.6** - * The very helpful oEmbed format is now supported in the Drupal 8.6 Media module. The oEmbed API helps in displaying embedded content when a URL for that resource is posted. Also included within the Media module is support for embedding YouTube and Vimeo videos. - * An experimental Media Library module is now in Core. Adding and browsing multiple media is now supported and can also be customized. - * A new demo site called Umami has been introduced that demonstrates Drupal 8's Core features. This installation profile can give a new site builder a peek into Drupal’s capabilities and allows them to play around with views, fields, and pages for learning purposes. It also acts as an excellent tool for Drupal agencies to showcase Drupal 8 to its customers. - * Workspaces module is introduced as an experimental module. When you have multiple content packages that need to be reviewed (status change) and deployed, this module lets you do all of it together and saves you a lot of time. - * Installing Drupal has now gotten easier with this version. It offers two new easy ways of installing Drupal. One with a "quick start" command that only requires you to have PHP installed. In the other option, the installer automatically identifies if there has been a previous installation and lets you install it from there. - * **Drupal 8.7** - * One of the most significant additions to Drupal Core that went straight there as a stable module is the JSON:API module. It takes forward Drupal’s API-first initiative and provides an easy way to build decoupled applications. - * The Layout Builder module is now stable and better than ever before. It now even lets you work with unstructured data as well as fieldable entities. - * Media Library module gets a fresh new look with this version release. Marketers and Content editors now have it much easier with the ability to search, attach, drag, and drop media files whenever and wherever they need it. - * Fully supports PHP 7.3. - * Taxonomy and Menu items are revision-able, which means that they can be used in editorial workflows and can be assigned statuses. - * **Drupal 8.8** - * This version is going to be the last minor version of Drupal 8 where you will find new features or deprecations. The next version, Drupal 8.9, will not include any new additions but will be very similar to Drupal 9.0. - * The Media Library module is now stable and ready to use. - * Workspaces module is now enhanced to include adding hierarchical workspaces. This gives more flexibility in the hands of the content editor. It also works with the Content Moderation module now. - * Composer now receives native support and does not need external projects to package Drupal with its dependencies. You can create new projects with just a one-line command using Composer. - * Keeping its promises on making Drupal easier to learn for newbies, a new experimental module for Help Topics has been introduced. Each module, theme, and installation profile can have task-based help topics. - - - -### Opening doors to a wider set of developers - -Although Drupal was largely accepted and loved for its flexibility, resilience, and, most of all, its content management abilities, there was a nagging problem—the "deep learning curve" issue. While many Drupalers argue that the deep learning curve is part and parcel of a CMS that can build highly complex and powerful applications, finding Drupal talent is a challenge. Dries, the founder of Drupal, says, "For most people new to Drupal, Drupal 7 is really complex." He also adds that this could be because of holding on to procedural programming, large use of structured arrays, and more such "Drupalisms" (as he calls them). - -This issue needed to be tackled. With Drupal 8 adopting modern platforms and standards like object-oriented programming concepts, latest PHP standards, Symfony framework, and design patterns, the doors are now flung wide open to a broad range of talent (site builders, themes, developers). - -### Final thoughts - -"The whole of science is nothing more than a refinement of everyday thinking."– Albert Einstein. - -Open source today is more than just free software. It is a body of collaborated knowledge and effort that is revolutionizing the digital ecosystem. The digital world is moving at a scarily rapid pace, and I believe it is only innovation and perseverance from open source communities that can bring it to speed. The Drupal community unwaveringly reinvents and refines itself each day, which is especially seen in the latest release of Drupal 8. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/2/drupal-8-promises - -作者:[Shefali Shetty][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/shefalishetty -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/drupal_blue_gray_lead.jpeg?itok=eSkFp_ur (Drupal logo with gray and blue) -[2]: https://www.specbee.com/drupal-web-development-services diff --git a/sources/talk/20200209 Open source vs. proprietary- What-s the difference.md b/sources/talk/20200209 Open source vs. proprietary- What-s the difference.md deleted file mode 100644 index 2c6b6fce0b..0000000000 --- a/sources/talk/20200209 Open source vs. proprietary- What-s the difference.md +++ /dev/null @@ -1,72 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Open source vs. proprietary: What's the difference?) -[#]: via: (https://opensource.com/article/20/2/open-source-vs-proprietary) -[#]: author: (Seth Kenlon https://opensource.com/users/seth) - -Open source vs. proprietary: What's the difference? -====== -Need four good reasons to tell your friends to use open source? Here's -how to make your case. -![Doodles of the word open][1] - -There's a lot to be learned from open source projects. After all, managing hundreds of disparate, asynchronous commits and bugs doesn't happen by accident. Someone or something has to coordinate releases, and keep all the code and project roadmaps organized. It's a lot like life. You have lots of tasks demanding your attention, and you have to tend to each in turn. To ensure everything gets done before its deadline, you try to stay organized and focused. - -Fortunately, there are [applications out there][2] designed to help with that sort of thing, and many apply just as well to real life as they do to software. - -Here are some reasons for choosing [open tools][3] when improving personal or project-based organization. - -### Data ownership - -It's rarely profitable for proprietary tools to provide you with [data][4] dumps. Some products, usually after a long battle with their users (and sometimes a lawsuit), provide ways to extract your data from them. But the real issue isn't whether a company lets you extract data; it's the fact that the capability to get to your data isn't guaranteed in the first place. It's your data, and when it's literally what you do each day, it is, in a way, your life. Nobody should have primary access to that but you, so why should you have to petition a company for a copy? - -Using an open source tool ensures you have priority access to your own activities. When you need a copy of something, you already have it. When you need to export it from one application to another, you have complete control of how the data is exchanged. If you need to export your schedule from a calendar into your kanban board, you can manipulate and process the data to fit. You don't have to wait for functionality to be added to the app, because you own the data, the database, and the app. - -### Working for yourself - -When you use open source tools, you often end up improving them, sometimes whether you know it or not. You may not (or you may!) download the source and hack on code, but you probably fall into a way of using the tool that works best for you. You optimize your interaction with the tool. The unique way you interact with your tooling creates a kind of meta-tool: you haven't changed the software, but you've adapted it and yourself in ways that the project author and a dozen other users never imagined. Everyone does this with whatever software they rely upon, and it's why sitting at someone else's computer to use a familiar software (or even just looking over someone's shoulder) often feels foreign, like you're using a different version of the application than you're used to. - -When you do this with proprietary software, you're either contributing to someone else's marketplace for free, or you're adjusting your own behavior based on forces outside your own control. When you optimize an open source tool, both the software and the interaction belong to you. - -### The right to not upgrade - -Tools change. It's the way of things. - -Change can be frustrating, but it can be crippling when a service changes so severely that it breaks your workflow. A proprietary service has and maintains every right to change its product, and you explicitly accept this by using the product. If your favorite accounting software or scheduling web app changes its interface or its output options, you usually have no recourse but to adapt or stop using the service. Proprietary services reserve the right to remove features, arbitrarily and without warning, and it's not uncommon for companies to start out with an open API and strong compatibility with open source, only to drop these conveniences once its customer base has reached critical mass. - -Open source changes, too. Changes in open source can be frustrating, too, and it can even drive users to alternative open source solutions. The difference is that when open source changes, you still own the unchanged code base. More importantly, lots of other people do too, and if there's enough desire for it, the project can be forked. There are several famous examples of this, but admittedly there are just as many examples where the demand was _not_ great enough, and users essentially had to adapt. - -Even so, users are never truly forced to do anything in open source. If you want to hack together an old version of your mission-critical service on an old distro running ancient libraries in a virtual machine, you can do that because you own the code. When a proprietary service changes, you have no choice but to follow. - -With open source, you can choose to forge your own path when necessary or follow the developers when convenient. - -### Open for collaboration - -Proprietary services can affect others in ways you may not realize. Closed source tools are accidentally insidious. If you use a proprietary product to manage your schedule or your recipes or your library, or you use a proprietary font in your graphic design or website, then the moment you need to coordinate with someone else, you are essentially forcing them to sign up for the same proprietary service because proprietary services usually require accounts. Of course, the same is sometimes true for an open source solution, but it's not common for open source products to collect and sell user data the way proprietary vendors do, so the stakes aren't quite the same. - -### Independence - -Ultimately, the open source advantage is one of independence for you and for those you want to collaborate with. Not everyone uses open source, and even if everyone did not everyone would use the exact same tool or the same assets, so there will always be some negotiation when sharing data. However, by keeping your data and projects open, you enable everyone (your future self included) to contribute. - -What steps do you take to ensure your work is open and accessible? Tell us in the comments! - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/2/open-source-vs-proprietary - -作者:[Seth Kenlon][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/seth -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/EDUCATION_doodles.png?itok=W_0DOMM4 (Doodles of the word open) -[2]: https://opensource.com/article/20/1/open-source-productivity-tools -[3]: https://opensource.com/tags/tools -[4]: https://opensource.com/tags/analytics-and-metrics diff --git a/sources/talk/20200210 5 firewall features IT pros should know about but probably don-t.md b/sources/talk/20200210 5 firewall features IT pros should know about but probably don-t.md deleted file mode 100644 index 7619ea5e3a..0000000000 --- a/sources/talk/20200210 5 firewall features IT pros should know about but probably don-t.md +++ /dev/null @@ -1,106 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (5 firewall features IT pros should know about but probably don’t) -[#]: via: (https://www.networkworld.com/article/3519854/4-firewall-features-it-pros-should-know-about-but-probably-dont.html) -[#]: author: (Zeus Kerravala https://www.networkworld.com/author/Zeus-Kerravala/) - -5 firewall features IT pros should know about but probably don’t -====== -As a foundational network defense, firewalls continue to be enhanced with new features, so many that some important ones that shouldn’t be get overlooked. -Natalya Burova / Getty Images - -[Firewalls][1] continuously evolve to remain a staple of network security by incorporating functionality of standalone devices, embracing network-architecture changes, and integrating outside data sources to add intelligence to the decisions they make – a daunting wealth of possibilities that is difficult to keep track of. - -Because of this richness of features, next-generation firewalls are difficult to master fully, and important capabilities sometimes can be, and in practice are, overlooked. - -Here is a shortlist of new features IT pros should be aware of. - -**[ Also see [What to consider when deploying a next generation firewall][2]. | Get regularly scheduled insights by [signing up for Network World newsletters][3]. ]** - -### Also in this series: - - * [Cybersecurity in 2020: From secure code to defense in depth][4] (CSO) - * [More targeted, sophisticated and costly: Why ransomware might be your biggest threat][5] (CSO) - * [How to bring security into agile development and CI/CD][6] (Infoworld) - * [UEM to marry security – finally – after long courtship][7] (Computerworld) - * [Security vs. innovation: IT's trickiest balancing act][8] (CIO) - - - -## Network segmentation - -Dividing a single physical network into multiple logical networks is known as [network segmentation][9] in which each segment behaves as if it runs on its own physical network. The traffic from one segment can’t be seen by or passed to another segment. - -This significantly reduces attack surfaces in the event of a breach. For example, a hospital could put all its medical devices into one segment and its patient records into another. Then, if hackers breach a heart pump that was not secured properly, that would not enable them to access private patient information. - -It’s important to note that many connected things that make up the [internet of things][10] have older operating systems and are inherently insecure and can act as a point of entry for attackers, so the growth of IoT and its distributed nature drives up the need for network segmentation. - -## Policy optimization - -Firewall policies and rules are the engine that make firewalls go. Most security professionals are terrified of removing older policies because they don’t know when they were put in place or why. As a result, rules keep getting added with no thought of reducing the overall number. Some enterprises say they have millions of firewall rules in place. The fact is, too many rules add complexity, can conflict with each other and are time consuming to manage and troubleshoot. - -[][11] - -Policy optimization migrates legacy security policy rules to application-based rules that permit or deny traffic based on what application is being used. This improves overall security by reducing the attack surface and also provides visibility to safely enable application access. Policy optimization identifies port-based rules so they can be converted to application-based whitelist rules or add applications from a port-based rule to an existing application-based rule without compromising application availability. It also identifies over-provisioned application-based rules. Policy optimization helps prioritize which port-based rules to migrate first, identify application-based rules that allow applications that aren’t being used, and analyze rule-usage characteristics such as hit count, which compares how often a particular rule is applied vs. how often all the rules are applied. - -Converting port-based rules to application-based rules improves security posture because the organization can select the applications they want to whitelist and deny all other applications. That way unwanted and potentially malicious traffic is eliminated from the network. - -## Credential-theft prevention - -Historically, workers accessed corporate applications from company offices. Today they access legacy apps, SaaS apps and other cloud services from the office, home, airport and anywhere else they may be. This makes it much easier for threat actors to steal credentials. The Verizon [Data Breach Investigations Report][12] found that 81% of hacking-related breaches leveraged stolen and/or weak passwords. - -Credential-theft prevention blocks employees from using corporate credentials on sites such as Facebook and Twitter.  Even though they may be sanctioned applications, using corporate credentials to access them puts the business at risk. - -Credential-theft prevention works by scanning username and password submissions to websites and compare those submissions to lists of official corporate credentials. Businesses can choose what websites to allow submitting corporate credentials to or block them based on the URL category of the website. - -When the firewall detects a user attempting to submit credentials to a site in a category that is restricted, it can display a block-response page that prevents the user from submitting credentials. Alternatively, it can present a continue page that warns users against submitting credentials to sites classified in certain URL categories, but still allows them to continue with the credential submission. Security professionals can customize these block pages to educate users against reusing corporate credentials, even on legitimate, non-phishing sites. - -## DNS security - -A combination of machine learning, analytics and automation can block attacks that leverage the [Domain Name System (DNS)][13]. In many enterprises, DNS servers are unsecured and completely wide open to attacks that redirect users to bad sites where they are phished and where data is stolen. Threat actors have a high degree of success with DNS-based attacks because security teams have very little visibility into how attackers use the service to maintain control of infected devices. There are some standalone DNS security services that are moderately effective but lack the volume of data to recognize all attacks. - -When DNS security is integrated into firewalls, machine learning can analyze the massive amount of network data, making standalone analysis tools unnecessary. DNS security integrated into a firewall can predict and block malicious domains through automation and the real-time analysis that finds them.  As the number of bad domains grows, machine learning can find them quickly and ensure they don’t become problems. - -Integrated DNS security can also use machine-learning analytics to neutralize DNS tunneling, which smuggles data through firewalls by hiding it within DNS requests. DNS security can also find malware command-and-control servers.  It builds on top of signature-based systems to identify advanced tunneling methods and automates the shutdown of DNS-tunneling attacks. - -## Dynamic user groups - -It’s possible to create policies that automate the remediation of anomalous activities of workers. The basic premise is that users’ roles within a group means their network behaviors should be similar to each other. For example, if a worker is phished and strange apps were installed, this would stand out and could indicate a breach. - -Historically, quarantining a group of users was highly time consuming because each member of the group had to be addressed and policies enforced individually. With dynamic user groups, when the firewall sees an anomaly it creates policies that counter the anomoly and pushes them out to the user group. The entire group is automatically updated without having to manually create and commit policies. So, for example, all the people in accounting would receive the same policy update automatically, at once, instead of manually, one at a time. Integration with the firewall enables the firewall to distribute the policies for the user group to all the other infrastructure that requires it including other firewalls, log collectors or applications.  - -Firewalls have been and will continue to be the anchor of cyber security. They are the first line of defense and can thwart many attacks before they penetrate the enterprise network.  Maximizing the value of firewalls means turning on many of the advanced features, some of which have been in firewalls for years but not turned on for a variety of reasons. - -Join the Network World communities on [Facebook][14] and [LinkedIn][15] to comment on topics that are top of mind. - --------------------------------------------------------------------------------- - -via: https://www.networkworld.com/article/3519854/4-firewall-features-it-pros-should-know-about-but-probably-dont.html - -作者:[Zeus Kerravala][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://www.networkworld.com/author/Zeus-Kerravala/ -[b]: https://github.com/lujun9972 -[1]: https://www.networkworld.com/article/3230457/what-is-a-firewall-perimeter-stateful-inspection-next-generation.html -[2]: https://www.networkworld.com/article/3236448/lan-wan/what-to-consider-when-deploying-a-next-generation-firewall.html -[3]: https://www.networkworld.com/newsletters/signup.html -[4]: https://www.csoonline.com/article/3519913/cybersecurity-in-2020-from-secure-code-to-defense-in-depth.html -[5]: https://www.csoonline.com/article/3518864/more-targeted-sophisticated-and-costly-why-ransomware-might-be-your-biggest-threat.html -[6]: https://www.infoworld.com/article/3520969/how-to-bring-security-into-agile-development-and-cicd.html -[7]: https://www.computerworld.com/article/3516136/uem-to-marry-security-finally-after-long-courtship.html -[8]: https://www.cio.com/article/3521009/security-vs-innovation-its-trickiest-balancing-act.html -[9]: https://www.networkworld.com/article/3016565/how-network-segmentation-provides-a-path-to-iot-security.html -[10]: https://www.networkworld.com/article/3207535/what-is-iot-the-internet-of-things-explained.html -[11]: https://www.networkworld.com/article/3440100/take-the-intelligent-route-with-consumption-based-storage.html?utm_source=IDG&utm_medium=promotions&utm_campaign=HPE21620&utm_content=sidebar ( Take the Intelligent Route with Consumption-Based Storage) -[12]: https://enterprise.verizon.com/resources/reports/dbir/ -[13]: https://www.networkworld.com/article/3268449/what-is-dns-and-how-does-it-work.html -[14]: https://www.facebook.com/NetworkWorld/ -[15]: https://www.linkedin.com/company/network-world diff --git a/sources/talk/20200211 Future ‘smart walls- key to IoT.md b/sources/talk/20200211 Future ‘smart walls- key to IoT.md deleted file mode 100644 index 28a4624231..0000000000 --- a/sources/talk/20200211 Future ‘smart walls- key to IoT.md +++ /dev/null @@ -1,74 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Future ‘smart walls’ key to IoT) -[#]: via: (https://www.networkworld.com/article/3519440/future-smart-walls-key-to-iot.html) -[#]: author: (Patrick Nelson https://www.networkworld.com/author/Patrick-Nelson/) - -Future ‘smart walls’ key to IoT -====== -MIT researchers are developing a wallpaper-like material that’s made up of simple RF switch elements and can be applied to building surfaces. Using beamforming, the antenna array could potentially improve wireless signal strength nearly tenfold. -Jason Dorfman, MIT CSAIL - -IoT equipment designers shooting for efficiency should explore the potential for using buildings as antennas, researchers say. - -Environmental surfaces such as walls can be used to intercept and beam signals, which can increase reliability and data throughput for devices, according to MIT's Computer Science and Artificial Intelligence Laboratory ([CSAIL][1]). - -Researchers at CSAIL have been working on a smart-surface repeating antenna array called RFocus. The antennas, which could be applied in sheets like wallpaper, are designed to be incorporated into office spaces and factories. Radios that broadcast signals could then become smaller and less power intensive. - -[[Get regularly scheduled insights by signing up for Network World newsletters.]][2] - -“Tests showed that RFocus could improve the average signal strength by a factor of almost 10,” CSAIL's Adam Conner-Simons [writes in MIT News][3]. “The platform is also very cost-effective, with each antenna costing only a few cents.” - -The prototype system CSAIL developed uses more than 3,000 antennas embedded into sheets, which are then hung on walls. In future applications, the antennas could adhere directly to the wall or be integrated during building construction. - -“People have had things completely backwards this whole time,” the article claims. “Rather than focusing on the transmitters and receivers, what if we could amplify the signal by adding antennas to an external surface in the environment itself?” - -RFocus relies on [beamforming][4]; multiple antennas broadcast the same signal at slightly different times, and as a result, some of the signals cancel each other and some strengthen each other. When properly executed, beamforming can focus a stronger signal in a particular direction. - -[][5] - -"The surface does not emit any power of its own," the developers explain in their paper ([PDF][6]). The antennas, or RF switch elements, as the group describes them, either let a signal pass through or reflect it through software. Signal measurements allow the apparatus to define exactly what gets through and how it’s directed. - -Importantly, the RFocus surface functions with no additional power requirements. The “RFocus surface can be manufactured as an inexpensive thin ‘wallpaper’ requiring no wiring,” the group says. - -### Antenna design - -Antenna engineering is turning into a vital part of IoT development. It's one of the principal reasons data throughput and reliability keeps improving in wireless networks. - -Arrays where multiple, active panel components make up antennas, rather than a simple passive wire, as is the case in traditional radio, is an example of advancements in antenna engineering. - -[Spray-on antennas][7] (unrelated to the CSAIL work) is another in-the-works technology I've written about. In that case, flexible substrates create the antenna, which is applied in a manner that's similar to spray paint. Another future direction could be anti-laser antennas: [Reversing a laser][8], where the laser becomes an absorber of light rather than the sender of it, could allow all data-carrying energy to be absorbed, making it the perfect light-based antenna. - -Development of 6G wireless, which is projected to supersede 5G sometime around 2030, includes efforts to figure out how to directly [couple antennas to fiber][9]—the radio ends up being part of the cable, in other words. - -"We can’t get faster internet speeds without more efficient ways of delivering wireless signals," CSAIL’s Conner-Simons says. - -Join the Network World communities on [Facebook][10] and [LinkedIn][11] to comment on topics that are top of mind. - --------------------------------------------------------------------------------- - -via: https://www.networkworld.com/article/3519440/future-smart-walls-key-to-iot.html - -作者:[Patrick Nelson][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://www.networkworld.com/author/Patrick-Nelson/ -[b]: https://github.com/lujun9972 -[1]: https://www.csail.mit.edu/ -[2]: https://www.networkworld.com/newsletters/signup.html -[3]: http://news.mit.edu/2020/smart-surface-smart-devices-mit-csail-0203 -[4]: https://www.networkworld.com/article/3445039/beamforming-explained-how-it-makes-wireless-communication-faster.html -[5]: https://www.networkworld.com/article/3440100/take-the-intelligent-route-with-consumption-based-storage.html?utm_source=IDG&utm_medium=promotions&utm_campaign=HPE21620&utm_content=sidebar ( Take the Intelligent Route with Consumption-Based Storage) -[6]: https://drive.google.com/file/d/1TLfH-r2w1zlGBbeeM6us2sg0yq6Lm2wF/view -[7]: https://www.networkworld.com/article/3309449/spray-on-antennas-will-revolutionize-the-internet-of-things.html -[8]: https://www.networkworld.com/article/3386879/anti-lasers-could-give-us-perfect-antennas-greater-data-capacity.html -[9]: https://www.networkworld.com/article/3438337/how-6g-will-work-terahertz-to-fiber-conversion.html -[10]: https://www.facebook.com/NetworkWorld/ -[11]: https://www.linkedin.com/company/network-world diff --git a/sources/talk/20200211 Who should lead the push for IoT security.md b/sources/talk/20200211 Who should lead the push for IoT security.md deleted file mode 100644 index a8d028ad33..0000000000 --- a/sources/talk/20200211 Who should lead the push for IoT security.md +++ /dev/null @@ -1,75 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Who should lead the push for IoT security?) -[#]: via: (https://www.networkworld.com/article/3526490/who-should-lead-the-push-for-iot-security.html) -[#]: author: (Jon Gold https://www.networkworld.com/author/Jon-Gold/) - -Who should lead the push for IoT security? -====== -Industry groups and governmental agencies have been taking a stab at rules to improve the security of the internet of things, but so far there’s nothing comprehensive. -Thinkstock - -The ease with which internet of things devices can be compromised, coupled with the potentially extreme consequences of breaches, have prompted action from legislatures and regulators, but what group is best to decide? - -Both the makers of [IoT][1] devices and governments are aware of the security issues, but so far they haven’t come up with standardized ways to address them. - -[[Get regularly scheduled insights by signing up for Network World newsletters.]][2] - -“The challenge of this market is that it’s moving so fast that no regulation is going to be able to keep pace with the devices that are being connected,” said Forrester vice president and research director Merritt Maxim. “Regulations that are definitive are easy to enforce and helpful, but they’ll quickly become outdated.” - -The latest such effort by a governmental body is a proposed regulation in the U.K. that would impose three major mandates on IoT device manufacturers that would address key security concerns: - - * device passwords would have to be unique, and resetting them to factory defaults would be prohibited - * device makers would have to offer a public point of contact for the disclosure of vulnerabilities - * device makers would have to “explicitly state the minimum length of time for which the device will receive security updates” - - - -This proposal is patterned after a California law that took effect last month. Both sets of rules would likely have a global impact on the manufacture of IoT devices, even though they’re being imposed on limited jurisdictions. That’s because it’s expensive for device makers to create separate versions of their products. - -IoT-specific regulations aren’t the only ones that can have an impact on the marketplace. Depending on the type of information a given device handles, it could be subject to the growing list of data-privacy laws being implemented around the world, most notably Europe’s General Data Protection Regulation, as well as industry-specific regulations in the U.S. and elsewhere. - -The U.S. Food and Drug Administration, noted Maxim, has been particularly active in trying to address device-security flaws. For example, last year it issued [security warnings][3] about 11 vulnerabilities that could compromise medical IoT devices that had been discovered by IoT security vendor [Armis][4]. In other cases it issued fines against healthcare providers. - -**[ [Prepare to become a Certified Information Security Systems Professional with this comprehensive online course from PluralSight. Now offering a 10-day free trial!][5] ]** - -But there’s a broader issue with devising definitive regulation for IoT devices in general, as opposed to prescriptive ones that simply urge manufacturers to adopt best practices, he said. - -Particular companies might have integrated security frameworks covering their vertically integrated products – such as an [industrial IoT][6] company providing security across factory floor sensors – but that kind of security is incomplete in the multi-vendor world of IoT. - -Perhaps the closest thing to a general IoT-security standard is currently being worked on by Underwriters Laboratories (UL), the security-testing non-profit best known for its century-old certification program for electrical equipment. UL’s [IoT Security Rating Program][7] offers a five-tier system for ranking the security of connected devices – bronze, silver, gold, platinum and diamond. - -Bronze certification means that the device has addressed the most glaring security flaws, similar to those outlined in the recent U.K. and California legislations. [The higher ratings][8] include capabilities like ongoing security maintenance, improved access control and known threat testing. - -While government regulation and voluntary industry improvements can help keep future IoT systems safe, neither addresses two key issues in the IoT security puzzle – the millions of insecure devices that have already been deployed, and user apathy around making their systems as safe as possible, according to Maxim. - -“Requiring a non-default passwords is good, but that doesn’t stop users from setting insecure passwords,” he warned. “The challenge is, do customers care? Are they willing to pay extra for products with that certification?” - -Join the Network World communities on [Facebook][9] and [LinkedIn][10] to comment on topics that are top of mind. - --------------------------------------------------------------------------------- - -via: https://www.networkworld.com/article/3526490/who-should-lead-the-push-for-iot-security.html - -作者:[Jon Gold][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://www.networkworld.com/author/Jon-Gold/ -[b]: https://github.com/lujun9972 -[1]: https://www.networkworld.com/article/3207535/what-is-iot-the-internet-of-things-explained.html -[2]: https://www.networkworld.com/newsletters/signup.html -[3]: https://www.fda.gov/medical-devices/safety-communications/urgent11-cybersecurity-vulnerabilities-widely-used-third-party-software-component-may-introduce -[4]: https://www.armis.com/ -[5]: https://pluralsight.pxf.io/c/321564/424552/7490?u=https%3A%2F%2Fwww.pluralsight.com%2Fpaths%2Fcertified-information-systems-security-professional-cisspr -[6]: https://www.networkworld.com/article/3243928/what-is-the-industrial-internet-of-things-essentials-of-iiot.html -[7]: https://ims.ul.com/iot-security-rating-levels -[8]: https://www.cnx-software.com/2019/12/30/ul-iot-security-rating-system-ranks-iot-devices-security-from-bronze-to-diamond/ -[9]: https://www.facebook.com/NetworkWorld/ -[10]: https://www.linkedin.com/company/network-world diff --git a/sources/talk/20200211 Why innovation can-t happen without standardization.md b/sources/talk/20200211 Why innovation can-t happen without standardization.md deleted file mode 100644 index 53e82ccde6..0000000000 --- a/sources/talk/20200211 Why innovation can-t happen without standardization.md +++ /dev/null @@ -1,91 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Why innovation can't happen without standardization) -[#]: via: (https://opensource.com/open-organization/20/2/standardization-versus-innovation) -[#]: author: (Len Dimaggio https://opensource.com/users/ldimaggi) - -Why innovation can't happen without standardization -====== -Balancing standardization and innovation is critical during times of -organizational change. And it's an ongoing issue in open organizations, -where change is constant. -![and old computer and a new computer, representing migration to new software or hardware][1] - -Any organization facing the prospect of change will confront an underlying tension between competing needs for standardization and innovation. Achieving the correct balance between these needs can be essential to an organization's success. - -Experiencing too much of either can lead to morale and productivity problems. Over-stressing standardization, for example, can have a stifling effect on the team's ability to innovate to solve new problems. Unfettered innovation, on the other hand, can lead to time lost due to duplicated or misdirected efforts. - -Finding and maintaining the correct balance between standardization and innovation is critical during times of organizational change. In this article, I'll outline various considerations your organization might make when attempting to strike this critical balance. - -### The need for standardization - -When North American beavers hear running water, they instinctively start building a dam. When some people see a problem, they look to build or buy a new product or tool to solve that problem. Technological advances make modeling business process solutions or setting up production or customer-facing systems much easier than in the past. The ease with which organizational actors can introduce new systems can occasionally, however, lead to problems. Duplicate, conflicting, or incompatible systems—or systems that, while useful, do not address a team's highest priorities—can find their way into organizations, complicating processes. - -This is where standardization can help. By agreeing on and implementing a common set of tools and processes, teams become more efficient, as they reduce the need for new development methods, customized training, and maintenance. - -Standardization has several benefits: - - * **Reliability, predictability, and safety.** Think about the electricity in your own home and the history of electrical systems. In the early days of electrification, companies competed to establish individual standards for basic elements like plug configurations and safety requirements like insulation. Thanks to standardization, when you buy a light bulb today you can be sure that it will fit and not start a fire. - * **Lower costs and more dependable, repeatable processes.** Standarsization frees people in organizations to focus more attention on other things—products, for instance—and not on the need to coordinate the use of potentially conflicting new tools and processes. And it can make people's skills more portable (or, in budgeting terms more "fungible") across projects, since all projects share a common set of standards. In addition to helping project teams be more flexible, this portability of skills makes it easier for people to adopt new assignments. - * **Consistent measurements.** Creating a set of consistent metrics people can use to assess product quality across multiple products or multiple releases of individual products is possible through standardization. Without it, applying this kind of consistent measurement to product quality and maintaining any kind of history of tracking such quality can be difficult. Standardization effectively provides the organization a common language for measuring quality. - - - -A danger of standardization arises when it becomes an all-consuming end in itself. A constant push to standardize can result in it inadvertently stifling creativity and innovation. If taken too far, policies that over emphasize standardization appear to discourage support for people's need to find new solutions to new problems. Taken to an extreme, this can lead to a suffocating organizational atmosphere in which people are reluctant to propose new solutions in the interest of maintaining standardization or conformity. In an open organization especially focused on generating new value and solutions, an attempt to impose standardization can have a negative impact on team morale. - -Viewing new challenges through the lens of former solutions is natural. Likewise, it's common (and in fact generally practical) to apply legacy tools and processes to solving new problems. - -But in open organizations, change is constant. We must always adapt to it. - -Finding and maintaining the correct balance between standardization and innovation is critical during times of organizational change. - -### The need for innovation - -Digital technology changes at a rapid rate, and that rate of change is always increasing. New opportunities result in new problems that require new solutions. Any organization must be able to adapt and its people must have the freedom to innovate. This is even more important in an open organization and with open source source software, as many of the factors (e.g., restrictive licenses) that blocked innovation in the past no longer apply. - -When considering the prospect of innovation in your organization, keep in mind the following: - - * **Standardization doesn't have to be the end of innovation.** Even tools and processes that are firmly established and in use by an organization were once very new and untried, and they only came about through processes of organizational innovation. - * **Progress through innovation also involves failure.** It's very often the case that some innovations fail, but when they fail, they point the way forward to solutions. This progress therefore requires that an organization protect the freedom to fail. (In competitive sports, athletes and teams seldom learn lessons from easy victories; they learn lessons about how to win, including how to innovate to win, from failures and defeats.) - - - -Freedom to innovate, however, cannot be freedom to do whatever the heck we feel like doing. The challenge for any organization is to be able to encourage and inspire innovation, but at the same time to keep innovation efforts focused towards meeting your organization's goals and to address the problems that you're trying to solve. - -In closed organizations, leaders may be inclined to impose rigid, top-down limits on innovation. A better approach is to instead provide a direction or path forward in terms of goals and deliverables, and then enable people to find their own ways along that path. That forward path is usually not a straight line; [innovation is almost never a linear process][2]. Like a sailboat making progress into the wind, it's sometimes [necessary to "tack" or go sideways][3] in order to make forward progress. - -### Blending standardization with focused innovation - -Are we doomed to always think of standardization as the broccoli we must eat, while innovation is the ice cream we want to eat? - -Are we doomed to always think of standardization as the broccoli we _must_ eat, while innovation is the ice cream we _want_ to eat? - -It doesn't have to be this way. - -Perceptions play a role in the conflict between standardization and innovation. People who only want to focus on standardization must remember that even the tools and processes that they want to promote as "the standard" were once new and represented change. Likewise, people who only want to focus on innovation have to remember that in order for a tool or process to provide value to an organization, it has to be stable enough for that organization to use it over time. - -An important element of any successful organization, especially an open organization where everyone is free to express their views, is empathy for other people's views. A little empathy is necessary for understanding both perceptions of impending change. - -I've always thought about standardization and innovation as being two halves of one solution. A good analogy is that of college course catalog. In many colleges, all incoming first-year students regardless of their major will take a core set of classes. These core classes can cover a wide range of subjects and provide each student with an educational foundation. Every student receives a standard grounding in these disciplines regardless of their major course of study. Beyond the standardized core curriculum, then, each student is free to take specialized courses depending upon his or her major degree requirements and selected elective courses, as they work to innovate in their respective fields. - -Similarly, standardization provides a foundation on which innovation can build. Think of standardization as a core set of tools and practices you might applied to _all_ products. Innovation can take the form of tools and practices that go _above and beyond_ this standard. This will enable every team to extend the core set of standardized tools and processes to meet the individual needs of their own specific projects. Standardization does not mean that all forward-looking actions stop. Over time, what was an innovation can become a standard, and thereby make room for the next innovation (and the next). - --------------------------------------------------------------------------------- - -via: https://opensource.com/open-organization/20/2/standardization-versus-innovation - -作者:[Len Dimaggio][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/ldimaggi -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/migration_innovation_computer_software.png?itok=VCFLtd0q (and old computer and a new computer, representing migration to new software or hardware) -[2]: https://opensource.com/open-organization/19/6/innovation-delusion -[3]: https://opensource.com/open-organization/18/5/navigating-disruption-1 diff --git a/sources/talk/20200212 A SASE Crash Course.md b/sources/talk/20200212 A SASE Crash Course.md deleted file mode 100644 index 88e85a9c15..0000000000 --- a/sources/talk/20200212 A SASE Crash Course.md +++ /dev/null @@ -1,67 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (A SASE Crash Course) -[#]: via: (https://www.networkworld.com/article/3526455/a-sase-crash-course.html) -[#]: author: (Cato Networks https://www.networkworld.com/author/Matt-Conran/) - -A SASE Crash Course -====== -Get up to speed fast on the Secure Access Service Edge, an emerging converged networking and security category that Gartner has labelled transformational. -peshkov - -2020! What could better motivate you to push ahead with your resolutions and organization’s digital transformation than a new year AND a new decade. As you put together your digital strategy, check out a new transformation-empowering (and transformational) technology category Gartner coined the [Secure Access Service Edge][1] or SASE (pronounced “Sassy”). SASE converges wide area networking and identity-based security into a cloud service targeted directly to your branch offices, mobile users, cloud services, and even IoT devices, wherever they happen to be. The result: consistently high WAN performance, security, productivity, agility, and flexibility across the global, mobile, cloud-enabled enterprise. - -To jumpstart your research into one of the few networking categories Gartner has labelled “transformational,” we’ve put together a very workable SASE crash course and reading list. Each lesson helps you dig a little deeper into SASE, so you can develop a good grasp of its components and transformational potential. - -**Lesson 1: SASE as Defined by Gartner** - -So, what is SASE exactly and why should you care? SASE was coined by [Gartner][2] analysts Neil McDonald and Joe Skorupa in a [July 29, 2019 Networking Hype Cycle][3] [Market Trends Report, How to Win as WAN Edge and Security Converge into the Secure Access Service Edge][4] and an August 30, 2019 [Gartner][2] report, The Future of Network Security is in the Cloud. If you don’t have access to these reports, Cato quotes the highlights of the former word for word in this short blog: [The Secure Access Service Edge (SASE), as Described in Gartner’s Hype Cycle for Enterprise Networking, 2019][5]. It’s a great place to get started on exactly what Gartner has to say about SASE and its drivers, likely development, and place in the digitally transforming enterprise. There are also some valuable links to more information on SASE and exactly how the Cato cloud fits into the SASE trend. - -**Lesson 2: What SASE _Is_ and What It _Isn’t_** - -After Gartner piques your interest, get some valuable insight from Cato in this blog: [The Secure Access Service Edge (SASE): Here’s Where Your Digital Business Network Starts][6]. Here you can learn why convergence of wide area networking and security is absolutely vital for the agile, digitally transforming enterprise and why legacy data center-centric solutions can’t deliver any more in a world of user mobility and the cloud. This blog breaks down the four essential attributes of SASE—identity driven, cloud native, support for all edges, and globally distributed—in detail. It also explains why SASE is _not_ anything like telco-managed services and summarizes how Cato delivers SASE effectively. - -**Lesson 3: How Cato Delivers SASE** - -Sometimes visual/audio-based learning can bring things into better focus than straight text, and few people are better at explaining WAN and security concepts than Yishay Yovel, Cato Network’s Chief Marketing Officer. In this short, 17-minute video presentation, [Intro to SASE by Yishay][7], Yishay digs into Gartner’s take on SASE, why WAN and security need to converge, and why SASE is one of only three (out of 29) Networking Hype Cycle categories that Gartner has labeled “transformational.” Yishay gets into a lot of nitty-gritty SASE details and offers valuable perspective on how Cato Networks delivers a complete cloud-native SASE software stack that supports all edges and is identity-driven, scalable, flexible, and easy to deploy and manage. Yishay also explains clearly why some of the other WAN and security solutions out there don’t fulfill some essential requirements of SASE, such as processing traffic close to the source. For visual learners, there are also some great architectural diagrams. - -**Lesson 4: Gartner Webinar Breaks Down SASE and its Implications** - -You’ve heard it from Yishay, now hear it from Gartner’s VP Distinguished Analyst Neil MacDonald _and_ Yishay in this 37-minute [Gartner Webinar: Is SASE the Future of SD-WAN and Network Security][8]? MacDonald explains SASE elements and drivers in depth, why SASE belongs in the cloud, how enterprises will adopt SASE, and how organizations should evaluate SASE offerings. There’s some good detail here on how SASE works in different contexts and scenarios, such as a mobile employee connecting to Salesforce securely from the airport, a contractor accessing a Web application from an unmanaged device, and even wind turbines collecting and aggregating data and sending it to the cloud for processing. Neil digs into core SASE requirements and recommends additional services and some other useful options. Yishay then takes over with why Cato is the world’s first true SASE platform. - -**Lesson 5: The White Paper** - -But wait, there’s more. Here’s a clear and concise white paper from Cato, [The Network for the Digital Business Starts with the Secure Access Service Edge][9]. This is a good piece to give out to the other digital transformation stakeholders in your business if you want them to get up to speed on SASE fast. It’s a quick read that explains why the digital, mobile, cloud-enabled business needs a new converged network/security model. It also covers the four elements of SASE, core SASE capabilities, SASE benefits, and clear examples of what SASE _isn’t_ and why. It describes the features that make Cato one of the most comprehensive SASE offerings on the market. It’s a clear, concise presentation broken into short paragraphs and bullet points to provide a fast introduction to SASE and the Cato Cloud. - -**Lesson 6: Icing on the Cake: The Short and Sweet Video** - -[SASE (Secure Access Service Edge)][10] is a short YouTube video to go along with the white paper, combining perspective and information from Gartner and Cato on why you need SASE simplicity for your digital transforming business. - -We hope you have a happy, healthy, transforming New Year. To accelerate your organization’s digital transformation over the next decade, get up to speed on SASE with these useful blogs, videos, and white papers and find out how SASE can help you make that transformation happen quickly and more easily. - --------------------------------------------------------------------------------- - -via: https://www.networkworld.com/article/3526455/a-sase-crash-course.html - -作者:[Cato Networks][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://www.networkworld.com/author/Matt-Conran/ -[b]: https://github.com/lujun9972 -[1]: http://www.catonetworks.com/sase?utm_source=idg -[2]: https://en.wikipedia.org/wiki/Gartner -[3]: https://www.gartner.com/en/documents/3947237 -[4]: https://www.gartner.com/en/documents/3953690/market-trends-how-to-win-as-wan-edge-and-security-conver -[5]: https://www.catonetworks.com/blog/the-secure-access-service-edge-sase-as-described-in-gartners-hype-cycle-for-enterprise-networking-2019/ -[6]: https://www.catonetworks.com/blog/the-secure-access-service-edge-sase?utm_source=idg -[7]: https://catonetworks.wistia.com/medias/kn86smj7q4 -[8]: https://go.catonetworks.com/VOD-REG-Gartner-SASE?utm_source=idg -[9]: https://go.catonetworks.com/The-Network-Starts-with-SASE?utm_source=idg -[10]: https://www.youtube.com/watch?v=gLN4NUbjml8 diff --git a/sources/talk/20200213 Server sales projected to decline 10- due to coronavirus.md b/sources/talk/20200213 Server sales projected to decline 10- due to coronavirus.md deleted file mode 100644 index 32852586e1..0000000000 --- a/sources/talk/20200213 Server sales projected to decline 10- due to coronavirus.md +++ /dev/null @@ -1,63 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Server sales projected to decline 10% due to coronavirus) -[#]: via: (https://www.networkworld.com/article/3526605/server-sales-projected-to-decline-10-due-to-coronavirus.html) -[#]: author: (Andy Patrizio https://www.networkworld.com/author/Andy-Patrizio/) - -Server sales projected to decline 10% due to coronavirus -====== -Demand isn’t tapering off, but China is grinding to a halt under the strain of the pandemic. -Writerfantast / Getty Images - -Global server sales had been projected to grow by 1.2% compared to the most recent quarter, but the chaos wrought by the coronavirus in China will cause sales to decline 9.8% sequentially, according to DigiTimes Research. - -DigiTimes is an IT publication based in Taiwan. Its proximity to Taiwanese and Chinese vendors gives it some good sources, but it can also be way off target. However, the signs are piling up that coronavirus is causing some real mayhem. - -For example, DigiTimes also [reported][1] that less than 20% of Chinese factory employees would return to work after an extended Lunar New Year break due to the coronavirus outbreak, and that many components plants in China have decided not to restart production until February 25. - -**[ Now read: [What is quantum computing (and why enterprises should care)][2] ]** - -The Lunar New Year was January 25, so that means Chinese factories have been idle for a month. That’s a lot of supply not being answered, and DigiTimes notes that server demand from large data centers remained strong in the first quarter of 2020. - -Facebook in particular is interested in buying high-density models from white box vendors like Wiwynn and Quanta Computer, but due to the outbreak, these orders, which were originally scheduled for shipment this quarter, have been postponed. - -So it’s not like an economic crash is causing sales to go off a cliff like in 2008. Demand is there, but China can’t make the product right now. This year was expected to be a good year for the server vendors, with all of them projecting sales increases over last year. AMD is ramping up Epyc production, and Intel is expected to release its next-generation “Ice Lake” Xeon platform in the third or the fourth quarter of 2020. - -The good news here is that Wuhan isn’t a major tech manufacturing hub. It does have five display fabs, both LCD and OLED, but so does Shanhai. However, Wuhan has the most advanced display fabs, producing flexible OLEDs, and has the largest capacity, according to David Hsieh, senior director, displays, at Omdia. - -**[ [Get certified as an Apple Technical Coordinator with this seven-part online course from PluralSight.][3] ]** - -Vladimir Galabov, principal analyst for data-center compute in Omdia’s cloud and data-center research practice, also expects to see server shipments impacted by the coronavirus driving a prolonged holiday period in China. - -“I think the majority of the hit will be in the Chinese market,” he said. “This does impact server shipments globally as China represents about 30% of server shipments worldwide. So, I expect the quarterly decline to be more significant than the seasonal 10%. I expect that China will have a 5% additional downward impact on the growth.” - -He added that Q4 of 2019 did significantly overachieve his expectations due to cloud service providers making massive purchases. Omdia expected servers shipped in 2019 to be flat compared to 2018 based on data from 1Q19-3Q19. Instead, it was up 2% to 3% for the year, thanks to the fourth-quarter spurt. - -And servers aren’t the only products taking a hit. DigiTimes says that should the outbreak of the coronavirus last until June, sales of smartphones in the country would be slashed by about 30%, from a projected 400 million units to 280 million units in 2020. - -Also, Mobile World Congress in Barcelona is cancelled due to concerns about the global coronavirus outbreak. The [official cancellation][4] came after a number of big-name companies, including Intel, Cisco, Amazon, Sony, NTT Docomo LG, ZTE, Nvidia, and Ericsson, bowed out of various events that were set for the show.  - -Join the Network World communities on [Facebook][5] and [LinkedIn][6] to comment on topics that are top of mind. - --------------------------------------------------------------------------------- - -via: https://www.networkworld.com/article/3526605/server-sales-projected-to-decline-10-due-to-coronavirus.html - -作者:[Andy Patrizio][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://www.networkworld.com/author/Andy-Patrizio/ -[b]: https://github.com/lujun9972 -[1]: https://www.digitimes.com/news/a20200210VL202.html -[2]: https://www.networkworld.com/article/3275367/what-s-quantum-computing-and-why-enterprises-need-to-care.html -[3]: https://pluralsight.pxf.io/c/321564/424552/7490?u=https%3A%2F%2Fwww.pluralsight.com%2Fpaths%2Fapple-certified-technical-trainer-10-11 -[4]: https://www.mwcbarcelona.com/attend/safety-security/gsma-statement-on-mwc-2020/ -[5]: https://www.facebook.com/NetworkWorld/ -[6]: https://www.linkedin.com/company/network-world diff --git a/sources/talk/20200215 3 steps for product marketing your open source project.md b/sources/talk/20200215 3 steps for product marketing your open source project.md deleted file mode 100644 index 5f73f72bb2..0000000000 --- a/sources/talk/20200215 3 steps for product marketing your open source project.md +++ /dev/null @@ -1,115 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (3 steps for product marketing your open source project) -[#]: via: (https://opensource.com/article/20/2/product-marketing-open-source-project) -[#]: author: (Kevin Xu https://opensource.com/users/kevin-xu) - -3 steps for product marketing your open source project -====== -Marketing an open source project is mainly about education, and -traditional marketing techniques do not apply. -![People meeting][1] - -I frequently get questions from open source project creators or new founders of commercial open source software (COSS) companies about the best way to market their product. Implicit in that inquiry lies more foundational questions: "What the hell is product marketing? How much time should I spend on it?" - -This article aims to share some knowledge and specific action items to help open source creators understand product marketing as a concept and how to bootstrap it on their own until a project reaches the next level of traction. - -### What is product marketing? - -Product marketing for COSS is materially different from product marketing for proprietary software and from general marketing practices like ads, lead generation, sponsorships, booths at conferences and trade shows, etc. Because the source code is open for all to see and the project's evolutionary history is completely transparent, you need to articulate—from a technical level to a technical audience—how and why your project works. - -Using the word "marketing" in this context is, in fact, misleading. It's really about product _education_. Your role is more like a coach, mentor, or teaching assistant in a computer science class or a code bootcamp than a "marketing person." - -Proprietary software products rarely need this level of technical education because no one can see the source code anyway. Therefore, these companies focus on educating their audience about the product's business value, not its technical advantages. - -To build a successful open source project (and any commercial product that may be derived from it), you must educate your audience on _both_ its technical details and business value. - -While this may sound like extra work, it's an advantage inherent to COSS because so much buying power for technology products is shifting to developers. They care deeply about technical details and want to see and understand the source code. Being able to learn, appreciate, and have confidence in a project's technical design, architecture, and future roadmap are key to its adoption. - -Also, developers often treat open source technology as a way to scratch their technical itch and stay sharp in a fast-moving technology landscape. It's an audience that yearns for education, above all. - -Being able to speak to an audience that has these goals and desires is what product marketing and education in the COSS context is all about. - -### How to bootstrap product marketing - -So you (or maybe one or two other engineers) are laboring away to create your open source project, likely in the evening after your day job or on the weekends. How do you bootstrap some effective product marketing on your own? - -I recommend a three-step process to yield the best return for your time: - - 1. Peruse online forums - 2. Write content - 3. Do in-person meetups - - - -#### Online forums - -Rummaging through forums—from general ones like HackerNews and Reddit to ones like Discourse or Slack channels geared to projects that are closely related to what you are building—is a great way to figure out what questions developers have in your space. Starting with this step is less about inserting your project into the discussion and more about gathering ideas on what you should focus on when putting together educational materials about your project. - -Effectively, what you are doing is akin to "listening to your customer." - -Let's be honest; you already spend a lot of time on these forums anyway. The only change is one of mindset, not behavior: Have more focus, jot ideas down actively, practice absorbing critiques (you may see threads critical of your project), and develop some intuition about what developers are thinking about. - -This step assumes you don't already have an active community where developers are asking questions directly. The long-term goal is to build your own community, and good product marketing directly helps with this. - -#### Write - -Now that you have gathered some ideas, it's time to produce some content. Compared to formats like videos and podcasts, _writing_ is the highest-leveraged medium. It has the best long-tail benefits, is most suited for ongoing reference material, and can be most easily repackaged into other mediums. Another factor: open source has a global audience, many of whom might speak English as a second (third, or fourth) language, and written content is easily consumable at a person's own pace. - -Focus your writing on three categories that answer three fundamental questions: - - * What problem does your project solve? In other words: _Why should it exist?_ - * How is the project architected, and why is it done that way? _Is this a technically well-designed solution that has potential, thus worth investing time in?_ - * How do I get a taste of it? _How quickly can I get some value out of it?_ This is crucial to reducing your time-to-value metric to the shortest amount possible. For more on this topic, please read my article [_A framework for building products from open source projects_][2]. - - - -A smart way to begin is by writing three blog posts, each addressing one of the three points. The posts should be canonical to your specific project so that repackaging them into different formats (e.g., slide decks, Quora answers, Twitter threads, podcast interviews, etc.) for different channels should be straightforward. - -After you publish the posts, work the materials into your GitHub, GitLab, Bitbucket, or other repository along with the project's documentation. This is important because your public repo will likely be the face of your project for a long time, even if also you have a dedicated website. A repo with strong educational content will go a long way in building your social proof in the form of stars, forks, and downloads and may even yield some contributions. - -One note on writing: Be patient! Your words likely won't go viral overnight (unless you are a celebrity developer). But if the material is educational, useful, and accessible (no need for fancy language), it will draw attention to your project in time. You do your part, and let Google's SEO algorithm do its part. - -#### In-person meetups - -With a few posts out in the wild, the next step is to find an in-person meetup where you can give a presentation about your project using your writing as foundational material to build a compelling talk. - -You may wonder: "Why? Isn't doing something in-person the biggest time suck? I'd rather code!" - -True. You are not wrong. I recommend this step _specifically_ at this moment, not earlier or later, because you'll get feedback on your output more quickly than what the internet can give. Comments and feedback on your posts will trickle in, but giving a talk at a meetup, taking questions, and chatting with attendees afterward over pizza is valuable and immediate. - -The goal is not to shamelessly pitch your project (reminder: you are an educator, not a marketer), but to listen for the kinds of questions you get when you put your project (and yourself) out there. Another benefit is that it gives you practice delivering presentations, which will become important as your project grows, and you need to present in higher-stakes situations, including large conferences, demos with prospective users, etc. - -I know this may not be practical if you don't live in a tech hub where meetups are aplenty. You may want to look for groups that are open to doing virtual meetups via video or work this into your existing travel plans. (But don't fly across the world to talk at one meetup.) - -In-person meetups can feel scary. Public speaking is not for everyone, and it's a legitimate source of fear. My main tips: Just think of yourself as free entertainment, lower your expectations, don't overthink it, and offer yourself up to meetup organizers proactively because they will love you! Having been both a presenter and a meetup organizer, I know developer-focused meetups are very hungry for good technical education. - -### Final words - -There's a lot more nuance, strategy, and sheer work to effective product marketing, but I hope this post gives you enough guidance and specific action items to bootstrap it. Ultimately, you should still spend the bulk of your time building your technology. And if you have some revenue or funding, it's worth hiring someone who has deep expertise in product marketing, even as a part-time adviser. - -Frankly, product marketing talent is hard to find. You need someone with both the technical chops and curiosity to learn about your project on a deep level and the communication skills to compellingly tell the world about it. - -* * * - -_This article originally appeared on [COSS Media][3] and is republished with permission._ - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/2/product-marketing-open-source-project - -作者:[Kevin Xu][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/kevin-xu -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/people_team_community_group.png?itok=Nc_lTsUK (People meeting) -[2]: https://opensource.com/article/19/11/products-open-source-projects -[3]: https://coss.media/open-source-creator-product-marketing/ diff --git a/sources/talk/20200215 The Background Story of AppImage -Interview.md b/sources/talk/20200215 The Background Story of AppImage -Interview.md deleted file mode 100644 index d3e95a1a0f..0000000000 --- a/sources/talk/20200215 The Background Story of AppImage -Interview.md +++ /dev/null @@ -1,128 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (The Background Story of AppImage [Interview]) -[#]: via: (https://itsfoss.com/appimage-interview/) -[#]: author: (Abhishek Prakash https://itsfoss.com/author/abhishek/) - -The Background Story of AppImage [Interview] -====== - -As a Linux user, you might have come across [AppImages][1]. This is a portable packaging format that allows you to run an application on any Linux distribution. - -[Using AppImage][2] is really simple. You just need to give it execute permission and double click to run it, like the .exe files in Windows. This solves a major problem in Linux as different kind of distributions have different kind of packaging formats. You cannot [install .deb files][3] (of Debian/Ubuntu) on [Fedora][4] and vice versa. - -We talked to Simon, the developer of AppImage, about how and why he created this project. Read some of the interesting background story and insights Simon shares about AppImage. - -### Interacting with Simon Peter, the creator of AppImage - -![][5] - -_**It’s FOSS: Few people know about the person behind AppImage. How about sharing a little background information about yourself?**_ - -**Simon:** Hi, I’m Simon Peter, based near Frankfurt in Germany. My background is in Economics and Business Administration, but I’ve always been a tinkerer and hacker in my free time, and been working in tech ever since I graduated. - -AppImage, though, is strictly a hobby which I enjoy working on in my spare time. I do a lot of my AppImage work while I’m on a train going from here to there. Somehow I seem to be on the move all the time. Professionally, I work in the product management of a large telecommunications company. - -_**It’s FOSS: Why did you create AppImage?**_ - -**Simon:** The first computer I could get my hands on was a [Macintosh][6] in the late 80s. For me, this is the benchmark when it comes to simplicity and usability. When I started to experiment with Linux on the desktop, I always wished it was as elegant and simple to operate and gave me as much flexibility as the early Macs. - -When I tried Linux for the first time in the late 90s, I had to go through a cumbersome process formatting and partitioning hard disks, installing stuff – it took a lot of time and was really cumbersome. A couple of years later, I tried out a Linux Live CD-ROM. It was a complete game changer. You popped in the CD, booted the computer, and everything just worked, right out of the box. No installation, no configuration. The system was always in factory-new state whenever you rebooted the machine. Exactly how I liked it. - -There was only one downside: You could not install additional applications on a read-only CD. Packages always insisted on writing in /usr, where the Live CD was not writeable. Thus, I asked myself: Why can’t I just put applications wherever I want, like on a USB drive or a network share, as I am used from the Mac? How cool would it be if every application was just one single file that I could put wherever I want? And thus the idea for AppImage was born (back then under the name of “klik”). - -Turns out that over time Live systems have become more capable, but I still like the simplicity and freedom that comes with the “one app = one file” idea. For example, I want to be in control of where stuff resides on my hard disks. I want to decide what to update or not to update and when. For most tasks I need a stable, rarely-changing operating system with the latest applications. To this day all I ever run are Live systems, because the operating system “just works” out of the box without any installation or configuration on my side, and every time I reboot the machine I have a “factory new”, known-good state. - -_**It’s FOSS: What challenges did you face in the past and what challenges are you facing right now?**_ - -**Simon:** People told me that the idea was nuts, and I had no clue how “things are done on Linux”. Just about when I was beginning to give in, I came across a video of [Linus Torvalds][7] of all people who I noticed was complaining about many of the same things that I always had felt were too complicated when it came to distributing applications for Linux. While I was watching his rant, I also noticed, hey, AppImage actually solves many of those issues. Some time later, Linus came across AppImage, and he apparently liked the idea. That made me think, maybe it’s not that stupid an idea as people had made me believe all the time up to that point. - -Today, people tend to mention AppImage as “one of the new package formats” together with [Snap][8] and [Flatpak][9]. I think that’s comparing apples to oranges. Not only is AppImage not “new” (it’s been around since well over a decade by now), but also it has very different objectives and design principles than the other systems. AppImage is all about single-file application bundles that can be “managed” by nothing else than a web browser and a file manager. It’s meant for “mere morals”, end users, not system administrators. It needs no package manager, it needs no root rights, it needs nothing to be installed on the system. It gives complete freedom to application developers and users. - -_**It’s FOSS: AppImage is a “universal packaging system” and there you compete with Snap (backed by Ubuntu) and Flatpak (backed by Fedora). How do you plan to ‘fight’ against these big corporates?**_ - -**Simon:** See? That’s what I mean. AppImage plays in an entirely different playing field. - -AppImage wants to be what exe files or PortableApps are for Windows and what apps inside dmg files are on the Mac – but better. - -Besides, Snap (backed by [Canonical][10]) does not work out-of-the-box on Fedora, and Flatpak (backed by [Red Hat][11]) does not work out-of-the-box on Ubuntu. AppImages can run on either system, and many more, without the need to install anything. - -_**It’s FOSS: How do you see the adoption of AppImage? Are you happy with its growth?**_ - -**Simon:** As of early 2020, there are now around 1,000 official AppImages made by the respective application authors that are passing my compatibility tests and can run on the oldest still-supported Ubuntu LTS release, and hundreds more are being worked on as we speak. “Household name” applications like Inkscape, Kdenlive, KDevelop, LibreOffice, PrusaSlicer, Scribus, Slic3r, Ultimaker Cura (too many to name them all) are being distributed in AppImage format. This makes me very happy and I am always excited when I read about a new version being released on Twitter, and then am able to download and run the AppImage instantly, without having to wait for my Linux distribution to carry that new version, and without having to throw away the old (known-good) version just because I want to try out the new (bleeding edge) one. - -The adoption of AppImage is especially strong for nightly and continuous builds. This is because the “one app = one file” concept of AppImage lends itself especially well to try-out software, where you keep multiple versions around for testing purposes, and never have to install anything into the running system. Worst thing that can happen with AppImage is that an application does not launch. In that case, file a bug, delete the file, done. Worst thing that can happen with distribution packages: complete system breakage… - -_**It’s FOSS: One major issue with AppImage is that not all the developers provide an easy way of updating the AppImage versions. Any suggestions for handling it?**_ - -**Simon:** AppImage has this concept of “binary delta updates”. Think of it as “diff for applications”. A new version of an application comes out, you download only the parts that have changed, and apply them to the old version. As a result, you get both the old and the new version and can keep them in parallel until you have determined that you don’t need the old version any longer, and throw it away. - -In general, I don’t want to enforce anything with AppImage. Application authors are at liberty to control the whole experience. Up to now, application authors have to do some setup work to make AppImages with this update capability. That being said, I am convinced that if we make it easy enough for developers to get working binary delta updates “for free”, then many will offer them. To this end, I am currently working on a new set of tools written in Go that will set up updates almost automatically, and I hope this will significantly increase the percentage of AppImages that come with this capability. - -_**It’s FOSS: [Nitrux][12] is one of the rare distributions that relies heavily on AppImage. Or there any other such distributions? What can be done make AppImage more popular?**_ - -**Simon:** Linux distributions traditionally have thought of themselves as more than just the base operating system itself – they also wanted to control application distribution. Now, as Apple and Microsoft are trying to get more control over application distribution on their desktop platforms, the trend is slowly reversing in Linux land where people are slowly beginning to understand that distributions could be much more polished if they focused on the base operating system and left the packaging of applications to the application authors. - -To make AppImage more popular, I think users and application authors should continue to spread the word that upstream-provided AppImages are in many cases working better than distribution packages. With AppImage, you get a software stack where the application author had a chance to cherry-pick which versions of libraries work together, test and tune both functionality and performance. Who is surprised that the result tends to work better than a “random” combination of whatever versions happened to be in a Linux distribution at a certain, random point in time when a distribution release was put together? - -[Desktop environments][13] could greatly increase usability, not only for AppImages, but also for any other kind of “side-loaded” applications that are not being installed. Just see how a desktop environments handles double-clicking on an executable file that is missing the executable bit. Some are doing a great job in this regard, like [Deepin Linux][14]. Stuff tends to “just work” there as it should. - -Finally, I am currently working on a new set of tools written in Go which I hope will greatly simplify, and make yet more enjoyable, the production and consumption of AppImages. My goal here is to make things less complex for users, remove the need for configuration, make things “just work”, like on the early Macintoshes. Are there any Go developers out here interested to join the effort? - -_**It’s FOSS: I can see there is a website that lists available AppImage applications. Do you have plans to integrate it with other software managers on Linux or create a software manager for AppImage?**_ - -**Simon:** [appimage.github.io][15] lists AppImages that have passed my compatibility tests on the oldest still-supported Ubuntu LTS release. Projects creating app stores or software managers are free to use this data. Myself, I am not much interested in those things as I always download AppImages right from the respective project’s download pages. My typical AppImage discovery goes like this: - - 1. Read on Twitter that PrusaSlicer has this cool new feature - 2. Go to the PrusaSlicer GitHub project and read the release notes there - 3. While there, download the AppImage and have it running a few seconds later - - - -So for me personally, I have no need for app centers and app stores, but if people like them, they are free to put AppImages in there. I just never felt the need… - -_**It’s FOSS: What plans do you have for AppImage in future (new features that you plan to add)?**_ - -**Simon:** Simplify things even more, remove configuration options, make things “just work”. Reduce the number of GitHub projects needed to get the core AppImage experience for producing and consuming AppImages, including aspects like binary delta updates, sandboxing, etc. Improve usability. - -_**It’s FOSS: Does AppImage project makes money? What kind of support (if any) do you seek from the end users?**_ - -**Simon:** No, AppImage makes no money whatsoever. - -I’ll just request the readers to spread the word. Tell your favorite application’s authors that you’d like to see an AppImage, and why. - -* * * - -Team It’s FOSS congratulates Simon for his hard work. Please feel free to convey any message and queries to him in the comment section. - --------------------------------------------------------------------------------- - -via: https://itsfoss.com/appimage-interview/ - -作者:[Abhishek Prakash][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://itsfoss.com/author/abhishek/ -[b]: https://github.com/lujun9972 -[1]: https://appimage.org/ -[2]: https://itsfoss.com/use-appimage-linux/ -[3]: https://itsfoss.com/install-deb-files-ubuntu/ -[4]: https://getfedora.org/ -[5]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/02/appimage_simon_interview.jpg?ssl=1 -[6]: https://en.wikipedia.org/wiki/Macintosh -[7]: https://itsfoss.com/linus-torvalds-facts/ -[8]: https://itsfoss.com/install-snap-linux/ -[9]: https://flatpak.org/ -[10]: https://canonical.com/ -[11]: https://www.redhat.com/en -[12]: https://itsfoss.com/nitrux-linux-overview/ -[13]: https://itsfoss.com/best-linux-desktop-environments/ -[14]: https://www.deepin.org/en/ -[15]: https://appimage.github.io/ diff --git a/sources/talk/20200216 Minicomputers and The Soul of a New Machine.md b/sources/talk/20200216 Minicomputers and The Soul of a New Machine.md deleted file mode 100644 index c1e68b1a8d..0000000000 --- a/sources/talk/20200216 Minicomputers and The Soul of a New Machine.md +++ /dev/null @@ -1,95 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Minicomputers and The Soul of a New Machine) -[#]: via: (https://opensource.com/article/20/2/minicomputers-and-soul-new-machine) -[#]: author: (Matthew Broberg https://opensource.com/users/mbbroberg) - -Minicomputers and The Soul of a New Machine -====== -The new season of Command Line Heroes begins with a story of increases -in memory, company politics, and a forgotten technology at the heart of -our computing history. -![Command Line Heroes season 4 episode 1 covers the rise of minicomputers][1] - -The [Command Line Heroes podcast][2] is back, and this season it covers the machines that run all the programming languages [I covered last season][3]. As the podcast staff puts it: - -"This season, we'll look at what happens when idealistic teams come together to build visionary machines. Machines made with leaps of faith and a lot of hard, often unrecognized, work in basements and stifling cubicles. Machines that brought teams together and changed us as a society in ways we could only dream of." - -This first episode looks at the non-fiction book (and engineering classic), [_The Soul of a New Machine_][4], to look at a critical moment in computing history. It covers the transition from large, hulking mainframes to the intermediate step of the minicomputer, which will eventually lead us to the PC revolution that we're still living in the wake of. - -### The rise of minicomputers - -One of the most important machines on the path to modern machines, most of us have since forgotten: the minicomputer. - -It was a crucial link in the evolution from mainframe to PC (aka microcomputer). It was also extremely important in the development of software that would fuel the PC revolution, chiefly the operating system. The PDP-7 and PDP-11—on which [UNIX was developed][5]—were examples of minicomputers. So was the machine at the heart of _The Soul of the New Machine_. - -This episode takes us back to this important time in computing and explores this forgotten machine—both in terms of its hardware and software. - -From 1963 to 1977, minicomputers were 12 to 16-bit machines from computing giants DEC ([PDP][6]) and rival upstart [Data General][7] ([Nova][8], [Eclipse][9]). But in October 1977, DEC unveiled the VAX 11/780, a 32-bit CPU built from transistor-transistor logic with a five megahertz cycle-time and 2 megabytes of memory. The VAX launched DEC [into second place][10] in the largest computer company in the world. - -The jump from a 12-bit to a 32-bit CPU is a jump from 4,096 bytes to 4,294,967,296 bytes of data. That increase massively increased the potential for software to do complex tasks while drastically shrinking the size of the computer. And with a 32-bit CPU, the VAX was nearly as powerful as an IBM/360 mainframe—but much smaller and much, much less expensive. - -[The episode][11] goes into the drama that unfolds as teams within Data General race to have the most marketable minicomputer while working through company politics and strong personalities. - -### Revisiting _The Soul of a New Machine_ - -_The Soul of a New Machine_ was written in 1981 by Tracy Kidder, and chronicles a small group of engineers at the now-former tech company, Data General, as they attempt to compete with a rival internal group and create a 32-bit minicomputer as a skunkworks project known as "Eagle." For those okay with spoilers, the computer would eventually be known as the [Eclipse MV/8000][12]. - -Earlier this year, [Jessie Frazelle][13], of Docker, Go, and Kubernetes fame, and [Bryan Cantrill][14], known for [DTrace][15], Joyent, and many other technologies, publicly wrote about reading the non-fiction classic. As it's written, Cantrill mentioned the book to Frazelle, who read it and then wrote an enthusiastic [blog post][16] about the book. As Frazelle put it: - -"Personally, I look back on the golden age of computers as the time when people were building the first personal computers in their garage. There is a certain whimsy of that time fueled with a mix of hard work and passion for building something crazy with a very small team. In today's age, at large companies, most engineers take jobs where they work on one teeny aspect of a machine or website or app. Sometimes they are not even aware of the larger goal or vision but just their own little world. - -In the book, a small team built an entire machine… The team wasn't driven by power or greed, but by accomplishment and self-fulfillment. They put a part of themselves in the machine, therefore, producing a machine with a soul…The team was made up of programmers with the utmost expertise and experience and also with new programmers." - -Inspired by Frazelle's reaction, Cantrill re-read it and wrote [a blog article][17] about it and writes this beautiful note: - -"…_The Soul of a New Machine_ serves to remind us that the soul of what we build is, above all, shared — that we do not endeavor alone but rather with a group of like-minded individuals." - -Frazelle's and Cantrill's reading of the book and blog [sparked a wave of people][18] exploring and talking about this text. While it remains on my book list, this dialogue-by-book-review is at the heart of the CLH season 4 as it explores the entire machine. - -### Why did the minicomputer go the way of the Neanderthal? - -As we all know, minicomputers are not a popular purchase in today's technology market. Minicomputers ended up being great technology for timesharing. The irony is that they unwittingly sealed their own fate. The Internet, which started off as ARPANET, was basically a new kind of timesharing. They were so good at timesharing that at one point, the DEC PDP 11 accounted for over 30% of the nodes on ARPANET. Minicomputers were powering their own demise.* - -Minicomputers paved the way for smaller computers and for more and more people to have access to these powerful, society-changing machines. But I'm getting ahead of myself. Keep listening to the [new season of Command Line Heroes][2] to continue the story of machines in computing history. - -* * * - -What's your minicomputer story? I'd love to read them in the comments. - -(There were, of course, other factors leading to the end of this era. Minicomputers were fighting at the low end of the market with the rise of microcomputers, while Unix systems continued to push into the midrange market. The rise of the Internet was perhaps its final blow.) - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/2/minicomputers-and-soul-new-machine - -作者:[Matthew Broberg][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/mbbroberg -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/command-line-heroes-minicomputers-s4-e1.png?itok=FRaff5i6 (Command Line Heroes season 4 episode 1 covers the rise of minicomputers) -[2]: https://www.redhat.com/en/command-line-heroes -[3]: https://opensource.com/article/19/6/command-line-heroes-python -[4]: https://en.wikipedia.org/wiki/The_Soul_of_a_New_Machine -[5]: https://opensource.com/19/9/command-line-heroes-bash -[6]: https://en.wikipedia.org/wiki/PDP -[7]: https://en.wikipedia.org/wiki/Data_General -[8]: https://en.wikipedia.org/wiki/Data_General_Nova -[9]: https://en.wikipedia.org/wiki/Data_General_Eclipse -[10]: http://www.old-computers.com/history/detail.asp?n=20&t=3 -[11]: https://www.redhat.com/en/command-line-heroes/season-4/minicomputers -[12]: https://en.wikipedia.org/wiki/Data_General_Eclipse_MV/8000 -[13]: https://twitter.com/jessfraz?lang=en -[14]: https://en.wikipedia.org/wiki/Bryan_Cantrill -[15]: https://en.wikipedia.org/wiki/DTrace -[16]: https://blog.jessfraz.com/post/new-golden-age-of-building-with-soul/ -[17]: http://dtrace.org/blogs/bmc/2019/02/10/reflecting-on-the-soul-of-a-new-machine/ -[18]: https://twitter.com/search?q=jessfraz%20soul%20new%20machine&src=typed_query&f=live diff --git a/sources/talk/20200218 Building a community of practice in 5 steps.md b/sources/talk/20200218 Building a community of practice in 5 steps.md deleted file mode 100644 index c763a78660..0000000000 --- a/sources/talk/20200218 Building a community of practice in 5 steps.md +++ /dev/null @@ -1,99 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Building a community of practice in 5 steps) -[#]: via: (https://opensource.com/article/20/2/building-community-practice-5-steps) -[#]: author: (Tracy Buckner https://opensource.com/users/tracyb) - -Building a community of practice in 5 steps -====== -A community of practice can kickstart innovation in your organization. -Here's how to build one—and ensure it thrives. -![Blocks for building][1] - -In the [first part of this series][2], we defined community as a fundamental principle in open organizations, where people often define their roles, responsibilities, and affiliations through shared interests and passions, [not title, role, or position on an organizational chart][3]. Then, in the [second part of the series][4], we explored the many benefits communities of practice bring to open organizations—including fostering learning, encouraging collaboration, and offering an opportunity for creative problem-solving and innovation. - -Now you know you'd like to _start_ a community of practice, but you may still be unsure _where_ to start. This article will help define your roadmap and build a plan for a successful community of practice—in five simple steps (summarized in Figure 1). - -![][5] - -### Step 1: Obtain executive sponsorship - -While having a community manager focused on the day-to-day execution of community matters is important, an executive sponsor is also integral to the success of the community of practice. Typically, an executive sponsor will shoulder higher-level responsibilities, such as focusing on strategy and creating conditions for success (rather than implementation). - -An executive sponsor can help ensure the community's goals are aligned with the overall strategy of the organization. This person can also communicate those goals and gather support for the community from other senior executives (potentially instrumental in securing financial support and resources for the community!). - -Finding the right sponsor is important for the success of the program. An executive leader committed to fostering open culture, transparency, and collaboration will be very successful. Alternatively, you may wish to tap an executive focused on finding new ways to grow and reskill high-potential employees. - -### Step 2: Determine mission and goals - -Once you've established a vision for the community, you'll need to develop its mission statement. This is critical to your success because the mission begins explaining _how you'll achieve that vision_. Primarily, your community's mission should be to share knowledge, promote learning in a particular area, and align that work with organizational strategy. However, the mission statement may also include references to the audience that the community will serve. - -Here's one example mission statement: - -> _To identify and address needs within the cloud infrastructure space in support of the organization’s mission of defining the next generation of open hybrid cloud._ - -After articulating a mission like this, you'll need to set specific goals for achieving it. The goals can be long- or short-term, but in either case, you'll need to provide a clear roadmap explaining to community members what the community is trying to achieve. - -### Step 3: Build a core team - -Building a core team is essential to the success of a community. In a typical community of practice—or "CoP," for short—you'll notice four main roles: - - * CoP program manager - * CoP manager - * Core team members - * Members - - - -The **CoP program manager** is the face of the community. This person is primarily responsible for supporting the managers and core teams by resolving questions, issues, and concerns. The program manager also guides new communities and evangelizes the communities of practice program inside the organization. - -The **CoP manager** determines community strategy based on business and community needs. This person makes the latest news, content, and events available to community members and ensures that the CoP remains focused on its goals. This person also schedules regular meetings for members and shares other events that may be of interest to them. - -The **CoP core team** is responsible for managing community collateral and best practices to meet the community's goals. The core team supports CoP manager(s) and assists with preparing and leading community meetings. - -**Members** of a community attend meetings, share relevant content and best practices, and support the core team and manager(s) in reaching community goals. - -### Step 4: Promote knowledge management - -Communities of practice produce information—and members must be able to easily access and share that information. So it's important to develop a knowledge-management system for storing that information in a way that keeps it relevant and timely. - -Communities of practice produce information—and members must be able to easily access and share that information. So it's important to develop a knowledge-management system for storing that information in a way that keeps it relevant and timely. - -Over time, your community of practice will likely generate a lot of content. Some of that content may be duplicated, outdated or simply no longer relevant to the community. So it's important to periodically conduct a ROT Analysis of the content validating that the content is not **R**edundant, **O**utdated, or **T**rivial. Consider conducting a ROT analysis every six months or so, in order to keep the content fresh and relevant. - -A number of different content management tools can assist with maintaining and displaying the content for community members. Some organizations use an intranet, while others prefer more robust content management such as [AO Docs][6] or [Drupal][7]. - -### Step 5: Engage in regular communication - -The secret to success in maintaining a community of practice is regular communication and collaboration. Communities that speak with each other frequently and share knowledge, ideas, and best practices are most likely to remain intact. CoP managers should schedule regular meetings, meet-ups, and content creation sessions to ensure that members are engaged in the community. It is recommended to have at least a monthly meeting to maintain communication with the community members. - -Chat/messaging apps are also a great tool for facilitating regular communication in communities of practice. These apps offer teams across the globe the ability to communicate in real-time, removing some collaboration boundaries. Members can pose questions and receive answers immediately, without the delay of sending and receiving emails. And should the questions arise again, most messaging apps also provide an easy search mechanism that can help members discover answers. - -### Building your community - -Remember: A community of practice is a cost-effective way to foster learning, encourage collaboration, and promote innovation in an organization. In [_The Open Organization_][8], Jim Whitehurst argues that "the beauty of an open organization is that it is not about pedaling harder, but about tapping into new sources of power both inside and outside to keep pace with all the fast-moving changes in your environment." Building communities of practice are the perfect way to do just that: stop pedaling harder and to tap into new sources of power within your organization. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/2/building-community-practice-5-steps - -作者:[Tracy Buckner][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/tracyb -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/blocks_building.png?itok=eMOT-ire (Blocks for building) -[2]: https://opensource.com/open-organization/19/11/what-is-community-practice -[3]: https://opensource.com/open-organization/resources/open-org-definition -[4]: https://opensource.com/open-organization/20/1/why-build-community-of-practice -[5]: https://opensource.com/sites/default/files/resize/images/open-org/comm_practice_5_steps-700x440.png -[6]: https://www.aodocs.com/ -[7]: https://www.drupal.org/ -[8]: https://opensource.com/open-organization/resources/what-open-organization diff --git a/sources/talk/20200219 A -399 device that translates brain signals into digital commands.md b/sources/talk/20200219 A -399 device that translates brain signals into digital commands.md deleted file mode 100644 index e9c13ff8d2..0000000000 --- a/sources/talk/20200219 A -399 device that translates brain signals into digital commands.md +++ /dev/null @@ -1,62 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (A $399 device that translates brain signals into digital commands) -[#]: via: (https://www.networkworld.com/article/3526446/nextmind-wearable-device-translates-brain-signals-into-digital-commands.html) -[#]: author: (Patrick Nelson https://www.networkworld.com/author/Patrick-Nelson/) - -A $399 device that translates brain signals into digital commands -====== -Startup NextMind is readying a $399 development kit for its brain-computer interface technology that enables users to interact, hands-free, with computers and VR/AR headsets. -MetamorWorks / Getty Images - -Scientists have long envisioned brain-sensing technology that can translate thoughts into digital commands, eliminating the need for computer-input devices like a keyboard and mouse. One company is preparing to ship its latest contribution to the effort: a $399 development package for a noninvasive, AI-based, brain-computer interface. - -The kit will let "users control anything in their digital world by using just their thoughts," [NextMind][1], a commercial spinoff of a cognitive neuroscience lab claims in a [press release][2]. - -[[Get regularly scheduled insights by signing up for Network World newsletters.]][3] - -The company says that its puck-like device inserts into a cap or headband and rests on the back of the head. The dry electrode-based receiver then grabs data from the electrical signals generated through neuron activity. It uses machine learning algorithms to convert that signal output into computer controls. The interaction could be with a computer, artificial-reality or virtual-reality headset, or [IoT][4] module. - -"Imagine taking your phone to send a text message without ever touching the screen, without using Siri, just by using the speed and power of your thoughts," said NextMind founder Sid Kouider in a [video presentation][5] at Helsinki startup conference Slush in late 2019. - -Advances in neuroscience are enabling real-time consciousness-decoding, without surgery or a doctor visit, according to Kouider. - -One obstacle that has thwarted previous efforts is the human skull, which can act as a barrier to sensors. It’s been difficult for scientists to differentiate indicators from noise, and some past efforts have only been able to discern basic things, such as whether or not a person is in a state of sleep or relaxation. New materials, better sensors, and more sophisticated algorithms and modeling have overcome some of those limitations. NextMind’s noninvasive technology "translates the data in real time," Kouider says. - -Essentially, what happens is that a person’s eyes project an image of what they see onto the visual cortex in the back of the head, a bit like a projector. The NextMind device decodes the neural activity created as the object is viewed and sends that information, via an SDK, back as an input to a computer. So, by fixing one’s gaze on an object, one selects that object. For example, a user could select a screen icon by glancing at it. - -[][6] - -"The demos were by no means perfect, but there was no doubt in my mind that the technology worked," [wrote VentureBeat writer Emil Protalinski][7], who tested a pre-release device in January. - -Kouider has stated it’s the "intent" aspect of the technology that’s most interesting; if a person focuses on one thing more than something else, the technology can decode the neural signals to capture that user’s intent. - -"It really gives you a kind of sixth sense, where you can feel your brain in action, thanks to the feedback loop between your brain and a display," Kouider says in the Slush presentation. - -Join the Network World communities on [Facebook][8] and [LinkedIn][9] to comment on topics that are top of mind. - --------------------------------------------------------------------------------- - -via: https://www.networkworld.com/article/3526446/nextmind-wearable-device-translates-brain-signals-into-digital-commands.html - -作者:[Patrick Nelson][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://www.networkworld.com/author/Patrick-Nelson/ -[b]: https://github.com/lujun9972 -[1]: https://www.next-mind.com/ -[2]: https://www.businesswire.com/news/home/20200105005107/en/CES-2020-It%E2%80%99s-Mind-Matter -[3]: https://www.networkworld.com/newsletters/signup.html -[4]: http://www.networkworld.com/cms/article/3207535 -[5]: https://youtu.be/RHuaNDSxH0o -[6]: https://www.networkworld.com/article/3440100/take-the-intelligent-route-with-consumption-based-storage.html?utm_source=IDG&utm_medium=promotions&utm_campaign=HPE21620&utm_content=sidebar ( Take the Intelligent Route with Consumption-Based Storage) -[7]: https://venturebeat.com/2020/01/05/nextmind-is-building-a-real-time-brain-computer-interface-unveils-dev-kit-for-399/ -[8]: https://www.facebook.com/NetworkWorld/ -[9]: https://www.linkedin.com/company/network-world diff --git a/sources/talk/20200219 Fedora at the Czech National Library of Technology.md b/sources/talk/20200219 Fedora at the Czech National Library of Technology.md deleted file mode 100644 index d1354b99ff..0000000000 --- a/sources/talk/20200219 Fedora at the Czech National Library of Technology.md +++ /dev/null @@ -1,54 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Fedora at the Czech National Library of Technology) -[#]: via: (https://fedoramagazine.org/fedora-at-the-national-library-of-technology/) -[#]: author: (Ben Cotton https://fedoramagazine.org/author/bcotton/) - -Fedora at the Czech National Library of Technology -====== - -![][1] - -Where do you turn when you have a fleet of public workstations to manage? If you’re the Czech [National Library of Technology][2] (NTK), you turn to Fedora. Located in Prague, the NTK is the Czech Republic’s largest science and technology library. As part of its public service mission, the NTK provides 150 workstations for public use. - -In 2018, the NTK moved these workstations from Microsoft Windows to Fedora. In the [press release][3] announcing this change, Director Martin Svoboda said switching to Fedora will “reduce operating system support costs by about two-thirds.” The choice to use Fedora was easy, according to NTK Linux Engineer Miroslav Brabenec. “Our entire Linux infrastructure runs on RHEL or CentOS. So for desktop systems, Fedora was the obvious choice,” he told Fedora Magazine. - -### User reception - -Changing an operating system is always a little bit risky—it requires user training and outreach. Brabenec said that non-IT staff asked for training on the new system. Once they learned that the same (or compatible) software was available, they were fine. - -The Library’s customers were on board right away. The Windows environment was based on thin client terminals, which were slow for intensive tasks like video playback and handling large office suite files. The only end-user education that the NTK needed to create was a [basic usage guide][4] and a desktop wallpaper that pointed to important UI elements. - -![User guidance desktop wallpaper from the National Technology Library.][5] - -Although Fedora provides development tools used by the Faculty of Information Technology at the Czech Technical University—and many of the NTK’s workstation users are CTU students—most of the application usage is what you might expect of a general-purpose workstation. Firefox dominates the application usage, followed by the Evince PDF viewer,  and the LibreOffice suite. - -### Updates - -NTK first deployed the workstations with Fedora 28. They decided to skip Fedora 29 and upgraded to Fedora 30 in early June 2019. The process was simple, according to Brabenec. “We prepared configuration, put it into Ansible. Via AWX I restarted all systems to netboot, image with kickstart, after first boot called provisioning callback on AWX, everything automatically set up via Ansible.” - -Initially, they had difficulties applying updates. Now they have a process for installing security updates daily. Each system is rebooted approximately every two weeks to make sure all of the updates get applied. - -Although he isn’t aware of any concrete plans for the future, Brabenec expects the NTK to continue using Fedora for public workstations. “Everyone is happy with it and I think that no one has a good reason to change it.” - --------------------------------------------------------------------------------- - -via: https://fedoramagazine.org/fedora-at-the-national-library-of-technology/ - -作者:[Ben Cotton][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://fedoramagazine.org/author/bcotton/ -[b]: https://github.com/lujun9972 -[1]: https://fedoramagazine.org/wp-content/uploads/2020/02/czech-techlib-816x345.png -[2]: https://www.techlib.cz/en/ -[3]: https://www.techlib.cz/default/files/download/id/86431/tiskova-zprava-z-31-7-2018.pdf -[4]: https://www.techlib.cz/en/82993-public-computers -[5]: https://fedoramagazine.org/wp-content/uploads/2020/02/ntk-wallpaper-1024x576.jpeg diff --git a/sources/talk/20200221 Google Cloud moves to aid mainframe migration.md b/sources/talk/20200221 Google Cloud moves to aid mainframe migration.md deleted file mode 100644 index 64b3565109..0000000000 --- a/sources/talk/20200221 Google Cloud moves to aid mainframe migration.md +++ /dev/null @@ -1,64 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Google Cloud moves to aid mainframe migration) -[#]: via: (https://www.networkworld.com/article/3528451/google-cloud-moves-to-aid-mainframe-migration.html) -[#]: author: (Michael Cooney https://www.networkworld.com/author/Michael-Cooney/) - -Google Cloud moves to aid mainframe migration -====== -Google bought Cornerstone Technology, whose technology facilitates moving mainframe applications to the cloud. -Thinkstock - -Google Cloud this week bought a mainframe cloud-migration service firm Cornerstone Technology with an eye toward helping Big Iron customers move workloads to the private and public cloud.  - -Google said the Cornerstone technology – found in its [G4 platform][1] – will shape the foundation of its future mainframe-to-Google Cloud offerings and help mainframe customers modernize applications and infrastructure. - -[[Get regularly scheduled insights by signing up for Network World newsletters.]][2] - -“Through the use of automated processes, Cornerstone’s tools can break down your Cobol, PL/1, or Assembler programs into services and then make them cloud native, such as within a managed, containerized environment” wrote Howard Weale, Google’s director, Transformation Practice, in a [blog][3] about the buy. - -“As the industry increasingly builds applications as a set of services, many customers want to break their mainframe monolith programs into either Java monoliths or Java microservices,” Weale stated.  - -Google Cloud’s Cornerstone service will: - - * Develop a migration roadmap where Google will assess a customer’s mainframe environment and create a roadmap to a modern services architecture. - * Convert any language to any other language and any database to any other database to prepare applications for modern environments. - * Automate the migration of workloads to the Google Cloud. - - - -“Easy mainframe migration will go a long way as Google attracts large enterprises to its cloud,” said Matt Eastwood, senior vice president, Enterprise Infrastructure, Cloud, Developers and Alliances, IDC wrote in a statement. - -The Cornerstone move is also part of Google’s effort stay competitive in the face of mainframe-migration offerings from [Amazon Web Services][4], [IBM/RedHat][5] and [Microsoft][6]. - -While the idea of moving legacy applications off the mainframe might indeed be beneficial to a business, Gartner last year warned that such decisions should be taken very deliberately. - -“The value gained by moving applications from the traditional enterprise platform onto the next ‘bright, shiny thing’ rarely provides an improvement in the business process or the company’s bottom line. A great deal of analysis must be performed and each cost accounted for,” Gartner stated in a report entitled *[_Considering Leaving Legacy IBM Platforms? Beware, as Cost Savings May Disappoint, While Risking Quality_][7]. * “Legacy platforms may seem old, outdated and due for replacement. Yet IBM and other vendors are continually integrating open-source tools to appeal to more developers while updating the hardware. Application leaders should reassess the capabilities and quality of these platforms before leaving them.” - -Join the Network World communities on [Facebook][8] and [LinkedIn][9] to comment on topics that are top of mind. - --------------------------------------------------------------------------------- - -via: https://www.networkworld.com/article/3528451/google-cloud-moves-to-aid-mainframe-migration.html - -作者:[Michael Cooney][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://www.networkworld.com/author/Michael-Cooney/ -[b]: https://github.com/lujun9972 -[1]: https://www.cornerstone.nl/solutions/modernization -[2]: https://www.networkworld.com/newsletters/signup.html -[3]: https://cloud.google.com/blog/topics/inside-google-cloud/helping-customers-migrate-their-mainframe-workloads-to-google-cloud -[4]: https://aws.amazon.com/blogs/enterprise-strategy/yes-you-should-modernize-your-mainframe-with-the-cloud/ -[5]: https://www.networkworld.com/article/3438542/ibm-z15-mainframe-amps-up-cloud-security-features.html -[6]: https://azure.microsoft.com/en-us/migration/mainframe/ -[7]: https://www.gartner.com/doc/reprints?id=1-6L80XQJ&ct=190429&st=sb -[8]: https://www.facebook.com/NetworkWorld/ -[9]: https://www.linkedin.com/company/network-world diff --git a/sources/talk/20200221 Japanese firm announces potential 80TB hard drives.md b/sources/talk/20200221 Japanese firm announces potential 80TB hard drives.md deleted file mode 100644 index c44e9ded6e..0000000000 --- a/sources/talk/20200221 Japanese firm announces potential 80TB hard drives.md +++ /dev/null @@ -1,57 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Japanese firm announces potential 80TB hard drives) -[#]: via: (https://www.networkworld.com/article/3528211/japanese-firm-announces-potential-80tb-hard-drives.html) -[#]: author: (Andy Patrizio https://www.networkworld.com/author/Andy-Patrizio/) - -Japanese firm announces potential 80TB hard drives -====== -Using some very fancy physics for stacking electrons, Showa Denko K.K. plans to quadruple the top end of proposed capacity. -[geralt][1] [(CC0)][2] - -Hard drive makers are staving off obsolescence to solid-state drives (SSDs) by offering capacities that are simply not feasible in an SSD. Seagate and Western Digital are both pushing to release 20TB hard disks in the next few years. A 20TB SSD might be doable but also cost more than a new car. - -But Showa Denko K.K. of Japan has gone one further with the announcement of its next-generation of heat-assisted magnetic recording (HAMR) media for hard drives. The platters use all-new magnetic thin films to maximize their data density, with the goal of eventually enabling 70TB to 80TB hard drives in a 3.5-inch form factor. - -[[Get regularly scheduled insights by signing up for Network World newsletters.]][3] - -Showa Denko is the world’s largest independent maker of platters for hard drives, selling them to basically anyone left making hard drives not named Seagate and Western Digital. Those two make their own platters and are working on their own next-generation drives for release in the coming years. - -While similar in concept, Seagate and Western Digital have chosen different solutions to the same problem. HAMR, championed by Seagate and Showa, works by temporarily heating the disk material during the write process so data can be written to a much smaller space, thus increasing capacity. - -Western Digital supports a different technology called microwave-assisted magnetic recording (MAMR). It operates under a similar concept as HAMR but uses microwaves instead of heat to alter the drive platter. Seagate hopes to get to 48TB by 2023, while Western Digital is planning on releasing 18TB and 20TB drives this year. - -Heat is never good for a piece of electrical equipment, and Showa Denko’s platters for HAMR HDDs are made of a special composite alloy to tolerate temperature and reduce wear, not to mention increase density. A standard hard disk has a density of about 1.1TB per square inch. Showa’s drive platters have a density of 5-6TB per square inch. - -The question is when they will be for sale, and who will use them. Fellow Japanese electronics giant Toshiba is expected to ship drives with Showa platters later this year. Seagate will be the first American company to adopt HAMR, with 20TB drives scheduled to ship in late 2020. - -[][4] - -Know what’s scary? That still may not be enough. IDC predicts that our global datasphere – the total of all of the digital data we create, consume, or capture – will grow from a total of approximately 40 zettabytes of data in 2019 to 175 zettabytes total by 2025. - -So even with the growth in hard-drive density, the growth in the global data pool – everything from Oracle databases to Instagram photos – may still mean deploying thousands upon thousands of hard drives across data centers. - -Join the Network World communities on [Facebook][5] and [LinkedIn][6] to comment on topics that are top of mind. - --------------------------------------------------------------------------------- - -via: https://www.networkworld.com/article/3528211/japanese-firm-announces-potential-80tb-hard-drives.html - -作者:[Andy Patrizio][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://www.networkworld.com/author/Andy-Patrizio/ -[b]: https://github.com/lujun9972 -[1]: https://pixabay.com/en/data-data-loss-missing-data-process-2764823/ -[2]: https://creativecommons.org/publicdomain/zero/1.0/ -[3]: https://www.networkworld.com/newsletters/signup.html -[4]: https://www.networkworld.com/article/3440100/take-the-intelligent-route-with-consumption-based-storage.html?utm_source=IDG&utm_medium=promotions&utm_campaign=HPE21620&utm_content=sidebar ( Take the Intelligent Route with Consumption-Based Storage) -[5]: https://www.facebook.com/NetworkWorld/ -[6]: https://www.linkedin.com/company/network-world diff --git a/sources/talk/20200224 Discussing Past, Present and Future of FreeBSD Project.md b/sources/talk/20200224 Discussing Past, Present and Future of FreeBSD Project.md deleted file mode 100644 index 4a02a80f20..0000000000 --- a/sources/talk/20200224 Discussing Past, Present and Future of FreeBSD Project.md +++ /dev/null @@ -1,106 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Discussing Past, Present and Future of FreeBSD Project) -[#]: via: (https://itsfoss.com/freebsd-interview-deb-goodkin/) -[#]: author: (Abhishek Prakash https://itsfoss.com/author/abhishek/) - -Discussing Past, Present and Future of FreeBSD Project -====== - -[FreeBSD][1] is one of the most popular BSD distributions. It is used on desktop, servers and embedded devices for more than two decades. - -We talked to Deb Goodkin, executive director, [FreeBSD Foundation][2] and discussed the past, present and future of FreeBSD project. - -![][3] - -**It’s FOSS: FreeBSD has been in the scene for more than 25 years. How do you see the journey of FreeBSD? ** - -Over the years, we’ve seen a lot of innovation happening on and with FreeBSD. When the Foundation came into play 20 years ago, we were able to step in and help accelerate changes in the operating system. Over the years, we’ve increased our marketing support, to provide more advocacy and educational material, and to increase the awareness and use of FreeBSD. - -In addition, we’ve increased our staff of software developers to allow us to quickly step in to fix bugs, review patches, implement workarounds to hardware issues, and implement new features and functionality. We have also increased the number of development projects we are funding to improve various areas of FreeBSD. - -The history of stability and reliability, along with all the improvements and growth with FreeBSD, is making it a compelling choice for companies, universities, and individuals. - -**It’s FOSS: We know that Netflix uses FreeBSD extensively. What other companies or groups rely on FreeBSD? How do they contribute to BSD/FreeBSD (if they do at all)?** - -Sony’s Playstation 4 uses a modified version of FreeBSD as their operating system, Apple with their MacOS and iOS, NetApp in their ONTAP product, Juniper Networks  in [JunOS][4], Trivago in their backend infrastructure, University of Cambridge in security research including the Capability Hardware Enhanced RISC Instruction (CHERI) project, University of Notre Dame in their Engineering Department, Groupon in their datacenter, LA Times in their data center, as well as, other notable companies like Panasonic, and Nintendo. - -I listed a variety of organizations to highlight the different FreeBSD use cases. Companies like [Netflix support FreeBSD][5] by supporting the Project financially, as well as, by upstreaming their code. Some of the companies, like Sony, take advantage of the BSD license and don’t give back at all.  - -![Deb Goodkin And Friend Promoting FreeBSD At Oscon][6] - -**It’s FOSS: Linux is ruling the servers and cloud computing. It seems that BSD is lagging in that field?** - -I wouldn’t characterize it as lagging, per se. Linux distributions do have a much higher market share than FreeBSD, but our strength falls in those two markets. FreeBSD does extremely well in these markets, because it provides a consistent and reliable foundation, and tends to just work. Known for having long term API stability, the user will integrate once and upgrade on their terms as both FreeBSD and their product evolves.  - -**It’s FOSS: Do you see the emergence of Linux as a threat to BSD? ** - -Sure, [there are so many Linux distributions][7] already, and most of them are supported by for profit companies. In fact, companies like Intel have many Linux developers on staff, so Linux is easily supported on their hardware. - -However, thanks to the continuing education efforts and as our market share continues to grow, more developers will be available to support companies’ various FreeBSD use cases.  - -**It’s FOSS: Let’s talk about desktop. Recently, the devs of Project Trident announced that they were moving away from FreeBSD as a base. They said that they made this decision because FreeBSD is slow to review updates and support for new hardware. For example, the most recent version of Telegram on FreeBSD is 9 releases behind the version available on Linux. How would you respond to their comments?** - -There are quite a few FreeBSD distros for the desktop, with various focuses. The latest, is [FuryBSD][8], which coincidentally was started by iXsystems employees, but is independent of iXsystems, just like Project Trident is. In addition to FuryBSD, you may want to check out [NomadBSD][9] and [MidnightBSD][10]. - -Regarding supporting new hardware, we’ve stepped up our efforts to get FreeBSD working on more popular newer laptops. For example, the Foundation recently purchased a couple of the latest generation Lenovo X1 Carbon laptops and sponsored work to make sure that peripherals are supported out-of-the-box. - -**It’s FOSS: Why should a desktop user consider choosing FreeBSD?** - -There are many reasons people should consider using FreeBSD on their desktop! Just to highlight a few, it has rock solid stability; high performance; supports [ZFS][11] to protect your data; a community that is friendly, helpful, and approachable; excellent documentation to easily find answers; over 30,000 open source software packages that are easy to install, allowing you to easily set up your environment without a lot of extras, and that includes many choices of popular GUIs, and it follows the POLA philosophy ([Principle of Least Astonishment][12]) which means, don’t break things that work and upgrades are generally painless (even across major releases).  - -**It’s FOSS: Are there any plans to make it easier to install FreeBSD as a desktop system? The current focus seems to be on servers.** - -The Foundation is supporting efforts to make sure FreeBSD works on the latest hardware and peripherals that appear in desktop systems, and will continue to support making FreeBSD easy to deploy, monitor, and configure to provide a great toolbox for building a desktop on top of it. That allows others to take as much or as little of FreeBSD to build a desktop version to produce a specific user experience they desire. - -Like I mentioned above, there are other FreeBSD distributions that have taken these FreeBSD components and created their own desktop versions. - -**It’s FOSS: What are your plans/roadmap for FreeBSD in the coming years?** - -The FreeBSD Foundation’s purpose is to support the FreeBSD Project. While we’re an entirely separate entity, we work closely with the Core Team and the community to help move the Project forward. The Foundation identifies key areas we should support in the coming years, based on input from users and what we are seeing in the industry.  - -In 2019, we embarked on an even broader spectrum advocacy project to recruit new members throughout the world, while raising awareness about the benefits of learning FreeBSD. We are funding development projects including WiFi improvements, supporting OpenJDK, ZFS RAID-Z expansion, security, toolchain, performance improvements, and other features to keep FreeBSD innovative. - -The FreeBSD Foundation will continue to host workshops and expand the amount of training opportunities and materials we provide. Finally, the [BSD Certification program][13] recently launched through Linux Professional Institute with greater availability.  - -**It’s FOSS: How can we bring more people to the BSD hold?** - -We need more PR for FreeBSD and get more tech journalists like yourself to write about FreeBSD. We also need more trainings and classes that include FreeBSD in universities, trainings/workshops at technical conferences, more FreeBSD contributors giving talks at those conferences, more technical journalists, as well as, users writing about FreeBSD, and finally we need case studies from companies and organizations successfully using FreeBSD. It all takes having more resources! We’re working on all of the above.  - -**It’s FOSS: Any message you would like to convey to our readers?** - -Readers should consider getting involved with the largest and oldest democratically run open source project! - -Whether you want to learn systems programming or how an operating system works, the small size of the operating system makes it a great platform to learn from. The size of the Project makes it easier for anyone to make a notable contribution, and there is a strong mentorship culture to support new contributors. - -Being a democratically run project, allows your voice to be heard and work in the areas you are interested in. I hope your readers will go to [freebsd.org][1] and try it out themselves. - --------------------------------------------------------------------------------- - -via: https://itsfoss.com/freebsd-interview-deb-goodkin/ - -作者:[Abhishek Prakash][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://itsfoss.com/author/abhishek/ -[b]: https://github.com/lujun9972 -[1]: https://www.freebsd.org/ -[2]: https://www.freebsdfoundation.org/ -[3]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/02/deb-goodkin-interview.png?ssl=1 -[4]: https://www.juniper.net/us/en/products-services/nos/junos/ -[5]: https://itsfoss.com/netflix-freebsd-cdn/ -[6]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/02/FreeBSDFoundation_Deb_Goodkin_and_friend_promoting_FreeBSD_at_OSCON.jpg?ssl=1 -[7]: https://itsfoss.com/best-linux-distributions/ -[8]: https://itsfoss.com/furybsd/ -[9]: https://itsfoss.com/nomadbsd/ -[10]: https://itsfoss.com/midnightbsd-1-0-release/ -[11]: https://itsfoss.com/what-is-zfs/ -[12]: https://en.wikipedia.org/wiki/Principle_of_least_astonishment -[13]: https://www.lpi.org/our-certifications/bsd-overview diff --git a/sources/talk/20200225 Spilling over- How working openly with anxiety affects my team.md b/sources/talk/20200225 Spilling over- How working openly with anxiety affects my team.md deleted file mode 100644 index 2a89fd37a5..0000000000 --- a/sources/talk/20200225 Spilling over- How working openly with anxiety affects my team.md +++ /dev/null @@ -1,86 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Spilling over: How working openly with anxiety affects my team) -[#]: via: (https://opensource.com/open-organization/20/2/working-anxiety-team-performance) -[#]: author: (Sam Knuth https://opensource.com/users/samfw) - -Spilling over: How working openly with anxiety affects my team -====== -The team might interpret my behavior as evidence of exacting standards -or high expectations. But I know my anxiety does impact their -performance. -![Spider web on green background][1] - -_Editor's note: This article is part of a series on working with mental health conditions. It details the author's personal experiences and is not meant to convey professional medical advice or guidance._ - -I was speaking with one of my direct reports recently about a discussion we'd had with the broader team earlier in the week. In that discussion I had expressed some frustration that we weren't as far along on a particular project as I thought we needed to be. - -"I knew you were disappointed," my staff member said, recalling the meeting, "like you wanted us to be doing something that we weren't doing, or that what we were doing wasn't good enough." - -They paused for a moment and then said, "Sam, I get this feeling from you all the time." - -That comment struck me pretty profoundly. To my team member, perhaps the scenario above is a reflection of my exacting standards, my high expectations, or my desire to see continual improvement with the team. Those are all reasonable explanations for my behavior. - -But there's another ingredient my team may not be aware of: my anxiety. - -### It's not just personal - -[Previously I discussed][2] how my anxiety, beginning with a worry that I'm not "doing enough," can fuel my proactive tendencies, leading to higher performance at work. What I hadn't considered is my team can interpret my _personal_ feeling of not doing enough as an indicator that _they_ are not doing enough. - -Living with anxiety and other mental health conditions feels personal. It's not something I've talked about at work. It's not something I generally discuss, and it's something I've always felt I was coping with as a private part of my life. - -Living with anxiety and other mental health conditions feels personal. It's not something I've talked about at work. It's not something I generally discuss, and it's something I've always felt I was coping with as a private part of my life. - -But that discussion with my staff member made me realize that I can't contain my personality so neatly. In truth, my anxiety spills over to my team in ways I hadn't considered. I don't know if anxiety can "rub off" on someone, but when I try to think about it objectively, I imagine someone with anxiety would feel it heightened if they worked for me (perhaps my anxiety would feed theirs), and one without anxiety might feel I have unreasonable or unmeetable expectations. - -As a leader—even in an open organization, where [hierarchy is not the most important factor][3] in determining influence—I'm aware that I am in a position of a certain amount of power. People observe my behavior more closely than I realize; how I treat people has a big impact on them, the broader organization, and ultimately the success of the team. - -I try hard to treat people with respect, [to assume positive intent][4], to give people the room to do their work in the way they see fit. But, nonetheless, do my team members feel the kind of judgment from me that I continually impose on myself? - -### Counting our achievements - -What feels "good" to me (what calms my anxiety) is to focus _not_ on what we _have achieved_, but on what we _have yet to do_; not to _celebrate success_, but to _find areas for improvement_. So, when we hit a big milestone, my gut reaction is to say, "Great, now that we've come this far, what else can we do to have a bigger impact?" Stopping and celebrating the team's accomplishments before moving on to the next challenge feels foriegn to me. It also makes me anxious that we are pausing in our progress. - -This is [what I've called an anxiety-driven performance loop][2]. The sense of accomplishment (and the external acknowledgement) after an achievement fuels a desire to immediately start looking for the next challenge. To some extent, this performance loop keeps me productive—even though it has other consequences, too. - -What I want to _avoid_ is transferring my anxiety to my team members. I don't want them to feel that I am continually saying, "What have you done for me lately?" even though that is how I feel the world is looking at me. That's an aspect of what I've called [an anxiety inaction loop][5]. - -I try hard to treat people with respect, to assume positive intent, to give people the room to do their work in the way they see fit. But, nonetheless, do my team members feel the kind of judgment from me that I continually impose on myself? - -At a fundamental level, I believe work is never done, that there is always another challenge to explore, other ways to have a larger impact. Leaders need to inspire and motivate us to embrace that reality as an exciting opportunity rather than an endless drudge or a source of continual worry. - -As a leader who suffers from anxiety, this is more challenging to do in practice than it is to understand intellectually. - -While this is an area of continual work for me, I've received some good advice on how to shield my colleagues from my own anxiety-driven loops, like: - - * If celebrating success and acknowledging achievement doesn't come naturally for you, build it into the plan from the start. Ensure you have the celebration of accomplishment accounted for from the beginning of a project. This can help reduce the "what have you done for me lately?" impulse that comes from moving quickly to the next challenge without pausing to acknowledge achievements. - * Work with another team member on acknowledgment and celebration efforts. Others might have different ideas on how to do this effectively, and may also enjoy the process. Giving this responsibility to someone else can help ensure it isn't lost. - * Practice compassion, gratitude, and empathy. This may not come naturally and may take some effort. Putting yourself in someone else's shoes, thinking about their perspective, thanking people for what they have done, and understanding their challenges can go a long way in shifting your own perspective. - * If you find yourself judging others, ask yourself, "Is this useful in terms of what I want or need from this situation?" That is, is carrying judgment going to help you accomplish your goal? Most likely, the answer is no. And, in fact, it may have the opposite effect! - - - -The above tips have been helpful for me. But the goal of this series hasn't been to provide solutions but rather to share my experiences and to use writing to explore my own tendencies and the impact they have on myself and others. I believe that acknowledging and sharing our personal challenges can reduce the [stigma][6] associated with mental illness, create the space needed to start exploring solutions, and to create environments that are more positive and invigorating to work in. - --------------------------------------------------------------------------------- - -via: https://opensource.com/open-organization/20/2/working-anxiety-team-performance - -作者:[Sam Knuth][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/samfw -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/osdc-lead-web-internet.png?itok=UQ0zMNJ3 (Spider web on green background) -[2]: https://opensource.com/open-organization/20/1/leading-openly-anxiety -[3]: https://opensource.com/open-organization/resources/open-org-definition -[4]: https://opensource.com/article/17/2/what-happens-when-we-just-assume-positive-intent -[5]: https://opensource.com/open-organization/20/2/working-anxiety-inaction-loop -[6]: https://www.bloomberg.com/news/articles/2019-11-13/mental-health-is-still-a-don-t-ask-don-t-tell-subject-at-work diff --git a/sources/talk/20200226 How we decide when to release Fedora.md b/sources/talk/20200226 How we decide when to release Fedora.md deleted file mode 100644 index 204a917ee4..0000000000 --- a/sources/talk/20200226 How we decide when to release Fedora.md +++ /dev/null @@ -1,74 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (How we decide when to release Fedora) -[#]: via: (https://fedoramagazine.org/how-we-decide-when-to-release-fedora/) -[#]: author: (Ben Cotton https://fedoramagazine.org/author/bcotton/) - -How we decide when to release Fedora -====== - -![][1] - -Open source projects can use a variety of different models for deciding when to put out a release. Some projects release on a set schedule. Others decide on what the next release should contain and release whenever that is ready. Some just wake up one day and decide it’s time to release. And other projects go for a rolling release model, avoiding the question entirely. - -For Fedora, we go with a [schedule-based approach][2]. Releasing twice a year means we can give our contributors time to implement large changes while still keeping on the leading edge. Targeting releases for the end of April and the end of October gives everyone predictability: contributors, users, upstreams, and downstreams. - -But it’s not enough to release whatever’s ready on the scheduled date. We want to make sure that we’re releasing _quality_ software. Over the years, the Fedora community has developed a set of processes to help ensure we can meet both our time and and quality targets. - -### Changes process - -Meeting our goals starts months before the release. Contributors propose changes through our [Changes process][3], which ensures that the community has a chance to provide input and be aware of impacts. For changes with a broad impact (called “system-wide changes”), we require a contingency plan that describes how to back out the change if it’s broken or won’t be ready in time. In addition, the change process includes providing steps for testing. This helps make sure we can properly verify the results of a change. - -Change proposals are due 2-3 months before the beta release date. This gives the community time to evaluate the impact of the change and make adjustments necessary. For example, a new compiler release might require other package maintainers to fix bugs exposed by the new compiler or to make changes that take advantage of new capabilities. - -A few weeks before the beta and final releases, we enter a [code freeze][4]. This ensures a stable target for testing. Bugs identified as blockers and non-blocking bugs that are granted a freeze exception are updated in the repo, but everything else must wait. The freeze lasts until the release. - -### Blocker and freeze exception process - -In a project as large as Fedora, it’s impossible to test every possible combination of packages and configurations. So we have a set of test cases that we run to make sure the key features are covered. - -As much as we’d like to ship with zero bugs, if we waited until we reached that state, there’d never be another Fedora release again. Instead, we’ve defined release criteria that define what bugs can [block the release][5]. We have [basic release criteria][6] that apply to all release milestones, and then separate, cumulative criteria for [beta][7] and [final][8] releases. With beta releases, we’re generally a little more forgiving of rough edges. For a final release, it needs to pass all of beta’s criteria, plus some more that help make it a better user experience. - -The week before a scheduled release, we hold a “[go/no go meeting][9]“. During this meeting, the QA team, release engineering team, and the Fedora Engineering Steering Committee (FESCo) decide whether or not we will ship the release. As part of the decision process, we conduct a final review of blocker bugs. If any accepted blockers remain, we push the release back to a later date. - -Some bugs aren’t severe enough to block the release, but we still would like to get them fixed before the release. This is particularly true of bugs that affect the live image experience. In that case, we grant an [exception for updates that fix those bugs][10]. - -### How you can help - -In all my years as a Fedora contributor, I’ve never heard the QA team say “we don’t need any more help.” Contributing to the pre-release testing processes can be a great way to make your first Fedora contribution. - -The Blocker Review meetings happen most Mondays in #fedora-blocker-review on IRC. All members of the Fedora community are welcome to participate in the discussion and voting. One particularly useful contribution is to look at the [proposed blockers][11] and see if you can reproduce them. Knowing if a bug is widespread or not is important to the blocker decision. - -In addition, the QA team conducts test days and test weeks focused on various parts of the distribution: the kernel, GNOME, etc. Test days are announced on [Fedora Magazine][12]. - -There are plenty of other ways to contribute to the QA process. The Fedora wiki has a [list of tasks and how to contact the QA team][13]. The Fedora 32 Beta release is a few weeks away, so now’s a great time to get started! - --------------------------------------------------------------------------------- - -via: https://fedoramagazine.org/how-we-decide-when-to-release-fedora/ - -作者:[Ben Cotton][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://fedoramagazine.org/author/bcotton/ -[b]: https://github.com/lujun9972 -[1]: https://fedoramagazine.org/wp-content/uploads/2020/02/releasing-fedora-1-816x345.png -[2]: https://fedoraproject.org/wiki/Fedora_Release_Life_Cycle#Development_Schedule -[3]: https://docs.fedoraproject.org/en-US/program_management/changes_policy/ -[4]: https://fedoraproject.org/wiki/Milestone_freezes -[5]: https://fedoraproject.org/wiki/QA:SOP_blocker_bug_process -[6]: https://fedoraproject.org/wiki/Basic_Release_Criteria -[7]: https://fedoraproject.org/wiki/Fedora_32_Beta_Release_Criteria -[8]: https://fedoraproject.org/wiki/Fedora_32_Final_Release_Criteria -[9]: https://fedoraproject.org/wiki/Go_No_Go_Meeting -[10]: https://fedoraproject.org/wiki/QA:SOP_freeze_exception_bug_process -[11]: https://qa.fedoraproject.org/blockerbugs/ -[12]: https://fedoramagazine.org/tag/test-day/ -[13]: https://fedoraproject.org/wiki/QA/Join diff --git a/sources/talk/20200226 Mirantis- Balancing Open Source with Guardrails.md b/sources/talk/20200226 Mirantis- Balancing Open Source with Guardrails.md deleted file mode 100644 index 5eeb400060..0000000000 --- a/sources/talk/20200226 Mirantis- Balancing Open Source with Guardrails.md +++ /dev/null @@ -1,86 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Mirantis: Balancing Open Source with Guardrails) -[#]: via: (https://www.linux.com/articles/mirantis-balancing-open-source-with-guardrails/) -[#]: author: (Swapnil Bhartiya https://www.linux.com/author/swapnil/) - -Mirantis: Balancing Open Source with Guardrails -====== - -[![][1]][2] - -[![][1]][2] - -Mirantis, an open infrastructure company that rose to popularity with its OpenStack offering, is now moving into the Kubernetes space very aggressively. [Last year, the company acquired the Docker Enterprise business from Docker.][3] [This week, it announced that they were hiring the Kubernetes experts from the Finnish company Kontena a][4]nd established a Mirantis office in Finland, expanding the company’s footprint in Europe. Mirantis already has a significant presence in Europe due to large customers such as Bosch and [Volkswagen][5]. - -The Kontena team primarily focused on two technologies. One was a Kubernetes distro called [Pharos][6], which differentiated itself from other distributions by specializing in addressing life cycle management challenges. They had developed some unique capabilities for deployment and for updating Kubernetes itself. - -The second product by Kontena is [Lens][6]. “It’s like a Kubernetes dashboard on steroids. In addition to offering the standard dashboard functions, it went multiple steps further by providing a terminal for command line interfacing to nodes and containers, and additional real-time insights, role-based access controls and a number of other capabilities that are currently absent from the Kubernetes dashboard,” said [Dave Van Everen][7], SVP of Marketing at Mirantis. - -Everything that Kontena does is open source. These open source projects are already used by hundreds of organizations around the world. “They have a proven track record of contributing valuable technology pieces to the Kubernetes ecosystem, and we saw an opportunity to bring the team on board and capitalized on that opportunity as quickly as we could,” said Van Everen. - -Mirantis will integrate many of the technology concepts and benefits from Pharos into its Docker Enterprise offering. With Kontena engineers on board, Mirantis expects to incorporate the best of what Kontena offered into its commercially supported Docker Enterprise and [Kubernetes][8] technology. - -With this acquisition, Mirantis has hinted at a very aggressive 2020. The company is weeks away from launching the first Docker Enterprise release since the acquisition. The release brings many new capabilities on top of Docker Enterprise 3.0. The company is working on merging the [Mirantis KaaS][9] capabilities with Docker Enterprise. “We will add new capabilities, including multi-cluster management and continuous automated updates to the Kubernetes that’s already within Docker Enterprise,” said Van Everen. - -**What is Mirantis today?** - -Mirantis started out as a pure-play OpenStack company, but as the market dynamics changed, the company adjusted its own positioning and bet on CD platforms like Spinnaker and container orchestration technologies like Kubernetes. So, what are they focusing on today? - -Van Everen said that Mirantis is definitely embracing Kubernetes as the open standard used by enterprises for modern applications. Kubernetes itself has a massive ecosystem of technologies that a customer needs to leverage. “When we speak about Kubernetes, we speak about full-stack Kubernetes, which includes that ecosystem consisting of a couple dozen components in a typical cluster deployment. Our job as a trusted partner in helping our customers accelerate their path to modern applications is to streamline and automate all of the infrastructure and DevOps tooling supporting their app development lifecycle,” san Van Everen. - -In a nutshell, Mirantis is making it easier for customers to use Kubernetes. - -Over the years, [Mirantis][10] has gained expertise in IaaS with the work they did on OpenStack. “All of that plays a role in helping companies move faster and become more agile as they’re modernizing their applications. We apply many of those same strengths to the Kubernetes ecosystem,” he said. - -Mirantis is also building expertise in continuous delivery platforms like [Argo CD][11] and is offering customers a spectrum of professional services around application modernization, from writing code that is based in microservices architecture, to integrating CI/CD pipelines and modernizing the tooling for CI/CD to better support cloud-native patterns. By supporting Kubernetes technology with app modernization services, Mirantis is helping customers wherever they are in their digital transformation and cloud-native journey. - -“All of those things that our services team provides are complementary to the technology. That’s a unique value that only Mirantis can provide to the market, where we can couple open source technologies with strong services to ensure that companies really get the most out of that open source technology and fulfill their ultimate goal, which is to accelerate their pace of innovation,” Van Everen said. - -Container networking is a critical piece of the cloud-native world and Mirantis already has expertise in the area, thanks to their work on OpenStack. The company recently joined the Linux Foundation’s [LF Networking project][12] which is home to [Tungsten Fabric][13] (formerly known as OpenContrail), a technology that Mirantis uses for its [OpenStack][14] offerings. - -He explains, “While we use Calico for the container networking, Tungsten Fabric would be an important part of the underlying networking supporting Kubernetes deployments. Staying true to our heritage, we want to be involved in the open community and have both a voice and a stake in the direction the communities are moving in.” - -[As for the ongoing debate or controversy around two competing service mesh technologies Istio and Linkerd,][15] the company has made its bet on Istio. A few months ago, Mirantis announced a training program for Istio, which was bundled with Mirantis’ KaaS offerings. - -“We include Istio as a service mesh by default in child clusters under Mirantis KaaS management. It’ll be used as an ingress with Docker Enterprise initially. Moving forward, we’re still looking at how to best deploy it in a service mesh configuration by default and provide a configurable but still functional default deployment for Istio as a service mesh,” said Van Everen. - -It might seem like Mirantis is latching on to the latest hot technologies like OpenStack, [Spinnaker][16], Docker Enterprise, Kubernetes, and Istio to see what sticks. In reality, there is a method to it: the company is going where its customers are going, with the technologies that customers are using. It’s a fine balancing act. - -“That’s the type of technology challenge that Mirantis embraces. We are open source experts and continue to provide the greatest flexibility and choice in our industry, but we do it in such a way that there are guardrails in place so that companies don’t end up having something that’s overly complex and unmanageable, or configured incorrectly,” he concluded. - -Note: Cross posted to [TFIR][17] - --------------------------------------------------------------------------------- - -via: https://www.linux.com/articles/mirantis-balancing-open-source-with-guardrails/ - -作者:[Swapnil Bhartiya][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://www.linux.com/author/swapnil/ -[b]: https://github.com/lujun9972 -[1]: https://www.linux.com/wp-content/uploads/2019/09/world-network-1068x713.jpg (world-network) -[2]: https://www.linux.com/wp-content/uploads/2019/09/world-network.jpg -[3]: https://www.youtube.com/watch?v=cBOrVKuomcU&feature=emb_title -[4]: https://containerjournal.com/topics/container-ecosystems/mirantis-acquires-kubernetes-assets-from-kontena/ -[5]: https://www.mirantis.com/company/press-center/company-news/volkswagen-group-selects-mirantis-openstack-software-next-generation-cloud/ -[6]: https://github.com/kontena -[7]: https://twitter.com/davidvaneveren?lang=en -[8]: https://kubernetes.io/ -[9]: https://www.tfir.io/mirantis-launches-kaas-across-bare-metal-public-and-private-clouds/ -[10]: https://www.mirantis.com/ -[11]: https://argoproj.github.io/argo-cd/ -[12]: https://www.linuxfoundation.org/projects/networking/ -[13]: https://tungsten.io/ -[14]: https://www.openstack.org/ -[15]: https://twitter.com/hashtag/istio?lang=en -[16]: https://www.tfir.io/?s=spinnaker -[17]: https://www.tfir.io/mirantis-balancing-open-source-with-guardrails/ diff --git a/sources/talk/20200227 How Melissa Di Donato Is Going To Reinvent SUSE.md b/sources/talk/20200227 How Melissa Di Donato Is Going To Reinvent SUSE.md deleted file mode 100644 index eb5fa59eb0..0000000000 --- a/sources/talk/20200227 How Melissa Di Donato Is Going To Reinvent SUSE.md +++ /dev/null @@ -1,91 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (How Melissa Di Donato Is Going To Reinvent SUSE) -[#]: via: (https://www.linux.com/articles/how-melissa-di-donato-is-going-to-reinvent-suse/) -[#]: author: (Swapnil Bhartiya https://www.linux.com/author/swapnil/) - -How Melissa Di Donato Is Going To Reinvent SUSE -====== - -[![][1]][2] - -[![][1]][2] - -SUSE is one of the oldest open source companies and the first to market Linux for the enterprise. Even though it has undergone several acquisitions and a merger, it remains a strong player in the business. It has maintained its integrity and core values around open source. It continues to rely on its tried-and-tested Linux business and European markets, and generally shies away from making big moves taking big risks. - -Until now. - -[SUSE appointed Melissa Di Donato as its first female CEO][3]. She is making some serious changes to the company, from building a diverse and inclusive culture to betting on emerging technologies and taking risks. - -Soon after taking the helm last year, Di Donato spent the first few months traveling around the globe to meet SUSE teams and customers and get a better sense of the perception of the market about the company. - -Just like [Red Hat CEO Jim Whitehurst,][4] Di Donato didn’t come to the company from an open source background. She had spent the last 25 years of her career as a SUSE customer, so she did have an outsider’s perspective of the company. - -“I am not interested in what SUSE was when I joined. I am more interested in what we want to become,” she said. - -**Innovating for customers** - -After her 100-day global tour, Di Donato had a much clearer picture of the company. She found that more than 80% of SUSE customers were still traditionalists, i.e., companies such as Walgreens and Daimler who have been around for a long time. - -Over the years, these customers brought technologies into their environments to simplify things, but they ended up creating more complexities. It’s a tall order to weave through the legacy technical debt they incurred and embrace emerging technologies such as Cloud Foundry, Kubernetes and so on. - -These customers want to modernize their legacy environments and workloads, but they can’t do that with the complex environments they have built. They can’t iterate faster; they can’t respond to new opportunities and new competitors faster. - -They want to leverage cloud-native technologies like Kubernetes and containers, but it is overwhelming to evaluate technologies that are emerging at such a rapid pace. Which ones are just shiny new things and which ones do they really need them to accelerate their business goals? - -“We have to help our customers simplify their infrastructure and environment so that they can start modernizing it and start leveraging new technologies,” Di Donato said. - -While SUSE will continue to focus on core Linux OS, it will also invest in the next generation of Linux. It has been working on technologies like Kubic and MicroOS that change the way Linux is installed, managed, and operated. - -She explains, “We are going to reinvent the way operating systems are used. We are going to make sure that we provide solutions that help our customers optimize their environment, automate components to help the applications run in a much more efficient and modern way. That’s what SUSE is going to be — an innovator. We’re not there quite yet, but that’s our focus.”. - -**Evolving the company ** - -Historically, SUSE has been a fairly conservative company compared to other companies like Red Hat, which has been embracing emerging technologies at a much faster rate than any other open source software vendor. - -“We have not been in a place where we’ve been considered the risk taker. We’re the steady, stable provider of the most comprehensive unbreakable solutions in the market,” Di Donato admitted. “But we need to take that strong foundation and begin to become a bit of a risk taker, and begin to become very innovative.” - -She is also gunning for explosive growth. “We’re going to double in size by 2023. We have to go from just under half-a-billion in revenue to a billion.” - -To achieve that, SUSE will be looking at both organic and inorganic growth, including acquisition of companies, talent and technologies. “We are going to be the default choice for innovation. We are going to be the default choice for highly innovative technologies that really change the landscape,” Di Donato said. - -**Refining the brand** - -Aside from making significant changes within the company, Di Donato is working on refining the SUSE brand. She hired seasoned Ivo Totev to lead Product and Marketing and showcase the company’s differentiation. - -“We’re trying to get into the psychology of reinventing the brand,” Di Donato said. Her goal is to allocate 30-40% of SUSE’s total revenue outside of the core Linux OS towards emerging markets and develop the technologies that they’ve already built. - -SUSE _is_ home to many innovative technologies that are being used by other open source communities, even its competitors. It just didn’t market them the way Red Hat would market its technologies and projects. Even though SUSE started before Red Hat, the latter has much more visibility around the globe. - -“It’s a matter of getting the word out. We build things, but we don’t talk about it or do anything about it. We actually have to put a package around it and start selling it so people can see who we are and what value we bring to them.” - -In Di Donato’s eyes, though, good marketing isn’t everything. She argued that customers are going to demand flexibility and they are going to demand innovation that is not tied to the stack of a company. “Red Hat has a very locked-in stack that doesn’t allow them to be agnostic at all.” - -It’s quite true that unlike Red Hat, SUSE is known as an “open open-source company”, one that believes in working with partners to create an ecosystem around open source, instead of creating a tightly integrated stack that locks everyone out. - -She believes that eventually, customers would want the freedom and flexibility of picking and choosing the components they want in their stack. - -**Conclusion** - -Expect some big moves from SUSE in the near future. Less than a year into the company, new CEO Di Donato has developed a very clear vision. “We’re going to build this company based on an innovative and agile mindset. We’re not going to give up the stability and the quality of our core. What we are going to do is surround the core with really innovative thought-leading technologies that are going to set us apart from our competition… You are going to feel and experience a very different sense of excitement because we’re going to be talking much, much louder than we’ve ever talked about it before.” - --------------------------------------------------------------------------------- - -via: https://www.linux.com/articles/how-melissa-di-donato-is-going-to-reinvent-suse/ - -作者:[Swapnil Bhartiya][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://www.linux.com/author/swapnil/ -[b]: https://github.com/lujun9972 -[1]: https://www.linux.com/wp-content/uploads/2020/02/Melissa-Di-Donato-1068x763.jpg (Melissa Di Donato) -[2]: https://www.linux.com/wp-content/uploads/2020/02/Melissa-Di-Donato-scaled.jpg -[3]: https://www.tfir.io/suse-gets-its-first-female-ceo-melissa-di-donato/ -[4]: https://www.cio.com/article/3090140/jim-whitehurst-if-its-important-to-the-linux-community-its-important-to-red-hat.html diff --git a/sources/talk/20200228 Intel takes aim at Huawei 5G market presence.md b/sources/talk/20200228 Intel takes aim at Huawei 5G market presence.md deleted file mode 100644 index 22caa3c0f6..0000000000 --- a/sources/talk/20200228 Intel takes aim at Huawei 5G market presence.md +++ /dev/null @@ -1,59 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Intel takes aim at Huawei 5G market presence) -[#]: via: (https://www.networkworld.com/article/3529354/intel-takes-aim-at-huawei-5g-market-presence.html) -[#]: author: (Andy Patrizio https://www.networkworld.com/author/Andy-Patrizio/) - -Intel takes aim at Huawei 5G market presence -====== -Intel has ambitious plans to grab the 5G base station marketplace, which is still in its infancy. -Christopher Hebert/IDG - -Intel on Monday introduced a raft of new processors, and while updates to the Xeon Scalable lineup led the parade, the real news is Intel's efforts to go after the embattled Huawei Technologies in the 5G market. - -Intel unveiled its first ever 5G integrated chip platform, the Atom P5900, for use in base stations. Navin Shenoy, executive vice president and general manager of the data platforms group at Intel, said the product is designed for 5G's high bandwidth and low latency and combines compute, 100Gb performance and acceleration into a single SoC. - -"It delivers a performance punch in packet security throughput, and improved packet balancing throughput versus using software alone," Shenoy said in the video accompanying the announcement. Intel claims the dynamic load balancer native to the Atom P5900 chip is 3.7 times more efficient at packet balancing throughput than software alone. - -Shenoy said Ericsson, Nokia, and ZTE have announced that they will use the Atom P5900 in their base stations. Intel hopes to be the market leader for silicon base station chips by 2021, aiming for 40% of the market and six million 5G base stations by 2024. - -That's pretty aggressive, but the 5G fields are very green and there is plenty of room for growth. Despite all the mobile provider's commercials boasting of 5G availability, the fact is, true 5G phones are only just coming to market now, and the number of base stations is minimal. 5G has a long ramp ahead. - -The Atom P5900 puts Intel in competition with China's Huawei, which U.S. federal authorities have repeatedly labeled a security risk. Huawei has been barred from several nations, including the U.S., England, Japan, and Australia. However, Huawei also said it has secured more than 90 commercial 5G contracts globally. - -Until now, Ericsson and Nokia have asked developers such as Broadcom to help develop base station chips, while Samsung designs and manufactures its own 5G base station chips. - -**[ [Take this mobile device management course from PluralSight and learn how to secure devices in your company without degrading the user experience.][1] ]** - -### Second Generation Xeon Scalable processors - -Intel's latest launch also includes 18 2nd Gen Xeon Scalable processors; one is branded Bronze, four are Silver, and 13 are Gold. The upgraded lineup targets the entry-level to medium-range market, leaving the Platinum to duke it out with the high end AMD Epyc processors. - -The new processors range from 8 to 28 cores and include a variety of clock speeds that go down as the core count goes up. They have TDP ratings that range from 85 watts for the eight-core, 1.9Ghz Bronze 3206R to 205 watts for the 28-core, 2.7Ghz Gold 6258R. (Intel and other chip makers measure a processor's power draw with a specification called thermal design power, or TDP.) ** -** - -While most of the chips are meant for standard data center use, some processors – including the Xeon Gold 6200U, Silver 4200R, Sliver 4210T and Bronze 3200R – are specifically meant for single-socket, entry-level servers, as well as edge, networking and IoT uses. - -Intel also introduced the Intel Ethernet 700 Network Adapter, which comes with hardware-enhanced precision timing designed specifically for 5G and other scenarios with very low latency and timing requirements. - -Join the Network World communities on [Facebook][2] and [LinkedIn][3] to comment on topics that are top of mind. - --------------------------------------------------------------------------------- - -via: https://www.networkworld.com/article/3529354/intel-takes-aim-at-huawei-5g-market-presence.html - -作者:[Andy Patrizio][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://www.networkworld.com/author/Andy-Patrizio/ -[b]: https://github.com/lujun9972 -[1]: https://pluralsight.pxf.io/c/321564/424552/7490?u=https%3A%2F%2Fwww.pluralsight.com%2Fcourses%2Fmobile-device-management-big-picture -[2]: https://www.facebook.com/NetworkWorld/ -[3]: https://www.linkedin.com/company/network-world diff --git a/sources/talk/20200228 No More WhatsApp- The EU Commission Switches To ‘Signal- For Internal Communication.md b/sources/talk/20200228 No More WhatsApp- The EU Commission Switches To ‘Signal- For Internal Communication.md deleted file mode 100644 index 8b47602a54..0000000000 --- a/sources/talk/20200228 No More WhatsApp- The EU Commission Switches To ‘Signal- For Internal Communication.md +++ /dev/null @@ -1,70 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (No More WhatsApp! The EU Commission Switches To ‘Signal’ For Internal Communication) -[#]: via: (https://itsfoss.com/eu-commission-switches-to-signal/) -[#]: author: (Ankush Das https://itsfoss.com/author/ankush/) - -No More WhatsApp! The EU Commission Switches To ‘Signal’ For Internal Communication -====== - -_**In a move to improve the cyber-security, EU has recommended its staff to use open source secure messaging app Signal instead of the popular apps like WhatsApp.**_ - -[Signal is an open source secure messaging application][1] with end to end encryption. It is praised by the likes of [Edward Snowden][2] and other privacy activists, journalists and researchers. We’ve recently covered it in our ‘[open source app of the week][3]‘ series. - -[Signal][4] is in news for good reasons. The European Union Commissions have instructed its staff to use Signal for public instant messaging. - -This is part of EU”s new cybersecurity strategy. There has been cases of data leaks and hacking against EU diplomats and thus policy is being put in place to encourage better security practices. - -### Governments recommending open source technology is a good sign - -![][5] - -No matter what the reason is, Government bodies recommending open-source services for better security is definitely a good thing for the open-source community in general. - -[Politico][6] originally reported this by mentioning that the EU instructed its staff to use Signal as the recommended public instant messaging app: - -> The instruction appeared on internal messaging boards in early February, notifying employees that “Signal has been selected as the recommended application for public instant messaging.” - -The report also mentioned the potential advantage of Signal (which is why the EU is considering using it): - -> “It’s like Facebook’s WhatsApp and Apple’s iMessage but it’s based on an encryption protocol that’s very innovative,” said Bart Preneel, cryptography expert at the University of Leuven. “Because it’s open-source, you can check what’s happening under the hood,” he added. - -Even though they just want to secure their communication or want to prevent high-profile leaks, switching to an open-source solution instead of [WhatsApp][7] sounds good to me. - -### Signal gets a deserving promotion - -Even though Signal is a centralized solution that requires a phone number as of now, it is still a no-nonsense open-source messaging app that you may trust. - -Privacy enthusiasts already know a lot of services (or alternatives) to keep up with the latest security and privacy threats. However, with the EU Commission recommending it to its staff, Signal will get an indirect promotion for common mobile and desktop users. - -### Wrapping Up - -It is still an irony that some Government bodies hate encrypted solutions while opting to use them for their own requirement. - -Nevertheless, it is good progress for open-source services and tech, in general, is recommended as a secure alternative. - -What do you think about the EU’s decision on switching to the Signal app for its internal communication? Feel free to let me know your thoughts in the comments below. - --------------------------------------------------------------------------------- - -via: https://itsfoss.com/eu-commission-switches-to-signal/ - -作者:[Ankush Das][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://itsfoss.com/author/ankush/ -[b]: https://github.com/lujun9972 -[1]: https://itsfoss.com/signal-messaging-app/ -[2]: https://en.wikipedia.org/wiki/Edward_Snowden -[3]: https://itsfoss.com/tag/app-of-the-week/ -[4]: https://www.signal.org/ -[5]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/02/Signal-eu.jpg?ssl=1 -[6]: https://www.politico.eu/pro/eu-commission-to-staff-switch-to-signal-messaging-app/ -[7]: https://www.whatsapp.com/ diff --git a/sources/talk/20200229 Solus Linux Creator Ikey Doherty Enters the Game Dev Business With a New Open Source Game Engine.md b/sources/talk/20200229 Solus Linux Creator Ikey Doherty Enters the Game Dev Business With a New Open Source Game Engine.md deleted file mode 100644 index a61dfca27f..0000000000 --- a/sources/talk/20200229 Solus Linux Creator Ikey Doherty Enters the Game Dev Business With a New Open Source Game Engine.md +++ /dev/null @@ -1,120 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Solus Linux Creator Ikey Doherty Enters the Game Dev Business With a New Open Source Game Engine) -[#]: via: (https://itsfoss.com/ikey-doherty-serpent-interview/) -[#]: author: (John Paul https://itsfoss.com/author/john/) - -Solus Linux Creator Ikey Doherty Enters the Game Dev Business With a New Open Source Game Engine -====== - -[Ikey Doherty][1], the creator and former lead dev of [Solus][2], is back with a new project. His new company, [Lispy Snake, Ltd][3], uses open source technology to create games, with a focus on Linux support. - -I asked Ikey some questions about his new project. Here are his answers. - -![][4] - -_**It’s FOSS: What made you decide to get into game development?**_ - -**Ikey**: Honestly I would have to say a respect for older games. The creativity that came from so much limitation is frankly amazing. If you think of how limited the NES or C64 were, (or indeed my [Amstrad CPC][5]) – yet how much joy people experienced from those platforms. It’s a buzz I can’t avoid. Even though we’re a long way now from that world, I still look to model that technical excellence and creativity as best I can. I’m a sucker for good stories. - -_**It’s FOSS: There are already several open-source game engines. Why did you decide to make your own? What is Serpent’s killer feature?**_ - -**Ikey**: There are a good number of open and closed source ones, each with a great set of features. However, I’m a pretty old school developer and there is nothing I hate more than an IDE or ‘drag n drop’ codeless environment. I simply wanted to create indie games with the least fuss possible and using a framework where I didn’t have to compromise. Once you get to ‘must work nicely on Linux and be open source’ you’re kinda short on choice. - -I collected a set of projects that I’d use as the foundation for Lispy Snake’s first games, but needed something of a framework to tie them all together, as a reusable codebase across all games and updates. - -I wouldn’t say killer features are present yet – just a set of sensible decisions. Serpent is written in D so it’s highly performant with a lower barrier of entry than say C or C++. It’s allowing me to flesh out a framework that suits my development ideals and pays attention to industry requirements, such as a performant multithreading Entity Component System or the sprite batching system. - -When you rope together all the features and decisions, you get a portable codebase, that thanks to its choice of libraries like SDL and bgfx, will eventually run on all major platforms with minimal effort on our part. That basically means we’re getting OpenGL, DirectX, Vulkan and Metal “for free”. - -Being able to target the latest APIs and create indie games easily, with industry standard features emerging constantly, from a framework that doesn’t impose itself on your workflow…that’s a pretty good combination. - -![][6] - -_**It’s FOSS: Why did you name your company LispySnake? Did you have a pet snake with a speech impediment when you were a kid?**_ - -**Ikey**: Honestly? [Naughty Dog][7] was taken. Gotta love some Bandicoot. Plus, originally we were taking on some Python contracting work and I found the name amusing. It’s pretty much a nonsensical name like many of my previous projects (Like Dave. Or Dave2.) - -_**It’s FOSS: After being an operating system developer for many years, how does it feel to be working on something smaller? Would you say that your time as an OS developer gives you an edge as a game dev?**_ - -**Ikey**: OS dev needs a very high level view constantly, with the ability to context switch from macro to micro and back again. Many, many moving parts in a large ecosystem. - -Serpent is much more task orientated – though similarities in the workflow exist in terms of defining macro systems and interleaving micro features to build a cohesive whole. My background in OS dev is obviously a huge help here. - -Where it especially shines is dealing with the ‘guts’. I think a lot of indie devs (forgive me for being sweeping) are generally happy to just build from an existing kit and either embrace it or workaround the issues. There are some true gems out there like Factorio that go above and beyond and I have to hold my hat to them. - -In terms of building a new kit we get to think, properly, about cache coherency, parallel performance, memory fragmentation, context switching and such. - -Consumers of Serpent (when released in a more stable form) will know that the framework has been designed to leverage Linux features, not just spitting out builds for it. - -![][8] - -_**It’s FOSS: Recently you ported your [Serpent][9] game engine from C to the [D language][10]. Why did you make this move? What features does D have over C?**_ - -**Ikey**: Yeah honestly that was an interesting move. We were originally working on a project called lispysnake2d which was to be a trivial wrapper around SDL to give us a micro-game library. This simply used SDL_Renderer APIs to blit 2D sprites and initially seemed sufficient. Unfortunately as development progressed it was clear we needed a 3D pipeline for 2D, so we could utilize shaders and special effects. At that point SDL_Renderer is no good to you anymore and you need to go with Vulkan or OpenGL. We began abstracting the pipelines and saw the madness ensue. - -After taking a step back, I analyzed all the shortcomings in the approach, and tired of the portability issues that would definitely arise. I’m not talking in terms of libraries, I’m talking about dealing with various filepaths, encodings, Win32 APIs, DirectX vs OpenGL vs Vulkan…etc. Then whack in boilerplate time, C string shortcomings, and the amount of reinventing required to avoid linking to bloated “cross-platform” standard library style libraries. It was a bad picture. - -Having done a lot of [Go][11] development, I started researching alternatives to C that were concurrency-aware, string-sane, and packed with a powerful cross-platform standard library. This is the part where everyone will automatically tell you to use Rust. - -Unfortunately, I’m too stupid to use [Rust][12] because the syntax literally offends my eyes. I don’t get it, and I never will. Rust is a fantastic language and as academic endeavours go, highly successful. Unfortunately, I’m too practically minded and seek comfort in C-style languages, having lived in that world too long. So, D was the best candidate to tick all the boxes, whilst having C & C++ interoptability. - -It took us a while to restore feature parity but now we have a concurrency-friendly framework which is tested with both OpenGL and Vulkan, supports sprite batching and has nice APIs. Plus, much of the reinvention is gone as we’re leveraging all the features of SDL, bgfx and the DLang standard library. Win win. - -![The first game from LispySnake][13] - -_**It’s FOSS: How are you planning to distribute your games?**_ - -**Ikey**: Demo wise we’ll initially only focus on Linux, and it’s looking like we’ll use Flatpak for that. As time goes on, when we’ve introduced support and testing for macOS + Windows, we’ll likely look to the Steam Store. Despite the closed source nature, Valve have been far more friendly and supportive of Linux over the years, whilst the likes of Epic Games have a long history of being highly anti-Linux. So that’s a no go. - -_**It’s FOSS: How can people support and contribute to the development of the Serpent game engine?**_ - -**Ikey**: We have a few different methods, for what it’s worth. The easiest is to [buy a Lifetime License][14] – which is $20. This grants you lifetime access to all of our 2D games and helps fund development of our game titles and Serpent. - -Alternatively, you can [sponsor me directly on GitHub][15] to work on Serpent and upstream where needed. Bit of FOSS love. - -[Support with Lifetime License][16] - -[Sponsor the development on GitHub][15] - -* * * - -I would like to thank Ikey for taking the time to answer my questions about his latest project. - -Have any of you created a game with open source tools? If so, what tools and how was the experience? Please let us know in the comments below. - -If you found this article interesting, please take a minute to share it on social media, Hacker News or [Reddit][17]. - --------------------------------------------------------------------------------- - -via: https://itsfoss.com/ikey-doherty-serpent-interview/ - -作者:[John Paul][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://itsfoss.com/author/john/ -[b]: https://github.com/lujun9972 -[1]: https://twitter.com/ikey_doherty -[2]: https://getsol.us/home/ -[3]: https://lispysnake.com/ -[4]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/02/ikey_doherty_serpent_interview.png?ssl=1 -[5]: https://en.wikipedia.org/wiki/Amstrad_CPC -[6]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/02/lipsy_snake_screenshot.png?ssl=1 -[7]: https://www.naughtydog.com/ -[8]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/02/lipsy_snake.png?ssl=1 -[9]: https://github.com/lispysnake/serpent -[10]: https://dlang.org/ -[11]: https://golang.org/ -[12]: https://www.rust-lang.org/ -[13]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/02/last_peacekeeper_game.png?ssl=1 -[14]: https://lispysnake.com/the-game-raiser/ -[15]: https://github.com/sponsors/ikeycode -[16]: https://lispysnake.com/the-game-raiser -[17]: https://reddit.com/r/linuxusersgroup diff --git a/sources/talk/20200302 8 reasons to consider hyperconverged infrastructure for your data center.md b/sources/talk/20200302 8 reasons to consider hyperconverged infrastructure for your data center.md deleted file mode 100644 index 10b1e0575d..0000000000 --- a/sources/talk/20200302 8 reasons to consider hyperconverged infrastructure for your data center.md +++ /dev/null @@ -1,113 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (8 reasons to consider hyperconverged infrastructure for your data center) -[#]: via: (https://www.networkworld.com/article/3530072/eight-reasons-to-consider-hyperconverged-infrastructure-for-your-data-center.html) -[#]: author: (Andy Patrizio https://www.networkworld.com/author/Andy-Patrizio/) - -8 reasons to consider hyperconverged infrastructure for your data center -====== - -Thinkstock - -Demand for on-premises data center equipment is shrinking as organizations move workloads to the cloud. But on-prem is far from dead, and one segment that’s thriving is hyperconverged infrastructure ([HCI][1]). - -HCI is a form of scale-out, software-integrated infrastructure that applies a modular approach to compute, network and storage capacity. Rather than silos with specialized hardware, HCI leverages distributed, horizontal blocks of commodity hardware and delivers a single-pane dashboard for reporting and management. Form factors vary: Enterprises can choose to deploy hardware-agnostic [hyperconvergence software][2] from vendors such as Nutanix and VMware, or an integrated HCI appliance from vendors such as HP Enterprise, Dell, Cisco, and Lenovo. - -**Learn more about enterprise infrastructure trends** - - * [Making the right hyperconvergence choice: HCI hardware or software?][3] - * [10 of the world's fastest supercomputers][4] - * [NVMe over Fabrics creates data-center storage disruption][5] - * [For enterprise storage, persistent memory is here to stay][6] - - - -The market is growing fast. By 2023, Gartner projects 70% of enterprises will be running some form of hyperconverged infrastructure, up from less than 30% in 2019. And as HCI grows in popularity, cloud providers such as Amazon, Google and Microsoft are providing connections to on-prem HCI products for hybrid deployment and management. - -So why is it so popular? Here are some of the top reasons. - -### 1) Simplified design - -A traditional data center design is comprised of separate storage silos with individual tiers of servers and specialized networking spanning the compute and storage silos. This worked in the pre-cloud era, but it’s too rigid for the cloud era. “It’s untenable for IT teams to take weeks or months to provision new infrastructure so the dev team can produce new apps and get to market quickly,” says Greg Smith, vice president of product marketing at Nutanix. - -“HCI radically simplifies data center architectures and operations, reducing the time and expense of managing data and delivering apps,” he says. - -### 2) Cloud integration - -HCI software, such as from Nutanix or VMware, is deployed the same way in both a customer’s data center and cloud instances; it runs on bare metal instances in the cloud exactly the same as it does in a data center. HCI “is the best foundation for companies that want to build a hybrid cloud. They can deploy apps in their data center and meld it with a public cloud,” Smith says. - -[][7] - -“Because it’s the same on both ends, I can have one team manage an end-to-end hybrid cloud and with confidence that whatever apps run in my private cloud will also run in that public cloud environment,” he adds. - -### 3) Ability to start small, grow large - -“HCI allows you to consolidate compute, network, and storage into one box, and grow this solution quickly and easily without a lot of downtime,” says Tom Lockhart, IT systems manager with Hastings Prince Edward Public Health in Bellville, Ontario, Canada. - -In a legacy approach, multiple pieces of hardware – a server, Fiber Channel switch, host-based adapters, and a hypervisor – have to be installed and configured separately. With hyperconvergence, everything is software-defined. HCI uses the storage in the server, and the software almost entirely auto-configures and detects the hardware, setting up the connections between compute, storage, and networking. - -“Once we get in on a workload, [customers] typically have a pretty good experience. A few months later, they try another workload, then another, and they start to extend it out of their data center to remote sites,” says Chad Dunn, vice president of product management for HCI at Dell. - -“They can start small and grow incrementally larger but also have a consistent operating model experience, whether they have 1,000 nodes or three nodes per site across 1,000 sites, whether they have 40 terabytes of data or 40 petabytes. They have consistent software updates where they don’t have to retrain their people because it’s the same toolset,” Dunn added. - -### 4) Reduced footprint - -By starting small, customers find they can reduce their hardware stack to just what they need, rather than overprovision excessive capacity. Moving away from the siloed approach also allows users to eliminate certain hardware. - -Josh Goodall, automation engineer with steel fabricator USS-POSCO Industries, says his firm deployed HCI primarily for its ability to do stretched clusters, where the hardware cluster is in two physical locations but linked together. This is primarily for use as a backup, so if one site went down, the other can take over the workload. In the process, though, USS-POSCO got rid of a lot of expensive hardware and software. “We eliminated several CPU [software] licenses, we eliminated the SAN from other site, we didn’t need SRM [site recovery management] software, and we didn’t need Commvault licensing. We saved between $25,000 and $30,000 on annual license renewals,” Goodall says. - -### 5) No special skills needed - -To run a traditional three-tiered environment, companies need specialists in compute, storage, and networking. With HCI, a company can manage its environment with general technology consultants and staff rather than the more expensive specialists. - -“HCI has empowered the storage generalist,” Smith says. “You don’t have to hire a storage expert, a network expert. Everyone has to have infrastructure, but they made the actual maintenance of infrastructure a lot easier than under a typical scenario, where a deep level of expertise is needed to manage under those three skill sets.” - -Lockhart of Hastings Prince Edward Public Health says adding new compute/storage/networking is also much faster when compared to traditional infrastructure. “An upgrade to our server cluster was 20 minutes with no down time, versus hours of downtime with an interruption in service using the traditional method,” he says. - -“Instead of concentrating on infrastructure, you can expand the amount of time and resources you spend on workloads, which adds value to your business. When you don’t have to worry about infrastructure, you can spend more time on things that add value to your clients,” Lockhart adds. - -### 6) Faster disaster recovery - -Key elements of hyperconvergence products are their backup, recovery, data protection, and data deduplication capabilities, plus analytics to examine it all. Disaster recovery components are managed from a single dashboard, and HCI monitors not only the on-premises storage but also cloud storage resources. With deduplication, compression rates as high as 55:1, and backups can be done in minutes. - -USS-POSCO Industries is an HP Enterprise shop and uses HPE’s SimpliVity HCI software, which includes dedupe, backup, and recovery. Goodall says he gets about 12-15:1 compression on mixed workloads, and that has eliminated the need for third-party backup software. - -More importantly, recovery timeframes have dropped. “The best recent example is a Windows update messed up a manufacturing line, and the error wasn’t realized for a few weeks. In about 30 minutes, I rolled through four weeks of backups, updated the system, rebooted and tested a 350GB system. Restoring just one backup would have been a multi-hour process,” Goodall says. - -### 7) Hyperconvergence analytics - -HCI products come with a considerable amount of analytics software to monitor workloads and find resource constraints. The monitoring software is consolidated into a single dashboard view of system performance, including negatively impacted performance. - -Hastings recently had a problem with a Windows 7 migration, but the HCI model made it easy to get performance info. “It showed that workloads, depending on time of day, were running out of memory, and there was excessive CPU queuing and paging,” Lockhart says. “We had the entire [issue] written up in an hour. It was easy to determine where problems lie. It can take a lot longer without that single-pane-of-glass view.” - -### 8) Less time managing network, storage resources - -Goodall says he used to spend up to 50% of his time dealing with storage issues and backup matrixes. Now he spends maybe 20% of his time dealing with it and most of his time tackling and addressing legacy systems. And his apps are better performing under HCI. “We’ve had no issues with our SQL databases; if anything, we’ve seen huge performance gain due to the move to full SSDs [instead of hard disks] and the data dedupe, reducing reads and writes in the environment.” - -Join the Network World communities on [Facebook][8] and [LinkedIn][9] to comment on topics that are top of mind. - --------------------------------------------------------------------------------- - -via: https://www.networkworld.com/article/3530072/eight-reasons-to-consider-hyperconverged-infrastructure-for-your-data-center.html - -作者:[Andy Patrizio][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://www.networkworld.com/author/Andy-Patrizio/ -[b]: https://github.com/lujun9972 -[1]: https://www.networkworld.com/article/3207567/what-is-hyperconvergence.html?nsdr=true -[2]: https://www.networkworld.com/article/3318683/making-the-right-hyperconvergence-choice-hci-hardware-or-software.html -[3]: https://www.networkworld.com/article/3318683/making-the-right-hyperconvergence-choice-hci-hardware-or-software -[4]: https://www.networkworld.com/article/3236875/embargo-10-of-the-worlds-fastest-supercomputers.html#slide1 -[5]: https://www.networkworld.com/article/3394296/nvme-over-fabrics-creates-data-center-storage-disruption.html -[6]: https://www.networkworld.com/article/3398988/for-enterprise-storage-persistent-memory-is-here-to-stay.html -[7]: https://www.networkworld.com/article/3440100/take-the-intelligent-route-with-consumption-based-storage.html?utm_source=IDG&utm_medium=promotions&utm_campaign=HPE21620&utm_content=sidebar ( Take the Intelligent Route with Consumption-Based Storage) -[8]: https://www.facebook.com/NetworkWorld/ -[9]: https://www.linkedin.com/company/network-world diff --git a/sources/talk/20200303 How to assess your organization-s technological maturity.md b/sources/talk/20200303 How to assess your organization-s technological maturity.md deleted file mode 100644 index 75c3cda6ff..0000000000 --- a/sources/talk/20200303 How to assess your organization-s technological maturity.md +++ /dev/null @@ -1,173 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (How to assess your organization's technological maturity) -[#]: via: (https://opensource.com/open-organization/20/3/communication-technology-worksheet) -[#]: author: (Ron McFarland https://opensource.com/users/ron-mcfarland) - -How to assess your organization's technological maturity -====== -Implementing new communications technologies can make your organization -more open. Use this worksheet to determine whether your organization—and -its people—are prepared. -![Someone wearing a hardhat and carrying code ][1] - -New communication technologies can promote and improve [open organizational principles and practices][2]—both within a company and between customers and strategic partners, leading to greater sales and business opportunities. - -Previously, I've discussed how companies adopting new communication technologies tend to [fall into four basic categories][3] of investment and utilization. In this article, I'll demonstrate how someone might assess an organization's level of preparedness for technological innovations and the cultural changes it requires. - -### Becoming a superstar - -For the purpose of this exercise, imagine you're a salesperson working for a company that provides communication or information technology solutions to companies that need advanced information systems and would benefit by becoming "[communication superstars][3]." You'll likely want to impress upon your customers the benefits of becoming this type of user—benefits such as: - - * Enhanced customer interaction: When _our_ customers' salespeople visit _their_ customers, they'll need to make the best impression they can to build some level of trust. Therefore—before offering any product—a salesperson must get a customer talking about his situation in order to discover his particular needs, concerns, and opportunities for growth. When the customer asks the salesperson questions about what he can do to address these issues, imagine our customer's salespeople being able to answer him in seconds with detailed information, instead of making the customer wait for hours, day, or even weeks for the answers. Such technologies can increase one's capacity to make proposals, lead to faster and wiser purchasing decisions, and maximize salesperson-customer interactions—all extremely important benefits. - * Better operations: In manufacturing especially, production bottlenecks can be a drain on in-process inventory costs, and alleviating those bottlenecks is critical. Knowing _exactly_ the situation (in-process inventory levels and processing speed, for example) of _every_ stage of a production line in real time can greatly [improve productivity][4]. - * Development of new business strategies: With new communication technology expertise, a company could open up new markets and opportunities that would have historically been out of its reach. - - - -### **Let's do some research** - -Armed with knowledge of those benefits, again imagine you're a salesperson at an enterprise communication or information technology company. You meet a potential customer at an exhibition or business summit, and she describes the following situation to you: - -> "I'm the Operations Manager of a small, local transportation company that makes deliveries within and between several of the surrounding cities. We have a fleet of 30 trucks, all of various sizes and makes. I know the company's information system must to be improved; much of our communication is done through email attachments, texting, and mobile phone calls. We have no central information operating system." - -A large, public, national trucking company has set up in her area. She's studied this competitor and read several of its news releases and annual reports. She's learned the company has a centralized communications system, and that all its trucks have tracking technologies that monitor the location of every truck in operation. Trucks also feature sensors that monitor many vehicle operations, including average and specific engine RPM per route by vehicle and driver, and miles travelled in particular conditions (to determine fuel economy and maintenance schedules). An electronic parts delivery system connects this company's service operations with a network of dealers to reduce the time service technicians must wait for parts. - -This is what the small local trucking company must compete against. So its operations manager asks you, the IT company salesperson, what you can do to help. - -You decide that your first step is to conduct a survey to learn more about both the company's current communication technology system and the personnel's attitude toward this system in order to see what _could_ and _should_ be done to improve the situation. While there, you want to learn this trucking company's IT status _before_ making any recommendations. - -I've created a worksheet you might use to facilitate this conversation. - -### Taking the temperature - -The first part of the worksheet can help you develop a baseline assessment of an organization's readiness for technological change. - -#### Part 1: Baseline maturity relative to competitors - -Generally, if the customer scores between 10 and 42, then that customer needs more assistance adopting new communication technology, but this varies by industry. If the score is between 43 and 70, then (when compared to competitors the customer is likely already mature in its use of communication technologies. - -#### Part 2: Leaders' relationship to communication technologies - -Next, you need to assess the company leadership's relationship to technologies, associated processes, and cultural changes. So let's make those calculations in Part 2 of the worksheet. - -Here again, depending on the competitive environment, if the score is between 10 and 42, then the company is generally _not_ completely utilizing the communication technology it has. If the score is between 43 and 70, then generally the company puts the communication technology it has to good, creative use. - -Organizational leaders must lead the conversation about using more advanced communication systems in the organization. Therefore management must establish training programs to teach everyone in the organization the skills required to _use_ that technology (a step often forgotten or poorly implemented). - -#### Part 3: Awareness of challenges and opportunities - -We now need to help the organization think more strategically about its use of communication technologies to implement open processes and open culture. We'll do this with Part 3 of the worksheet. - -If an organization scores higher than 15, the company understands the communication technology landscape fairly well. If the score is between 9 and 15, the organization needs to isolate its weakest areas and remedy them. A score of less than 9 indicates that the organization should consider conducting new awareness exercises and/or communication technology discovery programs. - -#### Part 4: Technological mastery relative to competitors - -Next, we need to better understand the trucking company's current strategic assets and its level of technological mastery relative to competitors. We'll do that with Part 4 of the worksheet. - -An organization that scores above 16 in this section likely knows where it stands and what its innovation trajectory is in comparison to competitors. A score of 7 to 16 means the organization needs to build alignment around a viable renewal path. A score of less than 7 might mean the organization should conduct a communication technology maturity assessment and update its best practices. - -#### Part 5: Ability to articulate technological vision - -Now let's explore how well the organization's senior leaders can articulate a vision for the role communication technology will play in the company's future. That's Part 5 of the worksheet. - -If the organization scores over 24, then its members likely believe its executives are aligned on a technological vision (and are considering competitors). A score of 14 to 24 should prompt us to isolate the root causes of the concerns and work with the team to remedy them. Anything less than 14 should spur a structured senior executive alignment initiative. - -Questions like these can clarify the extent to which employees must be involved in communication technology investment decision-making and utilization. Front-line members typically know what's necessary, what's available, and what the organization should introduce. - -### From vision to action - -I've seen first-hand that in situations like these, purchasing technologies is only half the problem. Getting people to buy into the system and use it to full capacity are far bigger challenges. - -In this section, we'll assess the organization's ability to translate technological vision into action. - -#### Part 6: Ability to translate vision to action - -First, let's see how the company is currently converting its vision into an action plan relative to competitors. We'll return to the worksheet, specifically Part 6. - -A company scoring more than 17 points likely has a robust plan and evaluation system in place, and is focused on engaging people in executing technological adoption efforts relative to competitors. Organizations scoring 7 to 17 should review the action plan and milestone checklist weekly for content and alignment. Those scoring less than 7 should conduct a full review of its milestone checklist and action plan processes. - -#### Part 7: Supervision strategies - -Few plans succeed without proper supervision, so you'll want to assess the organization's plans to oversee change management efforts. We'll use the trusty worksheet—this time, Part 7. - -Did the company score something greater than 15? Then its supervision model is in good shape. Maybe 8 to 15? It should check its governance principles and/or program leadership. Less than 8? Time to rework (or design for the first time) its supervision principles. - -#### Part 8: Funding strategy for implementation - -Of course, organizational initiatives like these require funding. So you'll want to assess the organization's financial commitment to technological change. Once again, let's use our worksheet (Part 8 this time). - -Scoring more than 16 points means the company's funding for new communication technologies is strong. Scoring 8 to 16 means the company should work to ensure that the company portfolio, funding, and business strategy are better aligned. Anything less than 8 means company needs to rework its investment and funding strategy for new technologies. - -#### Part 9: Clarity and promotion of vision - -Organizational leaders should constantly be clarifying and advocating plans to adopt new technologies. How are they doing? Let's review Part 9 of our worksheet. - -If the company scores over 17, then it's likely doing a good job of marketing its ambitions. If it scores somewhere between 7 and 17, it should isolate dimensions of its messaging that need refinement and work with the team to remedy them. If it scores less than 7, it should consider developing a specific program to convey the company's ambition more broadly. - -#### Part 10: Ability to build and sustain engagement - -Changes to technological systems and processes don't happen automatically. People need to invest in them, and leaders need to sustain their engagement in the organizational changes. Not everyone will buy in (as I've [written previously][5]). We can assess how well the organization is doing this with Part 10 of the worksheet. - -A score over 23 indicates that the company is doing a good job building momentum while introducing communication technologies. A score of 12 to 23 means that organization might need to isolate some part of the process that's not proceeding satisfactorily and remedy that component. Less than 12? The company needs to design and conduct a full engagement program. - -### Organizational considerations - -This final section assesses specific _organizational_ capacities—that is, the organization's culture, its structure, and its processes. Becoming more open by adopting new communication technologies is only possible if the organization itself is flexible and willing to change. - -#### Part 11: Organizational culture - -Is the organizational environment amenable to the kinds of changes necessary for effectively adopting new communication activities? We'll assess that in Part 11 of our worksheet. - -An organization scoring more than 16 points is already shifting its organizational behaviors and culture ahead of competitors. One scoring between 7 and 16 points should investigate root causes of concerns about cultural changes and work with the team to remedy problems. An organization scoring less than 7 should begin working to shift its culture around communication practices and expectations. - -#### Part 12: Organizational structure - -Does the organization's current structure allow it to sustain communication technology innovations? Use Part 12 of the worksheet to gather an initial impression. - -Scoring over 16 means the company possesses the basic structural capabilities necessary for sustained, steady, technical changes. Scoring between 8 and 16 means the company has only begun implementing projects aimed at developing necessary structural capabilities, but more effort is needed. And a score of less than 8 indicates that the company needs to consider specific programs for improving basic structural capabilities. - -#### Part 13: Reward and incentive structures - -Are the organization's reward and incentive structures aligned with the organization's goals for introducing and adopting new communication technologies? Let's look at the worksheet one last time. - -A score over 14 indicates that the company's current reward structures are aligned with its communication technology objectives. A score between 6 and 14 tells us that the organization should build stronger consensus around a viable reward strategy aligned to communication technology renewal. And a score of less than 6 should prompt leadership to implement specific reward structures that accomplish its communication technology adoption goals. - -### Post-survey debrief - -After collecting those data, you're now in a position to ask how your information technology company can help your potential customer in four areas: - - 1. Data gathering and company strategy analytics - 2. Social media, internet utilization, and interaction internally - 3. Telecommunication utilization within company (to avoid excess and unnecessary traveling for meetings, etc.) - 4. Automation technology utilization within the company - - - -You're also able to inquire within your company (among solution architects, for example) who we potentially should partner with if need be in order to achieve this transportation company's goals in these four areas." - -In these kinds of strategic partnerships, open organization principles—especially transparency, inclusivity, collaboration, and community—come alive. One person cannot do this kind of work alone. - -I've seen first-hand that in situations like these, purchasing technologies is only _half the problem._ Getting people to _buy into the system_ and _use it to full capacity_ are far bigger challenges. These challenges are cultural, not technological. Being a "communication superstar" means being great in both those areas—both the communication technology itself, as well as the culture and process expertise necesasry for actual utilization. - --------------------------------------------------------------------------------- - -via: https://opensource.com/open-organization/20/3/communication-technology-worksheet - -作者:[Ron McFarland][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/ron-mcfarland -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/build_structure_tech_program_code_construction.png?itok=nVsiLuag (Someone wearing a hardhat and carrying code ) -[2]: https://opensource.com/open-organization/resources/open-org-definition -[3]: https://opensource.com/open-organization/20/1/communication-technology-superstars -[4]: https://www.slideshare.net/RonMcFarland1/improving-processes-65115172?qid=b0a0fde3-62c6-4538-88c8-1bfd70485cee&v=&b=&from_search=5 -[5]: https://opensource.com/open-organization/17/1/escape-the-cave diff --git a/sources/talk/20200303 Key Takeaways from Cisco-s Annual Internet Report.md b/sources/talk/20200303 Key Takeaways from Cisco-s Annual Internet Report.md deleted file mode 100644 index d450597913..0000000000 --- a/sources/talk/20200303 Key Takeaways from Cisco-s Annual Internet Report.md +++ /dev/null @@ -1,78 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Key Takeaways from Cisco’s Annual Internet Report) -[#]: via: (https://www.networkworld.com/article/3529989/key-takeaways-from-cisco-s-annual-internet-report.html) -[#]: author: (Zeus Kerravala https://www.networkworld.com/author/Zeus-Kerravala/) - -Key Takeaways from Cisco’s Annual Internet Report -====== -Businesses need to be ready for the massive wave of devices and bandwidth that are coming in the next vide years -Natalya Burova / Getty Images - -By 2023, two-thirds of the world’s population will have Internet access—that’s 5.3 billion total Internet users, compared to 3.9 billion in 2018. The number of devices and connections will also skyrocket. There will be 3.6 networked devices per capita by 2023, whereas in 2018, there were 2.4 networked devices per capita. - -These findings come from Cisco’s _[Annual Internet Report (2018 – 2023) ][1]_(AIR) - previously known as Visual Network Index (VNI), which assesses the digital transformation across different business segments and their adoption of networking technologies, including fixed broadband, Wi-Fi, and mobile (3G, 4G, 5G).  - -[[Get regularly scheduled insights by signing up for Network World newsletters.]][2] - -The report described an increased demand for new or enhanced applications that boost workforce productivity or improve customer experiences. In today’s mobile world, users expect their devices (and networks) to deliver on all fronts: quality, ease of use, and seamless connectivity.  - -[Cisco][3] - -The report can be useful as companies plan out their network strategies. One of the aspects of the VNI that Cisco carried over to AIR is an [online tool][4] that lets people slice and dice the information by country, device or other factors. They also included an [“Internet readiness” tool ][5]that explores how prepared different regions are for the coming wave of devices and need for bandwidth.  - -**More network automation is needed** - -To meet growing demand for enhanced apps, enterprises need automated network monitoring and optimization, andt that can be achieved with software-defined wide area networking (SD-WAN). Software-driven networks create more flexible infrastructures that can adapt to changing traffic requirements, which becomes necessary as more enterprises move to hybrid clouds, the report says. - -Policy-based automation and Intent-Based Networking (IBN) are just as important when it comes to building agile, portable, and scalable networks. IBN, as the name implies, captures business intent through analytics and machine learning. One trend Cisco observed in its report is how business WAN traffic flow patterns are becoming more software-based and hybrid in nature, creating a need for IBN solutions, the report says. - -[][6] - -**SD-WAN is core to network success** - -SD-WAN is important to the network edge, which brings computing, storage, and networking resources closer to users and devices. Cisco found many use cases driving the need for greater edge-computing capabilities. One of them is finding ways to control data from the billions of Internet of Things (IoT) endpoints being added to the network edge. - -Out of the 29.3 billion networked devices in use by 2023, about half will support various IoT applications, per Cisco’s report. As for machine-to-machine (M2M) communication, there will be 14.7 billion connections by 2023. Consumers will hold the biggest share (74%) of total devices and connections, with businesses claiming approximately 26%. However, the consumer share will grow at a slower rate than business. - -How will enterprises manage to secure all networked devices and data? Cisco recommends creating a security policy that strikes a balance between data protection and ease of use. In other words, networks will have to be intelligent enough to grant access to the right users without putting them through a difficult authentication process. - -**Network managers still struggle to lower operational costs** - -Network managers continue to struggle with rising operational costs, as the explosion of devices and data outpaces IT resources. Cisco found nearly 95% of network changes are still performed manually, resulting in operational costs that outweigh network costs. That’s where IT automation can help, enabled by SDN, intelligent network-edge enhancements, and unified domain controls. - -In addition to exploring business-specific networking needs, Cisco outlined some trends in consumer and small-to-medium business (SMB) markets. Here are the key takeaways: - - * **Next-generation applications**—built with artificial intelligence (AI) and machine learning—will create complex requirements and new business models. Mobile applications, specifically, will drive future consumer, SMB, and enterprise needs, with 299.1 billion mobile apps downloaded worldwide by 2023. - * **Mixed devices and connections** are enabling myriad M2M apps. Connected-home, video-surveillance, connected appliances, and tracking apps will make up 48% of M2M connections by 2023. Connected-car apps will be the fastest-growing category, with connected cities coming in second. - * **Accelerating broadband speeds** will affect traffic growth and use of high-bandwidth content and applications. Average broadband speeds will more than double globally from 45.9 Mbps (in 2018) to 110.4 Mbps (in 2023). Fiber-to-the-home (FTTH), high-speed DSL, and cable broadband adoption will contribute to the growth. - * **Wi-Fi will gain momentum** as devices and IoT connections increase. By 2023, the number of public Wi-Fi hotspots will grow to 628 million, up from 169 million in 2018. Wi-Fi 6 promises to boost speeds by up to 30%, compared to the current generation. More importantly, next-gen Wi-Fi will significantly improve real-time communications and high-definition video, impacting both consumer and business sectors. - - - -Join the Network World communities on [Facebook][7] and [LinkedIn][8] to comment on topics that are top of mind. - --------------------------------------------------------------------------------- - -via: https://www.networkworld.com/article/3529989/key-takeaways-from-cisco-s-annual-internet-report.html - -作者:[Zeus Kerravala][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://www.networkworld.com/author/Zeus-Kerravala/ -[b]: https://github.com/lujun9972 -[1]: http://www.cisco.com/go/ciscoair -[2]: https://www.networkworld.com/newsletters/signup.html -[3]: https://www.cisco.com/c/en/us/solutions/collateral/executive-perspectives/annual-internet-report/white-paper-c11-741490.html -[4]: https://www.cisco.com/c/en/us/solutions/executive-perspectives/annual-internet-report/air-highlights.html -[5]: https://www.cisco.com/c/en/us/solutions/service-provider/cloud-readiness-tool/index.html -[6]: https://www.networkworld.com/article/3440100/take-the-intelligent-route-with-consumption-based-storage.html?utm_source=IDG&utm_medium=promotions&utm_campaign=HPE21620&utm_content=sidebar ( Take the Intelligent Route with Consumption-Based Storage) -[7]: https://www.facebook.com/NetworkWorld/ -[8]: https://www.linkedin.com/company/network-world diff --git a/sources/talk/20200303 Most-used libraries, open source adoption, and more industry trends.md b/sources/talk/20200303 Most-used libraries, open source adoption, and more industry trends.md deleted file mode 100644 index 769f4f550e..0000000000 --- a/sources/talk/20200303 Most-used libraries, open source adoption, and more industry trends.md +++ /dev/null @@ -1,61 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Most-used libraries, open source adoption, and more industry trends) -[#]: via: (https://opensource.com/article/20/3/libraries-5G-more-industry-trends) -[#]: author: (Tim Hildred https://opensource.com/users/thildred) - -Most-used libraries, open source adoption, and more industry trends -====== -A weekly look at open source community and industry trends. -![Person standing in front of a giant computer screen with numbers, data][1] - -As part of my role as a senior product marketing manager at an enterprise software company with an open source development model, I publish a regular update about open source community, market, and industry trends for product marketers, managers, and other influencers. Here are five of my and their favorite articles from that update. - -## [Most-used libraries revealed – plus 10 things developers should be doing to keep their code secure][2] - -> “The report begins to give us an inventory of the most important shared software and potential vulnerabilities and is the first step to understand more about these projects so that we can create tools and standards that results in trust and transparency in software," explained Jim Zemlin, executive director at the Linux Foundation, in a statement. - -**The impact**: Importantly, there is also a great list of packages for backdoors here. - -## [Survey: Open source adoption, quality gains][3] - -> Overall, the survey finds there has been [a marked shift away from proprietary software][4]. Only 42% said that more than half of the software they use today is proprietary, down from 55% a year ago. Two years from now only 32% said they expect proprietary software to account for more than half their portfolio. On average, respondents said 36% of their organization’s software is open source, which in two years is expected to increase to 44% in two years. A total of 77% said they would increase usage of open source software over the next 12 months. - -**The impact**: There is a clear virtuous cycle of companies getting more comfortable with open source and more open source software being created. If there isn't already, there will be a rule 34 about open source software. - -## [5G must go cloud-native from edge to core][5] - -> A containerised core will be the heart of cloud-native 5G networks. Managing and scaling networking apps in containers using a modular microservices approach will help service providers to dynamically orchestrate and grow service capacity across a distributed architecture. - -**The impact**: When you're building something complicated and reliable, you really can't look past starting with open source software. Unless you want to be in a foot race against "a Kawasaki" (that's a motorbike, right?). - -## [High-performance object storage, Kubernetes, + why you can't containerize a storage appliance][6] - -> True multi-tenancy isn’t possible unless the storage system is extremely lightweight and able to be packaged with the application stack. If the storage system takes too many resources or contains too many APIs, it won’t be possible to pack many tenants on the same infrastructure. - -**The impact**: The title of this post is a challenge to someone much more skilled and knowledgable than I. - -_I hope you enjoyed this list and come back next week for more open source community, market, and industry trends._ - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/3/libraries-5G-more-industry-trends - -作者:[Tim Hildred][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/thildred -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/data_metrics_analytics_desktop_laptop.png?itok=9QXd7AUr (Person standing in front of a giant computer screen with numbers, data) -[2]: https://www.theregister.co.uk/2020/02/20/linux_foundation_report/ -[3]: https://devops.com/surevey-sees-open-source-adoption-quality-gains/ -[4]: https://devops.com/devops-deeper-dive-devops-accelerates-open-source-innovation-pace/ -[5]: https://www.5gradar.com/features/5g-must-go-cloud-native-from-edge-to-core -[6]: https://blog.min.io/high-performance-object-storage-with-kubernetes/ diff --git a/sources/talk/20200304 Seawater, humidity inspire new ways to generate power.md b/sources/talk/20200304 Seawater, humidity inspire new ways to generate power.md deleted file mode 100644 index 7e2dc5927f..0000000000 --- a/sources/talk/20200304 Seawater, humidity inspire new ways to generate power.md +++ /dev/null @@ -1,79 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Seawater, humidity inspire new ways to generate power) -[#]: via: (https://www.networkworld.com/article/3529893/seawater-humidity-inspire-new-ways-to-generate-power.html) -[#]: author: (Patrick Nelson https://www.networkworld.com/author/Patrick-Nelson/) - -Seawater, humidity inspire new ways to generate power -====== -Researchers around the globe are working on new ways to generate huge amounts of power that will be needed for the shift to a data-driven society. -Getty Imags - -The possiblity of a future power-availability crunch – spurred in part by a global increase in data usage – is driving researchers to get creative with a slew of new and modified ways to generate and store energy. - -Ongoing projects include the use of seawater for batteries; grabbing ambient humidity; massive water storage systems for hydropower; and solar panels that work at night. Here are some details: - -### Batteries based on seawater - -Seawater will provide "super-batteries," says the University of Southern Denmark. Researchers there have been studying how to use sodium, which is abundant in seawater, as an alternative to lithium in batteries. - -[[Get regularly scheduled insights by signing up for Network World newsletters.]][1] - -"Sodium is a very readily available resource," the school says in a [press release][2], and it can be easily extracted from seawater. Lithium, on the other hand, is a limited resource that's mined only in a few places in the world, says research leader Dorthe Bomholdt Ravnsbæk of the department of physics, chemistry and pharmacy at the university. Batteries based on seawater would also alleviate the need for cobalt, which is used in lithium cells. The team in Denmark (working with Massachusetts Institute of Technology) believes it has come up with a new electrode material, based on manganese, that will make the seawater battery ultimately viable. - -### Using ambient moisture to generate power - -Humidity captured with bio-electronics could end up being a viable power source for sensors, say some scientists. - -"Harvesting energy from the environment offers the promise of clean power for self-sustained systems," notes University of Massachusetts researchers [in an article published in Nature][3]. However, known technologies often have restrictive environmental requirements – solar panels that must be mounted outside, for example – that limit their energy-producing potential. - -Moisture harvesting with thin-film, protein nanowires doesn't have restrictive environmental requirements. Sustained voltages of about half a volt can be obtained from moisture present in normal, ambient air. "Connecting several devices linearly scales up the voltage and current to power electronics," the Amherst group claims. "Our results demonstrate the feasibility of a continuous energy-harvesting strategy that is less restricted by location or environmental conditions than other sustainable approaches." - -[][4] - -### Seasonally pumped hydropower storage  - -On a larger scale, inland water storage could solve renewable power issues, say scientists at the International Institute for Applied Systems Analysis. - -One big problem collecting power from the environment, as opposed to using fossil fuels, is where to store the on-the-fly electricity being generated. The Austrian organization believes that hydropower systems should be used to contain renewable energy. It's cheap, for starters. In addition, seasonal pumped hydropower storage (SPHS) is better than wind or solar, the group claims, because it not only generates the power in real time as it’s needed, but also isn't affected by variations— a windy day isn't required, for example. - -SPHS operates by pumping water into dammed, river-adjacent reservoirs when water flow is high but power demand is low. Water is then allowed to flow out of the reservoir, through turbines—similar to hydroelectric—when energy demand increases. Electricity is thus created. The group, in a [press release][5] related to a study just released, says the technique is highly economical, even including required land purchases, excavation and tunneling. - -### Nighttime, anti-solar cells - -Contrary to popular belief, photovoltaic solar panels don't actually need full sun to function. Cloud cover allows some to work just fine, just not as well. Nighttime photovoltaic, however, is something more radical: - -The earth should be used as a heat source, and the night sky a heat sink, say Jeremy Munday and Tristan Deppe of the department of electrical and computer engineering at University of California, Davis. They shared their idea for nighttime photovoltaic cells in an [abstract of a paper][6] published by American Chemical Society's ACS Photonics. - -What they are suggesting is using thermoradiative photovoltaics, where deep space radiative cooling ([which I’ve written about before][7]) is combined with photovoltaics. Current is created as infrared light – or heat, in other words – is radiated into extremely cold, deep space. - -"Similar to the way a normal solar cell works, but in reverse," Munday says of their anti-solar panel concept, quoted in a [UC Davis news article][8].  - -Join the Network World communities on [Facebook][9] and [LinkedIn][10] to comment on topics that are top of mind. - --------------------------------------------------------------------------------- - -via: https://www.networkworld.com/article/3529893/seawater-humidity-inspire-new-ways-to-generate-power.html - -作者:[Patrick Nelson][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://www.networkworld.com/author/Patrick-Nelson/ -[b]: https://github.com/lujun9972 -[1]: https://www.networkworld.com/newsletters/signup.html -[2]: https://www.sdu.dk/en/nyheder/Forskningsnyheder/skal_fremtidens_superbatterier_laves_af_havvand -[3]: https://www.nature.com/articles/s41586-020-2010-9 -[4]: https://www.networkworld.com/article/3440100/take-the-intelligent-route-with-consumption-based-storage.html?utm_source=IDG&utm_medium=promotions&utm_campaign=HPE21620&utm_content=sidebar ( Take the Intelligent Route with Consumption-Based Storage) -[5]: https://iiasa.ac.at/web/home/about/news/200219-seasonal-pumped-storage.html -[6]: https://pubs.acs.org/toc/apchd5/7/1 -[7]: https://www.networkworld.com/article/3222850/space-radiated-cooling-cuts-power-use-21.html -[8]: https://www.ucdavis.edu/news/anti-solar-cells-photovoltaic-cell-works-night -[9]: https://www.facebook.com/NetworkWorld/ -[10]: https://www.linkedin.com/company/network-world diff --git a/sources/talk/20200305 Chinese auto giant Geely plans a private satellite network to support autonomous vehicles.md b/sources/talk/20200305 Chinese auto giant Geely plans a private satellite network to support autonomous vehicles.md deleted file mode 100644 index 8bf990573e..0000000000 --- a/sources/talk/20200305 Chinese auto giant Geely plans a private satellite network to support autonomous vehicles.md +++ /dev/null @@ -1,61 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Chinese auto giant Geely plans a private satellite network to support autonomous vehicles) -[#]: via: (https://www.networkworld.com/article/3530336/chinese-auto-giant-geely-plans-a-private-satellite-network-to-support-autonomous-vehicles.html) -[#]: author: (Patrick Nelson https://www.networkworld.com/author/Patrick-Nelson/) - -Chinese auto giant Geely plans a private satellite network to support autonomous vehicles -====== -Geely is developing a satellite network to provide high-bandwidth wireless needed by on-board applications in self-driving vehicles. -Olivier Le Moal / Getty Images - -What does a large automaker that’s morphing into a mobile-technology company and heavily investing in autonomous vehicles need to add to its ecosystem? Probably connectivity, and that’s likely why Chinese car giant Geely says it will be building its own satellite data network. - -A need for “highly accurate, autonomous driving solutions,” is part of what’s driving the strategy, the company says in a [press release][1]. Geely – the largest car maker in China and whose assets include Volvo and a stake in Lotus – has begun building a test facility in Taizhou City where it will develop satellite models, the company says. - -[[Get regularly scheduled insights by signing up for Network World newsletters.]][2] - -“The creation of a truly smart, three-dimensional mobility ecosystem,” as the company describes its Geespace project, will include precise navigation, cloud computing and high-speed Internet functions. Geely is investing $326 million in the project [according to Reuters][3], citing a statement from the company. - -Over-the-air updating of vehicle software is a principal reason data networks will become prevalent in automobile technology. Historically, car companies haven’t worried much about the speedy updating of end-user’s systems, in part because they’ve liked getting customers back into the dealership to upsell service options and pitch new cars. A leisurely software patch while the customer hangs around drinking warm coffee and watching daytime soaps suits that purpose. However, autonomous cars are a different story: The safety of self-driving cars can’t tolerate software vulnerabilities. - -Control over vehicle positioning also comes into play. Knowing where the car is and where obstacles are is more important than in traditional vehicles. Lane-change and accident avoidance, for example, are autonomous-vehicle features that require high levels of accuracy. - -“The Geespace low-orbit satellite network will offer much higher centimeter-accurate precision,” Geely says, comparing its proposed constellation with the U.S. government-owned Global Positioning System. - -Data processing, artificial intelligence and infotainment onboard the vehicles all need fat networks, too. Former Intel CEO Brian Krzanich [said at a talk I attended a few years ago][4] that he thought cars would soon create 4,000 GB of data per hour of driving because of the number of sensors, such as cameras, that they’ll be equipped with. - -[][5] - -The Geely private satellite network is the first of its kind for an industrial use and joins [a trend in private wireless networking][6]. Private, terrestrial 5G networks and private LTE networks allow companies to control their own data and uptime, rather than relying on service providers. Mercedes-Benz is reportedly working on a private 5G network for privacy and security. - -“As vehicles become more connected and integrated into the Internet of Things ecosystem, the demand for data has grown exponentially,” Geely says. - -Geely will begin launching the Geespace satellites by the end of 2020. - -Join the Network World communities on [Facebook][7] and [LinkedIn][8] to comment on topics that are top of mind. - --------------------------------------------------------------------------------- - -via: https://www.networkworld.com/article/3530336/chinese-auto-giant-geely-plans-a-private-satellite-network-to-support-autonomous-vehicles.html - -作者:[Patrick Nelson][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://www.networkworld.com/author/Patrick-Nelson/ -[b]: https://github.com/lujun9972 -[1]: http://zgh.com/media-center/news/2020-03-03-1/?lang=en -[2]: https://www.networkworld.com/newsletters/signup.html -[3]: https://www.reuters.com/article/geely-china-satellite-autonomous/chinas-geely-invests-326-mln-to-build-satellites-for-autonomous-cars-idUSL4N2AV45H -[4]: https://www.networkworld.com/article/3147892/one-autonomous-car-will-use-4000-gb-of-dataday.html -[5]: https://www.networkworld.com/article/3440100/take-the-intelligent-route-with-consumption-based-storage.html?utm_source=IDG&utm_medium=promotions&utm_campaign=HPE21620&utm_content=sidebar ( Take the Intelligent Route with Consumption-Based Storage) -[6]: https://www.networkworld.com/article/3319176/private-5g-networks-are-coming.html -[7]: https://www.facebook.com/NetworkWorld/ -[8]: https://www.linkedin.com/company/network-world diff --git a/sources/talk/20200305 Report- Most IoT transactions are not secure.md b/sources/talk/20200305 Report- Most IoT transactions are not secure.md deleted file mode 100644 index 96a2add2d7..0000000000 --- a/sources/talk/20200305 Report- Most IoT transactions are not secure.md +++ /dev/null @@ -1,61 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Report: Most IoT transactions are not secure) -[#]: via: (https://www.networkworld.com/article/3530476/report-most-iot-transactions-are-not-secure.html) -[#]: author: (Andy Patrizio https://www.networkworld.com/author/Andy-Patrizio/) - -Report: Most IoT transactions are not secure -====== -Data gathered by security provider Zscaler shows that not only are most internet-of-things transactions unsecured, they are also unauthorized as IoT creeps in as shadow-IT devices. -Iot - -The majority of [Internet of Things (IoT)][1] transactions don’t use even basic security, and there is a great deal of unauthorized IoT taking place inside the perimeter of enterprise firewalls thanks to shadow IT, a new study finds. - -Security vendor Zscaler analyzed nearly 500 million IoT transactions from more than 2,000 organizations over a two-week period. [The survey][2] found 553 different IoT devices from more than 200 different manufacturers, many of which had their security turned off. - -[[Get regularly scheduled insights by signing up for Network World newsletters.]][3] - -The study was done on Zscaler’s own Internet Access security service. It found the rate of IoT growth to be explosive: When it first started monitoring IoT traffic in May 2019, IoT traffic generated by its enterprise customer base was 56 million IoT transactions per month. By February 2020, that number had soared to 33 million transactions _per day_, or one billion IoT transactions per month, a 1,500% increase. - -Zscaler is a bit generous in what it defines as enterprise IoT devices, from devices such as data-collection terminals, digital signage media players, industrial control devices, medical devices, to decidedly non-business devices like digital home assistants, TV set-top boxes, IP cameras, smart home devices, smart TVs, smart watches and even automotive multimedia systems. - -“What this tells us is that employees inside the office might be checking their nanny cam over the corporate network. Or using their Apple Watch to look at email. Or working from home, connected to the enterprise network, and periodically checking the home security system or accessing media devices,” the company said in its report. - -Which is typical, to be honest, and let (s)he who is without sin cast the first stone in that regard. What’s troubling is that roughly 83% of IoT-based transactions are happening over plaintext channels, while only 17% are using [SSL][4]. The use of plaintext is risky, opening traffic to packet sniffing, eavesdropping, man-in-the-middle attacks and other exploits. - -And there are a lot of exploits. Zscaler said it detects about 14,000 IoT-based malware exploits per month, a seven-fold increase over the previous year. - -“Folks can keep their smart watches, smart closets, and whatever else they think is making them smart. Banning devices is not going to be the answer here. The answer is changing up the narrative on how we think about IoT devices from a security and risk standpoint, and what expectations we put on manufacturers to increase the security posture of these devices,” wrote Deepen Desai, Zscaler’s vice president of security research in a [blog post][5]. - -Desai said the solution is “taking a [zero-trust][6] mentality.” It may be a buzzword but, “it’s about security people not trusting any person or device to touch the network—that is, until you know who the user is, what the device is, and whether that user and device are allowed to access the applications they’re trying to reach.” - -Naturally Zscaler sells such a solution, but he makes a valid point. This is an ages-old problem I have seen time and again; a hot new technology comes along, everyone rushes to embrace it, then they think about securing it later. IoT is no different. - -Whatever your device, at least go into the settings and turn on SSL. - -Join the Network World communities on [Facebook][7] and [LinkedIn][8] to comment on topics that are top of mind. - --------------------------------------------------------------------------------- - -via: https://www.networkworld.com/article/3530476/report-most-iot-transactions-are-not-secure.html - -作者:[Andy Patrizio][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://www.networkworld.com/author/Andy-Patrizio/ -[b]: https://github.com/lujun9972 -[1]: https://www.networkworld.com/article/3207535/what-is-iot-the-internet-of-things-explained.html -[2]: https://info.zscaler.com/resources-industry-iot-in-the-enterprise -[3]: https://www.networkworld.com/newsletters/signup.html -[4]: https://www.networkworld.com/article/2303073/lan-wan-what-is-transport-layer-security-protocol.html -[5]: https://www.zscaler.com/blogs/corporate/shining-light-shadow-iot-protect-your-organization -[6]: https://www.networkworld.com/article/3487720/the-vpn-is-dying-long-live-zero-trust.html -[7]: https://www.facebook.com/NetworkWorld/ -[8]: https://www.linkedin.com/company/network-world diff --git a/sources/talk/20200306 How I learned about burnout the hard way.md b/sources/talk/20200306 How I learned about burnout the hard way.md deleted file mode 100644 index ce9af6fb52..0000000000 --- a/sources/talk/20200306 How I learned about burnout the hard way.md +++ /dev/null @@ -1,111 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (How I learned about burnout the hard way) -[#]: via: (https://opensource.com/article/20/3/burnout) -[#]: author: (Jason Hibbets https://opensource.com/users/jhibbets) - -How I learned about burnout the hard way -====== -Burnout can happen to anyone. Here are the 3 things I wish I knew before -I burned out. -![Light bulb][1] - -In early 2017, I was mentally in a bad spot. It was the perfect storm of stress, the kind that no one asks for, but you deal with the hand you're dealt. Work was piling up to a point where I couldn't process all the things that were expected of me. I was training for spring half-marathons, which should have been stress relief, but I was putting too much pressure on myself to perform at a high level. And then on top of the everyday family obligations, a surgery in our household turned us into a one-car family and seriously added to the mounting pressure on me to provide and take care of the family. - -Then I broke. - -It wasn't one thing. It was the culmination of things. And it hit me from the blind side, unexpected. I never thought I would be a victim of burnout. I was aware of it and thoughtful about the community I was managing. But "not me," I thought to myself, "I've got this under control." I remember thinking that something was wrong; something was off. But I couldn't quite put my finger on the source. - -I distinctly remember the day where I cried at work, crumbling under the pressure that I was putting on myself. I consider myself a high performer in the office environment. I push myself to exceed the goals that my team co-creates because I want that success. I want the feeling that comes with it. But this experience was different. This wasn't a healthy win for my team or me. I felt like I let everyone down, including myself. - -I was attending South by Southwest in Austin, Texas, where I was [presenting my first Ignite Talk][2] on applying open source principles to government—a talk that was well received by the audience. I remember practicing, and practicing, and practicing more the day before and the morning of my talk. I got that high that comes after delivering a great talk. I had a book signing at the City of Raleigh's Economic Development booth during the event, which was another emotional boost. Life was good. Upon reflection, that's when I started noticing signs of my burnout. - -I didn't have much of an appetite. I was tired all the time. I was sleeping in, and not because of jet lag. I was exercising but wasn't getting the endorphins I was used to. And I wasn't motivated to do the work that I normally love to do. I was very blah and meh about getting work done or hanging out with people I love. These are all signs of depression and burnout. - -After the trip, I scheduled my annual physical and talked to my doctor about my situation, who recommended I see a psychologist. I sat on the couch and talked things out. I was diagnosed with severe anxiety, which was enough for me to know that I didn't want to know what true depression felt like. - -I learned my lesson the hard way. I'd like to share my experience so that you can recognize the signs and avoid going down this path. And before we move on, I must say that it's perfectly fine to ask for help. Ask a trusted co-worker or friend for help or guidance. We're human, and we need to help each other through the ups and the downs. - -### Three things to know about burnout - -Work burnout is a form of depression where you are not motivated to do the things that are expected of you at your job. It's not the occasional slacking off or spring fever because the weather is nice. It's a buildup of emotional stress where you don't want to do what is asked of you at work. There are numerous factors that can lead to burnout. - -#### Know the signs of burnout - -Lesson number one about burnout is to know the signs. I mentioned some of the things I was experiencing, but there are many others. I remember one thing that was extremely abnormal for me (because I'm so social) is that I started to separate myself from my usual team activities and people. - - * Hey Jason, want to grab lunch with us? Nope, I'm too busy. - * Hey Jason, Matt's in town, want to join us for happy hour? No. I've got work to do. - - - -This is totally unlike me. I would normally have said yes to both those opportunities. According to the [Mayo Clinic][3], here are a few things to ask yourself if you think you are experiencing burnout: - - * Do you drag yourself to work? - * Do you have trouble getting started with work? - * Are you cynical or critical at work? - * Have you become irritable or impatient with co-workers or customers? - * Do you lack the energy to be productive? - * Do you find it hard to concentrate? - * Do you lack satisfaction from your achievements? - * Do you feel disillusioned about your work? - * Are you using food, drugs, or alcohol to feel better or to simply not feel? - * Have your sleep habits changed? - * Are you troubled by unexplained headaches, stomach or bowel problems, or other physical complaints? - - - -You can check your own burnout risk at [BurnoutIndex.org][4], an anonymous online questionnaire created in response to the [high level of burnout][5] in the tech industry. - -#### Prevent burnout - -The second lesson is to identify ways [to prevent burnout][6]. First, take time away from your job and plan time to unplug and unwind. This means planning vacations, staycations, or other time away from work. It's sometimes hard to unplug like this with the pressures and obligations we put on ourselves. - -There are three different levels of paid time off (PTO): - - 1. **Best way to unplug:** I'm totally cut-off, not logging in, not checking email. - 2. **Decent way to unplug:** I'm kind of checking in, but not as responsive as normal. - 3. **Meh way to unplug:** I'm available if you need me, I'll monitor email, but I'm away from normal office life. - - - -Your situation will dictate which of these levels of time off will work for you. In my experience, you need at least two total check-outs a year. I typically have a blend of all three throughout the year, but since 2017, I have taken at least three week-long vacations each year to completely escape. It's working so far! - -#### Manage stress - -The third and final lesson is to manage stress effectively. My first go-to for stress management is exercise. I'm addicted to it. I work out pretty much every single day. And I like to mix it up: Cardio, weight lifting, swimming, running, cycling, surfing, and high-intensity interval training (HIIT) are staples in my exercise routine. I used to focus solely on running four to six half marathons a year, but I recently switched to triathlons. The multidisciplinary aspect of the activity has brought more joy and different challenges to my life. - -Another way to reduce stress is to manage your time better. Time is our most precious resource. You've got to choose how you want to spend your time. Family, work, self, social? It's up to you. Find ways to work more efficiently, more effectively, and make sure that you put yourself first. It may sound selfish, but as I've learned from the airplane preflight safety videos, "you need to put your mask on first before helping others." - -### Conclusion - -Burnout can lead to fatigue, excessive stress, sadness, anger, irritability, insomnia, alcohol or substance misuse, heart disease, and other medical conditions—all things that are not good for humans or for your team at work. I hope you can use these tips to put yourself first, reduce stress, and prevent burnout. - -* * * - -_Jason Hibbets will present "[10 things I wish I knew before experiencing burnout][7]" at [SCaLE 18x][8], March 5–8, 2020, in Pasadena, Calif. This article is a preview for the talk and a way to share a bit of his experience._ - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/3/burnout - -作者:[Jason Hibbets][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/jhibbets -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/bulb-light-energy-power-idea.png?itok=zTEEmTZB (Light bulb) -[2]: https://schedule.sxsw.com/2017/events/PP96070 -[3]: https://www.mayoclinic.org/healthy-lifestyle/adult-health/in-depth/burnout/art-20046642 -[4]: https://burnoutindex.org/ -[5]: https://opensource.com/article/19/11/burnout-open-source-communities -[6]: https://www.redhat.com/sysadmin/tips-avoiding-burnout -[7]: https://www.socallinuxexpo.org/scale/18x/presentations/10-things-i-wish-i-knew-experiencing-burnout -[8]: https://www.socallinuxexpo.org/scale/18x/ diff --git a/sources/talk/20200306 What is Linux and Why There are 100-s of Linux Distributions.md b/sources/talk/20200306 What is Linux and Why There are 100-s of Linux Distributions.md deleted file mode 100644 index be6a45e211..0000000000 --- a/sources/talk/20200306 What is Linux and Why There are 100-s of Linux Distributions.md +++ /dev/null @@ -1,193 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (What is Linux and Why There are 100’s of Linux Distributions?) -[#]: via: (https://itsfoss.com/what-is-linux/) -[#]: author: (Abhishek Prakash https://itsfoss.com/author/abhishek/) - -What is Linux and Why There are 100’s of Linux Distributions? -====== - -When you are just starting with Linux, it’s easy to get overwhelmed. - -You probably know only Windows and now you want to use Linux because you read that [Linux is better than Windows][1] as it is more secure and you don’t have to buy a license to use Linux. - -But then when you go about downloading and installing Linux, you learn that Linux is not a single entity. There are [Ubuntu][2], [Fedora][3], [Linux Mint][4], elementary and hundreds of such ‘Linux variants’. The trouble is that some of them look just like the other. - -If that’s the case, why are there multiple of those Linux operating systems? And then you also learn that Linux is just a kernel not an operating system. - -![Too Many Linux!][5] - -It gets messy. And you may feel like pulling out your hair. For a person who has a receding hairline, I would like you to keep your hair intact by explaining things in a way you could easily understand. - -I am going to take an analogy and explain why Linux is just a kernel, why there are hundreds of Linux and why, despite looking similar, they are different. - -The explanation here may not be considered good enough for an answer in an exam or interview but it should give you a better understanding of the topic. - -Apology in advance! - -My analogy may not be entirely correct from mechanical point of view as well. I am not knowledgeable about engines, cars and other related mechanical stuff. -But in my experience, I have noticed that this analogy helps people clearly understand the concept of Linux and operating system. -Also, I have used the term Linux OS instead of Linux distribution deliberately so that newcomers don’t start wondering about distribution. - -### Linux is just a kernel - -_**Linux is not an operating system, it’s just a kernel.**_ - -The statement is entirely true. But how do you understand it. If you look into books, you’ll find Linux kernel structure described like this: - -![Linux Kernel Structure][6] - -There is absolutely correct, however, let’s take a different approach. Think of operating systems as vehicles, any kind of vehicle be it motorbikes, cars or trucks. - -What is at the core of a vehicle? An engine. - -Think of kernel as the engine. It’s an essential part of the vehicle and you cannot use a vehicle without the engine. - -![The Operating System Analogy][7] - -But you cannot drive an engine, can you? You need a lot of other stuff to interact with the engine and drive the vehicle. You need wheels, steering, gears, clutch, brakes and more to drive a vehicle on top of that engine. - -Similarly, you cannot use a kernel on its own. You need lots of tool to interact with the kernel and use the operating system. These stuff could be shell, commands, graphical interface (also called desktop environments) etc. - -This makes sense, right? Now that you understand this analogy, let’s take it further so that you understand the rest of it. - -Windows and other operating systems have kernel too - -Kernel is not something exclusive to Linux. You may not have realized but Windows, macOS and other operating systems have a kernel underneath as well. -Microsoft Windows operating systems are based on [Windows NT kernel][8]. Apple’s macOS is based on the [XNU kernel][9]. - -### Think of operating systems as vehicles - -Think of Microsoft as an automobile company that makes a general purpose car (Windows operating system) that is hugely popular and dominates the car market. They use their own patented engine that no one else can use. But these ‘Microsoft cars’ do not offer scope of customization. You cannot modify the engine on your own. - -Now come to ‘Apple automobile’. They offer shiny looking, luxury cars at an expensive price. If you got a problem, they have a premium support system where they might just replace the car. - -Now comes Linux. Remember, Linux is just an engine (kernel). But this ‘Linux engine’ is not patented and thus anyone is free to modify and build cars (desktop operating system), bikes (small embed system in your toys, tvs etc), trucks (servers) or jet-planes ([supercomputers][10]) on top of it. In real world, no such engine exists but accept it for the sake of this analogy. - -![][11] - - * kernel = engine - * Linux kernel = specific type of engine - * desktop operating systems = cars - * server operating systems = heavy trucks - * embed systems = motor-bikes - * desktop environment = body of the vehicle along with interiors (dashboard and all) - * themes and icons = paint job, rim job and other customization - * applications = accessories you put for specific purpose (like music system) - - - -### Why there are so many Linux OS/distributions? Why some look similar? - -Why there are so many cars? Because there are several vehicle manufacturers using the ‘Linux engine’ and each of them have so many cars of different type and for different purposes. - -Since ‘Linux engine’ is free to use and modify, anyone can use it to build a vehicle on top of it. - -This is why Ubuntu, Debian, Fedora, SUSE, [Manjaro][12] and many other **Linux-based operating systems (also called Linux distributions or Linux distros)** exist. - -You might also have noticed that these Linux operating systems offer different variants but they look similar. I mean look at Fedora’s default GNOME version and Debian’s GNOME version. They do look the same, don’t they? - -![Fedora GNOME vs Debian GNOME: Virtually No Visual Difference][13] - -The component that gives the look and feel in a Linux OS is called [desktop environment][14]. In our analogy here, you can think of it as a combination of outer body and matching interiors. This is what provides the look and feel to your vehicle, does it not? - -It’s from the exterior that you can identify the cars into category of sedan, SUV, hatchback, station wagon, convertible, minivan, van, compact car, 4×4 etc. - -But these ‘type of cars’ are not exclusive to a single automobile company. Ford offers SUV, compact cars, vans etc and so do other companies like General Motors, Toyota. - -![Vehicles of same type look similar even if they are from different automobile companies][15] - -Similarly, distributions (Linux OSes) like Fedora, Ubuntu, Debian, Manjaro etc also offer different variants in the form of GNOME, KDE, Cinnamon, MATE and other [desktop environments][16]. - -Ford’s SUV may look similar to Toyota’s or Renault’s SUV. Fedora’s GNOME version may look similar to Manjaro or Debian’s GNOME version. - -#### Some type of cars consume more fuel, some desktop environments need more RAM - -You probably understand the ‘usefulness’ of different types of cars. Compact cars are good for driving in the cities, vans are good for long trip with family, 4×4 are good for adventures in jungles and other rough terrain. A SUV may look good and feel comfortable for sitting but it consumes more fuel than a compact car that might not be comfortable to sit in. - -Similarly, desktop environments (GNOME, MATE, KDE, Xfce etc) also serve some purpose other than just providing the looks to your Linux operating system. - -GNOME gives a modern looking desktop but it consumes more RAM and thus require that your computer has more than 4 GB of RAM. Xfce on the other hand may look old/vintage but it can run on systems with 1 GB of RAM. - -#### Difference between getting desktop environment from distribution and installing on your own - -As you start using Linux, you’ll also come across suggestions that you can easily install other desktop environments on your current system. - -Remember that Linux is a free world. You are free to modify the engine, customize the looks on your own, if you have the knowledge/experience or if you are an enthusiastic learner. - -Think of it as customizing cars. You may modify a Hundai i20 to look like Suzuki Swift Dzire. But it might not be the same as using a Swift Dzire. - -When you are inside the i20 modified to look like Swiftz Dzire, you’ll find that it may not have the same experience from the inside. Dashboard is different, seats are different. You may also notice that the exterior doesn’t fit the same on i20’s body. - -The same goes for switching desktop environments. You will find that you don’t have the same set of apps in Ubuntu that you should be getting in Mint Cinnamon. Few apps will look out of place. Not to mention that you may find a few things broken, such as network manager indicator missing etc. - -Of course, you can put time, effort and skills to make Hundai i20 look as much like Swift Dzire as possible but you may feel like getting Suzuki Swift Dzire is a better idea in the first place. - -This is the reason why installing Ubuntu MATE is better than installing Ubuntu (GNOME version) and then [installing MATE desktop][17] on it. - -### Linux operating systems also differ in the way they handle applications - -Another major criteria on which the Linux operating systems differ from each other is the package management. - -Package management is basically how you get new software and updates in your systems. It’s up to your Linux distribution/OS to provide the security and maintenance updates. Your Linux OS also provides the means of installing new software on your system. - -Some Linux OS provides all the new software version immediately after their release while some take time to test them for your own good. Some Linux OS (like Ubuntu) provides easier way of installing a new software while you may find it complicated in some other Linux OS (like [Gentoo][18]). - -Keeping the line of our analogy, consider installing software as adding accessories to your vehicle. - -Suppose you have to install a music system in your car. You may have two options here. Your car is designed in such a way that you just insert the music player, you hear the click sound and you know it’s installed. The second option could be to get a screwdriver and then fix the music player on screws. - -Most people would prefer the hassle-free click lock installing system. Some people might take matter (and screwdriver) into their own hands. - -If an automobile company provides scope for installing lots of accessories in click-lock fashion in their cars, they will be preferred, won’t they? - -This is why Linux distributions like Ubuntu have a more users because they have a huge collection of software that can be easily installed in matter of clicks. - -### Conclusion - -Before I conclude this article, I’ll also like to talk about support that plays a significant role in choosing a Linux OS. For your car, you would like to have its official service center or other garages that service the automobile brand you own, don’t you? If the automobile company is popular, naturally, it will have more and more garages providing services. - -The same goes for Linux as well. For a popular Linux OS like Ubuntu, you have some official forums to seek support and a good number of websites and forums providing troubleshooting tips to fix your problem. - -Again, I know this is not a perfect analogy but this helps understand the things slightly better. - -If you are absolutely new to Linux, did this article made things clear for you or you are more confused than before? - -If you already know Linux, how would you explain Linux to someone from non-technical background? - -Your suggestions and feedback is welcome. - --------------------------------------------------------------------------------- - -via: https://itsfoss.com/what-is-linux/ - -作者:[Abhishek Prakash][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://itsfoss.com/author/abhishek/ -[b]: https://github.com/lujun9972 -[1]: https://itsfoss.com/linux-better-than-windows/ -[2]: https://ubuntu.com/ -[3]: https://getfedora.org/ -[4]: https://linuxmint.com/ -[5]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/03/too-many-linux-choices.png?ssl=1 -[6]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/03/Linux_Kernel_structure.png?ssl=1 -[7]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/03/operating_system_analogy.png?ssl=1 -[8]: https://en.wikipedia.org/wiki/Architecture_of_Windows_NT -[9]: https://en.wikipedia.org/wiki/XNU -[10]: https://itsfoss.com/linux-runs-top-supercomputers/ -[11]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/03/linux-kernel-as-engine.png?ssl=1 -[12]: https://manjaro.org/ -[13]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/03/fedora-gnome-vs-debian-gnome.jpg?ssl=1 -[14]: https://itsfoss.com/glossary/desktop-environment/ -[15]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/03/linux_suv_analogy.jpg?ssl=1 -[16]: https://itsfoss.com/best-linux-desktop-environments/ -[17]: https://itsfoss.com/install-mate-desktop-ubuntu/ -[18]: https://www.gentoo.org/ diff --git a/sources/talk/20200308 The De-Googled Android Fork is Making Good Progress.md b/sources/talk/20200308 The De-Googled Android Fork is Making Good Progress.md deleted file mode 100644 index e5d1838cd3..0000000000 --- a/sources/talk/20200308 The De-Googled Android Fork is Making Good Progress.md +++ /dev/null @@ -1,115 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (The De-Googled Android Fork is Making Good Progress) -[#]: via: (https://itsfoss.com/gael-duval-interview/) -[#]: author: (Abhishek Prakash https://itsfoss.com/author/abhishek/) - -The De-Googled Android Fork is Making Good Progress -====== - -A couple years ago, we covered the [Eelo project][1]. If you remember, the Eelo project was started by [Gael Duval][2] who once created Mandrake Linux. The goal of the Eelo project was to remove all Google services from Android to give you an [alternate mobile operating system][3] that doesn’t track you and invade your privacy. - -A lot has happened to Eelo since then. It’s not called Eelo anymore, now it’s called /e/. So, what’s happening with this project? We talked to Gael Duval himself. Here’s what he shared with us. - -![][4] - -_**Why did you create this Eelo or /e/ project in the first place?**_ - -**Gael:** In 2017, I realized that using Android and iPhone, Google and many mobile apps was not compatible with my personal privacy. - -A later study by a US University confirmed this: using an iPhone or and Android phone sends between 6 to 12 MB of personal data to Google servers, daily! And this doesn’t count mobile apps. - -So I looked for reasonable alternatives to iPhone and Android phones but didn’t find any. Either I found options for hobbyists, like Ubuntu Touch, that were not compatible with existing apps and not fully unGoogled either. Or there were alternative ROMs with all the Google fat inside, and no associated basic online services that could be used without tweaking the system. - -Therefore, an idea came to mind: why not fork Android, remove all the Google features, even low level, such as connectivity check, DNS…, replace default apps with more virtuous apps, add basic online services, and integrate all this into a consistent form that could be used by Mum and Dad and any people without tech or expert knowledge? - -_**How is it any different from other custom Android ROMs?**_ - -**Gael:** It doesn’t send a bit of data to Google, and is and will be more and more privacy-focused. - -Low-level: we remove any Android feature that sends data to Google servers. Even the connectivity check when you start the smartphone! To my knowledge, there is not any other Android ROM that does this at the moment. We change default DNS settings and offer users an option to set the DNS of their choice. We change NTP (automatic time configuration) settings to the default NTP servers because there is no reason to use Google NTP servers actually. Then we remove Google services, and we replace with a software layout called microG that can still receive push notifications and have geolocation data for apps (using Mozilla geolocation service). - -Then we change the default apps by non-Google apps, including the maps applications, mail etc., most are open source applications and I can say that there is 99% probability that all will be open source before the end of this year. - -Then we add our own Android application installer, with close to 80 000 available applications at the moment. - -We provide a different web browser, which is a fork of Chromium, were all features that data to Google are removed, and were the default search engine is not Google… - -And we operate online services: - - * search, using a meta-search system that we have improve for a better user experience - * online drive with encrypted data, calendar etc. using a modified version of NextCloud - * mail… - - - -And for we provide a unique identifier that can be used to access all those services, either on the web or from the /e/ OS system, by login once. Then you can sync all your data, calendar, email etc. between your smartphone and your personal /e/ cloud (it can also be self-hosted). -The purpose of the project is to provide a normal, ready to use, and attractive “digital life” to users, without sending all your personal data to Google. - -_**If it is completely ‘ungoogled’, how do users install new apps? Do you have your own app store? If yes, how can we trust that these apps don’t spy on user data?**_ - -**Gael:** Yes – we have our own application installer, with about 80 000 applications. And we analyse each application to unveil the number of trackers, and we display this information to our users, for each application. We are also adding Progressive Web Apps soon to this application installer. - -/e/ OS is about freedom of choice. We want the core system to be better, and then offer as many possible options to users, by informing them as much as possible. In short: they can still any application they need. Next step will be to offer a feature to actually block trackers used in applications. - -_**What is the target user base for /e/? Can an average Joey use it without much trouble?**_ - -![][5] - -**Gael:** We started with tech-savvy users, and we’re expanding the user base to people with less knowledge. At the moment, our typical user base is a mix of tech-savvy users, who can flash a smartphone with /e/ OS and people who are very concerned with Google and their data privacy but have very limited technical knowledge. For those people we have some smartphones pre-installed with /e/ OS for sale, on high-grade refurbished hardware. - -We are also announcing this week an “/e/ easy installer” that will make the flashing process much more easier, by pluging the smartphone to a PC and launching a dedicated application that will make most of the job. - -Then, the next step will be to expand our target users to a more global market, once we find the good partners. But clearly, there is a demand for something different than the Apple-Google worldwide market duopoly on the mobile. - -_**Initially the project was named eelo and it is called /e/ or [e foundation][6]. Personally, I find the name /e/ weird and it is not easily recognizable. Why did you change the project name?**_ - -**Gael:** We have been “attacked” by a company called “eelloo”. They considered that “eelo” would interfere with their business. They are in the HR business solutions, but registered their trademark in all the classes related to mobile OS, smartphones etc. This is silly and a shame, but we had no money to defend us strongly at the time. - -However the/e/ name will be abandonned for something else quite soon. - -_**It’s been a couple of years since the initial launch. How do you see the adoption of /e/?**_ - -**Gael:** We launched the first beta 18 months ago, and we have started to sell smartphones with /e/ a little more than 6 months ago. The adoption is growing a lot at the moment, we have to add terabytes of online storage regularly! - -Also with the /e/ installer arriving, and some official partnerships with some hardware mobile manufacturers in the pipe, this is going to accelerate a lot this year. - -However, this is not surprising, privacy concerns are rising both for individuals and corporations, and I think the rejection of Google is also trending. - -_**What are your future plans to grow /e/?**_ - -**Gael:** The growth is very natural. There is a strong community of users who realize how unique our approach is. These guys are contributing, supporting us and talking a lot about the project. - -With the easy installer coming along and strategic partnerships with hardware makers, this is going to accelerate a lot. - -Also, and this is more personal, I think that there is a natural connection between /e/ OS, and the Linux world. OK, /e/ OS is based on Android, but it’s still a Linux kernel and it’s the same spirit, it’s Open Source… So I’d really like to have more natural integration between my /e/ smartphone and my Linux desktop. There should be some nice features added in this spirit in the next versions of /e/ OS. - -_**What can /e/ users and our readers do to help e foundation?**_ - -**Gael:** Join us, talk about what we are doing, send your feedback, organize some meetups… Help improve the /e/ Wikipedia page which is very poor and doesn’t represent at all what we are actually doing. - -We also have a [permanent crowdfunding campaign where users can support the project financially][7], pay for the servers etc. And, in addition to giving back in term of open source product, we send cool stuff in return :) - --------------------------------------------------------------------------------- - -via: https://itsfoss.com/gael-duval-interview/ - -作者:[Abhishek Prakash][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://itsfoss.com/author/abhishek/ -[b]: https://github.com/lujun9972 -[1]: https://itsfoss.com/eelo-mobile-os/ -[2]: https://en.wikipedia.org/wiki/Ga%C3%ABl_Duval -[3]: https://itsfoss.com/open-source-alternatives-android/ -[4]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/03/e-os-interview.jpg?ssl=1 -[5]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/03/e-foundation-smartphones.jpg?resize=800%2C590&ssl=1 -[6]: https://e.foundation/ -[7]: https://e.foundation/donate/ diff --git a/sources/talk/20200311 Data-center power consumption holds steady.md b/sources/talk/20200311 Data-center power consumption holds steady.md deleted file mode 100644 index cfa6ba9fba..0000000000 --- a/sources/talk/20200311 Data-center power consumption holds steady.md +++ /dev/null @@ -1,60 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Data-center power consumption holds steady) -[#]: via: (https://www.networkworld.com/article/3531316/data-center-power-consumption-holds-steady.html) -[#]: author: (Andy Patrizio https://www.networkworld.com/author/Andy-Patrizio/) - -Data-center power consumption holds steady -====== -While computing capacity has exploded in recent years, power consumption is growing more slowly thanks to greater energy efficiency. -Google - -A predicted explosion in power consumption by data centers has not manifested thanks to advances in power efficiency and, ironically enough, the move to the cloud, according to a new report. - -The [study][1], published in the journal _Science_ last week, notes that while there has been an increase in global data-center energy consumption over the past decade, this growth is negligible compared with the rise of workloads and deployed hardware during that time. - -Data centers accounted for about 205 terawatt-hours of electricity usage in 2018, which is roughly 1% of all electricity consumption worldwide, according to the report. (That's well below the often-cited stat that data centers consume 2% of the world's electricity). The 205 terawatt-hours represent a 6% increase in total power consumption since 2010, but global data center compute instances rose by 550% over that same time period. - -**[ Now read: [What is quantum computing (and why enterprises should care)][2] ]** - -To drive that point home: Considerably more compute is being deployed, yet the amount of power consumed is holding steady. - -The paper cites a number of reasons for this. For starters, hardware power efficiency is vastly improved. The move to server virtualization has meant a six-fold increase in compute instances with only a 25% increase in server energy use. And a shift to faster and more energy-efficient port technologies has brought about a 10-fold increase in data center IP traffic with only a modest increase in the energy use of network devices. - -Even more interesting, the report claims the rise of and migration to hyperscalers has helped curtail power consumption.  - -Hyperscale data centers and cloud data centers are generally more energy efficient than company-owned data centers because there is greater incentive for energy efficiency. The less power Amazon, Microsoft, Google, etc., have to buy, the more their bottom line grows. And hyperscalers are big on cheap, renewable energy, such as hydro and wind. - -[][3] - -So if a company trades its own old, inefficient data center for AWS or Google Cloud, they're reducing the overall power draw of data centers as a whole. - -"Total power consumption held steady as computing output has risen because of improvement efficiency of both IT and infrastructure equipment, and a shift from corporate data centers to more efficient cloud data centers (especially hyper scale)," said Jonathan Koomey, a Stanford professor and one of the authors of the research, in an email to me. He has spent years researching data center power and is an authority on the subject. - -"As always, the IT equipment progresses most quickly. In this article, we show that the peak output efficiency of computing doubled every 2.6 years after 2000. This doesn’t include the reduced idle power factored into the changes for servers we document," he added. - -Koomey notes that there is additional room for efficiency improvements to cover the next doubling of computing output over the next few years but was reluctant to make projections out too far. "We avoid projecting the future of IT because it changes so fast, and we are skeptical of those who think they can project IT electricity use 10-15 years hence," he said. - -Join the Network World communities on [Facebook][4] and [LinkedIn][5] to comment on topics that are top of mind. - --------------------------------------------------------------------------------- - -via: https://www.networkworld.com/article/3531316/data-center-power-consumption-holds-steady.html - -作者:[Andy Patrizio][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://www.networkworld.com/author/Andy-Patrizio/ -[b]: https://github.com/lujun9972 -[1]: https://science.sciencemag.org/content/367/6481/984 -[2]: https://www.networkworld.com/article/3275367/what-s-quantum-computing-and-why-enterprises-need-to-care.html -[3]: https://www.networkworld.com/article/3440100/take-the-intelligent-route-with-consumption-based-storage.html?utm_source=IDG&utm_medium=promotions&utm_campaign=HPE21620&utm_content=sidebar ( Take the Intelligent Route with Consumption-Based Storage) -[4]: https://www.facebook.com/NetworkWorld/ -[5]: https://www.linkedin.com/company/network-world diff --git a/sources/talk/20200311 Setting yourself up for success while working remotely.md b/sources/talk/20200311 Setting yourself up for success while working remotely.md deleted file mode 100644 index bbe6b3f513..0000000000 --- a/sources/talk/20200311 Setting yourself up for success while working remotely.md +++ /dev/null @@ -1,61 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Setting yourself up for success while working remotely) -[#]: via: (https://opensource.com/article/20/3/remote-work) -[#]: author: (Dawn Parzych https://opensource.com/users/dawnparzych) - -Setting yourself up for success while working remotely -====== -Whether you are new to working remotely or are a seasoned veteran, here -are tips to improve the experience. -![Woman sitting in front of her computer][1] - -Remote work is not easy. While there are perks to being remote, it is a mind-shift and takes some getting used to. Talk to anybody that works remotely, and they will likely tell you some of the biggest challenges of remote work are _**feeling disconnected**_ and _**a loss of regime**_. Here are my tips gathered from 10 years as a remote worker on how to set yourself and your team up to work remotely successfully. - -### Environment and regime - - 1. **"Commute" to and from work**. I'm not saying go to the extremes in this [_Audible commercial_][2], but I suggest leaving your home to go for a walk or a bike ride before you begin working. Do the same at the end of the day. I take my dog, Barley (pictured here), for a walk at the start and end of most days.![Here's my dog, Barley, who gets regular walks during my morning "commute"][3] - 2. **Get dressed.** Don't be tempted to work in your PJs, because this blurs the line between work and home. People sometimes say that being able to work in your pajamas is a perk of remote work, but studies show this isn't great advice. You don't need to put on a suit and tie, but do change out of your pajamas; otherwise, before you know it, you will have gone three days without changing your clothes. For more reasons why check out this article from [_Fast Company_][4]. - 3. **Eat lunch away from your desk**. This is good advice even if you aren't working remotely. - 4. **Stick to a schedule**. It's easy to start working as soon as you wake up and continue late into the evening. Set a start time and an end time for your day and stick to it. When I stop work for the day, I try to close my office door. Configure your working hours in every app you use so others know when you are available. Don't use your work computer outside of working hours if you can. - 5. **Set up a dedicated work environment**, if possible. Try not to work from the kitchen table. This blurs the lines between home and work. My office (picture below) also has space for comfortable seating and desk seating to switch between the two. - 6. **Check-in with your team** or friends in the morning. Don't mistake this for a daily stand-up; this is more like saying _hi_ when you're getting coffee. - 7. **Sign-off at the end of the day**. This means both letting your team members know you are leaving and actually walking away from where you are working. Close the laptop. Turn off Slack notifications, etc. - 8. **Keep people posted** if you are leaving early or unavailable. It helps build trust. - 9. **Invest in a headset** if you will be doing a lot of calls. If there is more than one person in your household that is working remotely, they will thank you for this. It is no fun listening to somebody else's conference call. - 10. **Turn on your video** when on a video call to help you feel connected and stay engaged. When your video is disabled, it is easy to wander off and get distracted by Slack (or its [open source alternatives][5]), Twitter, or any other number of distractions. - 11. **Set up a weekly, casual remote chat**. At my company, we meet on Friday mornings via Zoom (or the open source alternative, [Jitsi][6]). This chat is open to remote and non-remote staff. It is an open call to talk about whatever is on our minds. Topics have ranged from music preferences to parenting challenges to what people are doing over the weekend. - 12. **Set-up chat-roulette **if one-on-one interaction is more your thing. There are applications on most chat platforms that randomly pairs two employees to chat and get to know one another. - 13. **Ask for help**. Chat with your colleagues if you're stuck, need encouragement, or need to vent. You are not alone. You are a member of a team. You can still grab a coffee or go for a walk with a teammate remotely. - - - -![Here’s my home office set up][7] - -Everybody is different. These tips work for me, I’d love to hear you share your advice below! - -Not all work-from-home gigs are created equal. There is a vast ocean between being a member of a... - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/3/remote-work - -作者:[Dawn Parzych][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/dawnparzych -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/OSDC_women_computing_2.png?itok=JPlR5aCA (Woman sitting in front of her computer) -[2]: https://www.youtube.com/watch?v=oVCJhZhrJ04 -[3]: https://opensource.com/sites/default/files/resize/pictures/barleywalking_0-300x379.png (Here's my dog, Barley, who gets regular walks during my morning "commute") -[4]: https://www.fastcompany.com/3064295/what-happened-when-i-dressed-up-to-work-from-home-for-a-week -[5]: https://opensource.com/alternatives/slack -[6]: https://meet.jit.si/ -[7]: https://opensource.com/sites/default/files/pictures/6151f75e-bbeb-4e64-a5ca-0bbe4e981054.jpeg (Here’s my home office set up) diff --git a/sources/talk/20200312 Next wave of digital transformation requires better security, automation.md b/sources/talk/20200312 Next wave of digital transformation requires better security, automation.md deleted file mode 100644 index d99b38c7b8..0000000000 --- a/sources/talk/20200312 Next wave of digital transformation requires better security, automation.md +++ /dev/null @@ -1,92 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Next wave of digital transformation requires better security, automation) -[#]: via: (https://www.networkworld.com/article/3531448/next-wave-of-digital-transformation-requires-better-security-automation.html) -[#]: author: (Zeus Kerravala https://www.networkworld.com/author/Zeus-Kerravala/) - -Next wave of digital transformation requires better security, automation -====== -F5 report highlights the challenges of digital initiatives, including a struggle to secure multi-cloud environments and a lack of IT skills required to extend automation efforts. -Loops7 / Getty Images - -Digital transformation is a top-of-mind priority for CIOs who want innovative ways to deploy applications and run IT operations. In today's digital economy, companies that don't depend on applications to support their business are rare. On the contrary, most companies have some kind of digital transformation initiative in place, which is driving the adoption of cloud-native architectures and application services. - -A new report from application delivery vendor F5 Networks finds businesses are entering the second phase of digital transformation by automating more parts of their networks. Based on a survey of nearly 2,600 senior leaders globally—from various industries, company sizes, and roles—the [_2020 State of Application Services Report_][1] uncovered five key trends shaping the application landscape. - -**READ MORE:** [Top 10 underused SD-WAN features][2] - -### 1\. Every company is undergoing a digital transformation - -Having conducted its annual survey for six years in a row, F5 consistently found IT optimization and business process optimization to be the top reported benefits for companies with digital transformation initiatives. At this point, most companies have mastered automation of individual tasks by digitizing IT and business processes—which the report classifies as phase one of digital transformation. - -Moving on to phase two, companies are shifting their focus to reducing complexity and supporting apps with a consistent set of services. External-facing apps make up a portion (45%) of an average company's portfolio and help generate revenue. Yet, the internal-facing ones—like productivity and operational apps—are vital to digitizing business processes. - -Modern, microservices/cloud-native apps now make up approximately 15% of a company's portfolio, compared to 11% for mainframe-hosted apps. This mix of new and older generation apps indicates that businesses are dealing with a diverse app portfolio. As more businesses adopt an application-centric mindset, they can start managing their app portfolio like a business asset. - -### 2\. Organizations struggle to secure multi-cloud environments - -Every company has different needs, which is why most choose the best cloud for their applications on a case-by-case basis, the report finds. Businesses are adopting cloud platforms at a high rate, with 27% planning to have more than half of their applications in the cloud by the end of 2020. - -For 87% of companies, multi-cloud is the preferred choice due to its flexibility. Multi-cloud typically includes a mix of infrastructure-as-a-service (IaaS) environments, so a company can choose to deploy multiple software-as-a-service (SaaS) or platform-as-a-service (PaaS) cloud services. - -[][3] - -However, multi-cloud environments pose challenges for businesses when it comes to maintaining security, policy, and compliance, according to the report's respondents. Companies are dealing with applications that reach hundreds to millions of end users—each one with its own security risk. Meanwhile, many don't have the expertise to protect the apps. - -A whopping 71% of companies surveyed by F5 reported a skills gap in security. Only 45% of companies are confident that they're able to secure apps in the public cloud, while 62% think they can protect apps in an on-premises data center. The most confident companies have consistency across multiple architectures and multiple infrastructures, ensuring security and performance of all apps in their portfolio. - -### 3\. Automation key to boosting efficiency - -Manual processes may have been the norm for legacy networks, but modern networks require automation. That's why most companies (73%) have embraced it. - -In this year's report, F5 observed more consistent use of automation in the deployment pipeline than in previous years. Automation of application infrastructure, network, application services, and security is nearly equal across the board at approximately 40% for survey respondents. (See also: [Enterprises being won over by speed, effectiveness of network automation][4]) - -Interestingly, more companies are choosing open source and continuous integration/continuous delivery (CI/CD) tools for automation over proprietary vendor solutions. The report found there is a need for open ecosystems with the increasing use of CI/CD tools, as businesses search for ways to address problems that slow down automation. Companies said their biggest struggles are with skill gaps in enterprise IT, integrating toolsets across vendors and devices, and the cost of new tools. - -### 4\. Security app services are most widely deployed - -Modern networks require application services—a pool of services necessary to deploy, run, and secure apps across on-premises or multi-cloud environments. Today, 69% of companies are using 10 or more application services, such as ingress control and service discovery. Ingress control is a relatively new application service that has become essential to companies with high API call volumes. It's one of many examples of the growing adoption of microservices-based apps. - -Security services remain as the most widely deployed, with these in particular dominating the top five: SSL VPN and firewall services (81%); IPS/IDS, antivirus, and spam mitigation (77%); load balancing and DNS (68%); web application firewalls (WAF) and DDoS protection (each at 67%). - -Over the next 12 months, the evolution of cloud and modern app architectures will continue to shape application services. At the top of the list (41%) is software-defined wide-area networking ([SD-WAN][5]). SD-WAN enables software-based provisioning from the cloud to meet modern application demands. Early SD-WAN deployments focused on replacing costly multi-protocol label switching (MPLS), but there is now greater emphasis on security as a core requirement for SD-WAN. - -### 5\. DevOps picks up responsibility for app services - -Although IT operations is still primarily responsible for deploying app services, the report revealed a shift taking place from single-function to ops-oriented team structures—such SecOps and DevOps. - -The responsibility for securing, optimizing, and managing apps by DevOps teams is growing, fueled by cloud and container-native applications. Compared to just a few years ago, businesses have developed a preference for containers over virtual appliances for app services. Container preference grew from just 6% in 2017 to 18% in 2020, surpassing virtual machines (15%) and hardware (15%). - -Regardless of preference, the challenges of modern app architectures call for collaboration between teams. IT operations and DevOps don't have to be mutually exclusive and can work together to address those challenges. - -### What's Next? - -Senior leaders surveyed in the report see big data analytics coming into play in the next two to five years. - -Companies today only use a small portion of their data and aren't taking full advantage of it. In the third phase of the digital transformation, businesses can begin leveraging data captured by apps via artificial intelligence (AI)-powered analytics. The harnessed data can provide valuable insights to improve business processes. - -Join the Network World communities on [Facebook][6] and [LinkedIn][7] to comment on topics that are top of mind. - --------------------------------------------------------------------------------- - -via: https://www.networkworld.com/article/3531448/next-wave-of-digital-transformation-requires-better-security-automation.html - -作者:[Zeus Kerravala][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://www.networkworld.com/author/Zeus-Kerravala/ -[b]: https://github.com/lujun9972 -[1]: https://www.f5.com/state-of-application-services-report -[2]: https://www.networkworld.com/article/3518992/top-10-underused-sd-wan-features.html -[3]: https://www.networkworld.com/article/3440100/take-the-intelligent-route-with-consumption-based-storage.html?utm_source=IDG&utm_medium=promotions&utm_campaign=HPE21620&utm_content=sidebar ( Take the Intelligent Route with Consumption-Based Storage) -[4]: https://www.networkworld.com/article/3530275/enterprises-being-won-over-by-speed-effectiveness-of-network-automation.html -[5]: https://www.networkworld.com/article/3031279/sd-wan-what-it-is-and-why-you-ll-use-it-one-day.html -[6]: https://www.facebook.com/NetworkWorld/ -[7]: https://www.linkedin.com/company/network-world diff --git a/sources/talk/20200316 As the networks evolve enterprises need to rethink network security.md b/sources/talk/20200316 As the networks evolve enterprises need to rethink network security.md deleted file mode 100644 index 4767aaafe1..0000000000 --- a/sources/talk/20200316 As the networks evolve enterprises need to rethink network security.md +++ /dev/null @@ -1,81 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (As the networks evolve enterprises need to rethink network security) -[#]: via: (https://www.networkworld.com/article/3531929/as-the-network-evolves-enterprises-need-to-rethink-security.html) -[#]: author: (Zeus Kerravala https://www.networkworld.com/author/Zeus-Kerravala/) - -As the networks evolve enterprises need to rethink network security -====== -Q&A: John Maddison, executive vice president of products for network security vendor Fortinet, discusses how to deal with network security in the digital era. -D3Damon / Getty Images - -_Digital innovation is disrupting businesses. Data and applications are at the hub of new business models, and data needs to travel across the extended network at increasingly high speeds without interruption. To make this possible, organizations are radically redesigning their networks by adopting multi-cloud environments, building hyperscale data centers, retooling their campuses, and designing new connectivity systems for their next-gen branch offices. Networks are faster than ever before, more agile and software-driven. They're also increasingly difficult to secure. To understand the challenges and how security needs to change, I recently talked with John Maddison, executive vice president of products for network security vendor Fortinet._ - -**ZK: As the speed and scale of data escalate, how do the challenges to secure it change?** - -JM: Security platforms were designed to provide things like enhanced visibility, control, and performance by monitoring and managing the perimeter. But the traditional perimeter has shifted from being a very closely monitored, single access point to a highly dynamic and flexible environment that has not only expanded outward but inward, into the core of the network as well. - -**[ Also see [What to consider when deploying a next generation firewall][1]. | Get regularly scheduled insights by [signing up for Network World newsletters][2]. ]** - -**READ MORE:** [The VPN is dying, long live zero trust][3] - -Today's perimeter not only includes multiple access points, the campus, the WAN, and the cloud, but also IoT, mobile, and virtual devices that are generating data, communicating with data centers and manufacturing floors, and literally creating thousands of new edges inside an organization. And with this expanded perimeter, there are a lot more places for attacks to get in. To address this new attack surface, security has to move from being a standalone perimeter solution to being fully integrated into the network. - -This convergence of security and networking needs to cover SD-WAN, VPN, Wi-Fi controllers, switching infrastructures, and data center environments – something we call security-driven networking. As we see it, security-driven networking is an essential approach for ensuring that security and networking are integrated together into a single system so that whenever the networking infrastructure evolves or expands, security automatically adapts as an integrated part of that environment. And it needs to do this by providing organizations with a new suite of security solutions, including network segmentation, dynamic multi-cloud controls, and [zero-trust network access][3]. And because of the speed of digital operations and the sophistication of today's attacks, this new network-centric security strategy also needs to be augmented with AI-driven security operations. - -The perimeter security devices that have been on the market weren't really built to run as part of the internal network, and when you put them there, they become bottlenecks. Customers don't put these traditional security devices in the middle of their networks because they just can't run fast enough. But the result is an open network environment that can become a playground for criminals that manage to breach perimeter defenses. It's why the dwell time for network malware is over six months. - -**[ [Prepare to become a Certified Information Security Systems Professional with this comprehensive online course from PluralSight. Now offering a 10-day free trial!][4] ]** - -As you combine networking applications, networking functionality, and security applications together to address this challenge, you absolutely need a different performance architecture. This can't be achieved using the traditional hardware most security platforms rely on. - -**ZK: Why can't traditional security devices secure the internal network?** - -JM: They simply aren't fast enough. And the ones that come close are prohibitively expensive… For example, internal segmentation not only enables organizations to see and separate all of the devices on their network but also dynamically create horizontal segments that support and secure applications and automated workflows that need to travel across the extended network. Inside the network, you're running at 100 gigs, 400 gigs, that sort of thing. But the interface for a lot of security systems today is just 10 gigs. Even with multiple ports, the device can't handle much more than that without having to spend a fortune… In order to handle today's capacity and performance demands, security needs to be done at network speeds that most security solutions cannot support without specialized content processors. - -**ZK: Hyperscale data centers have been growing steadily. What sort of additional security challenges do these environments face?** - -JM: Hyperscale architectures are being used to move and process massive amounts of data. A lot of the times, research centers will need to send a payload of over 10 gigabytes – one packet that's 10 gigabytes – to support advanced rendering and modeling projects. Most firewalls today cannot process these large payloads, also known as elephant flows. Instead, they often compromise on their security to let them flow through. Other hyperscale environment examples include financial organizations that need to process transactions with sub-second latency or online gaming providers that need to support massive numbers of connections per second while maintaining high user experience. … [Traditional security platforms] will never be able to secure hyperscale environments, or even worse, the next generation of ultra-fast converged networks that rely on hyperscale and hyperconnectivity to run things like smart cities or smart infrastructures, until they fundamentally change their hardware. - -**ZK: Do these approaches introduce new risks or increase the existing risk for these organizations?** - -JM: They do both. As the attack surface expands, existing risks often get multiplied across the network. We actually see more exploits in the wild targeting older vulnerabilities than new ones. But cybercriminals are also building new tools designed to exploit cloud environments and modern data centers. They are targeting mobile devices and exploiting IoT vulnerabilities. Some of these attacks are simply revisions of older, tried and true exploits. But many are new and highly sophisticated. We are also seeing new attacks that use machine learning and rely on AI enhancements to better bypass security and evade detection. - -To address this challenge, security platforms need to be broad, integrated, and automated. - -Broad security platforms come in a variety of form factors so they can be deployed everywhere across the expanding network. Physical hardware enhancements, such as our [security processing units], enable security platforms to be effectively deployed inside high-performance networks, including hyperscale data centers and SD-WAN environments. And virtualized versions need to support private cloud environments as well as all major cloud providers through thorough cloud-native integration. - -Next, these security platforms need to be integrated. The security components built into a security platform need to work together as a single solution ­– not the sort of loose affiliation most platforms provide – to enable extremely fast threat intelligence collection, correlation, and response. That security platform also needs to support common standards and APIs so third-party tools can be added and supported. And finally, these platforms need to be able to work together, regardless of their location or form factor, to create a single, unified security fabric. It's important to note that many cloud providers have developed their own custom hardware, such as Google's TPU, Amazon's Inferentia, and Microsoft's Corsica, to accelerate cloud functions. As a result, hardware acceleration on physical security platforms is essential to ensure consistent performance for data moving between physical and cloud environments - -And finally, security platforms need to be automated. Support for automated workflows and AI-enhanced security operations can significantly accelerate the speed of threat detection, analysis, and response. But like other processing-intensive functions, such as decrypting traffic for deep inspection, these functions also need specialized and purpose-built processors or they will become innovation-killing bottlenecks. - -**ZK: What's next for network security?** - -JM: This is just the start. As networking functions begin to converge even further, creating the next generation of smart environments – smart buildings, smart cities, and smart critical infrastructures – the lack of viable security tools capable of inspecting and protecting these hyperfast, hyperconnected, and hyper-scalable environments will seriously impact our digital economy and way of life. - -Security vendors need to understand this challenge and begin investing now in developing advanced hardware and security-driven networking technologies. Organizations aren't waiting for vendors to catch up so they can secure their networks of tomorrow. Their networks are being left exposed right now because the software-based security solutions they have in place are just not adequate. And it's up to the security industry to step up and solve this challenge. - -Join the Network World communities on [Facebook][5] and [LinkedIn][6] to comment on topics that are top of mind. - --------------------------------------------------------------------------------- - -via: https://www.networkworld.com/article/3531929/as-the-network-evolves-enterprises-need-to-rethink-security.html - -作者:[Zeus Kerravala][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://www.networkworld.com/author/Zeus-Kerravala/ -[b]: https://github.com/lujun9972 -[1]: https://www.networkworld.com/article/3236448/lan-wan/what-to-consider-when-deploying-a-next-generation-firewall.html -[2]: https://www.networkworld.com/newsletters/signup.html -[3]: https://www.networkworld.com/article/3487720/the-vpn-is-dying-long-live-zero-trust.html -[4]: https://pluralsight.pxf.io/c/321564/424552/7490?u=https%3A%2F%2Fwww.pluralsight.com%2Fpaths%2Fcertified-information-systems-security-professional-cisspr -[5]: https://www.facebook.com/NetworkWorld/ -[6]: https://www.linkedin.com/company/network-world diff --git a/sources/talk/20200316 How to be the right person for DevOps.md b/sources/talk/20200316 How to be the right person for DevOps.md deleted file mode 100644 index 02cdf8bedb..0000000000 --- a/sources/talk/20200316 How to be the right person for DevOps.md +++ /dev/null @@ -1,108 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (How to be the right person for DevOps) -[#]: via: (https://opensource.com/article/20/3/devops-relationships) -[#]: author: (Josh Atwell https://opensource.com/users/joshatwell) - -How to be the right person for DevOps -====== -Creating healthy relationships is the essential ingredient in DevOps -success. -![Team meeting][1] - -In my kitchen, we have a sign that reads "Marriage is more than finding the right person. It is being the right person." It serves as a great reminder of the individual responsibility everyone has in any healthy relationship. As organizations adopt [DevOps][2] as a model of developing and delivering value to customers, the impact of healthy relationships is extremely important for success. - -![Marriage sign][3] - -Historically, the relationship between development and operations teams has been unhealthy. Poor communication, limited empathy, and a history of mistrust make merging these teams into a tighter operating model challenging, to say the least. This is not entirely unfair to either side. - -Developers have long been frustrated by lead times and processes put in place by the operations organization. They just want to work, and they often see operations as an anchor on the ship of progress. - -Operations professionals have long been frustrated by the impatience and lack of clear requirements that come from development teams. They are often confused about why those teams are not able to use the available services and processes. They see developers as a liability to their ability to maintain stable services for customers and the business. - -A lingering gap here is that each side has been focused on protecting its own perspective. They emphasize how the other team is not being what _they_ need, and they never question whether they, too, could be doing something different. - -In DevOps, all sides must frame their role in the organization based on how they add value to others. - -There are a few things that everyone, including managers and leaders, can do right away to become a better contributor and partner in their DevOps relationships. - -### Communicate - -Most professionals in an organization adopting DevOps find themselves needing to work closely with new people, ones they have had limited exposure to in the past. It is important for everyone to take time to get to know their new teammates and learn more about their concerns, their interests, and also their preferred communication style. - -Successful communication in new relationships is often built on simply listening more and talking less. Our natural tendency is to talk about ourselves. Most people love sharing what they know best. However, it is extremely important to make more room to listen. - -Hearing someone is not the same as listening to them. I'm confident that we have all been in the situation where someone expresses a concern that we do not entirely internalize. Also, merely hearing does not encourage people to share–or to share as completely as they should. - -![Stick figures hearing][4] - -It is important to listen actively. Repeat what you hear, and seek validation that what you repeat is what they wanted you to understand. Once you understand their concern, it is important to make your initial response a selfless one. Even if you can't completely solve the problem, demonstrate sympathy and help the person move towards a solution. - -![Stick figures listening][5] - -### Selflessness - -Another key relationship challenge as organizations adopt DevOps is developing a perspective of selflessness. In DevOps, most people are responsible for delivering value to a wide variety of other people. Each person should begin by considering how their actions and work impact other people. - -This service mindset carries forward when you become more sensitive to when others are in need and then dedicate time in your schedule specifically for the purpose of helping them. This can be as simple as creating a small improvement in a process or helping to troubleshoot an issue. A positive side effect is that this effort will provide you more opportunities to work with others and develop deeper trust. - -It is also important not to hoard knowledge—either technical or institutional—especially when people ask questions or seek help. Maintain the mindset that there are no stupid questions. - -![Stick figure apologizing][6] - -Finally, selflessness includes being trustworthy. It is difficult to maintain a healthy relationship when there is no trust. Be honest and transparent. In IT, this is often seen as a liability, but in DevOps it is a requirement for success. - -### Self-care - -In order to be a strong contributor to a relationship, it is necessary to maintain a sense of self. Our individuality provides the diversity a relationship needs to grow. Make sure you maintain and share your interests with others. Be more than just the work you do. Apply your interests to your work. - -You are no good to others if you are not good to yourself. Healthy relationships are stronger with healthy people. Make sure you take time to enjoy your interests and recharge. Take your vacation and leave work behind! - -![Stick figure relaxing][7] - -I am also a strong advocate for mental health days. Sometimes our mental health is not sufficient to work effectively. You're not as effective when you are physically ill, and you're not as effective when your head is not 100%. Work with your manager and your team to support each other to maintain good mental health. - -Mental health is improved by learning. Invest in yourself and expand your knowledge. DevOps ideally needs "t-shaped" people who have depth on a topic and also broader system knowledge. Work to increase your depth, but balance that by learning new things about your environment. This knowledge can come from your teammates and create operational sympathy. - -![Stick figure with open arms][8] - -Finally, healthy relationships are not all work and no play. Take time to acknowledge the successes of others. If you know your team, you likely know how individuals prefer to receive praise. Respect those preferences, but always strive to praise vocally where possible. - -![Stick figures celebrating][9] - -Make sure to celebrate these successes as a team. All work and no play makes everyone dull. Celebrate milestones together as a team, and then articulate and target the next objectives. - -### Be the right person - -DevOps requires more from every individual, and its success is directly tied to the health of relationships. Each member of the organization should apply these techniques to grow and improve themselves. A focus on being the right person for the team will build stronger bonds and make the organization better equipped to reach its goals. - -* * * - -_This article is based on [a talk][10] Josh Atwell gave at All Things Open 2019._ - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/3/devops-relationships - -作者:[Josh Atwell][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/joshatwell -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/meeting-team-listen-communicate.png?itok=KEBP6vZ_ (Team meeting) -[2]: https://opensource.com/tags/devops -[3]: https://opensource.com/sites/default/files/uploads/marriage.png (Marriage sign) -[4]: https://opensource.com/sites/default/files/uploads/hearing.png (Stick figures hearing) -[5]: https://opensource.com/sites/default/files/uploads/listening.png (Stick figures listening) -[6]: https://opensource.com/sites/default/files/uploads/apologize.png (Stick figure apologizing) -[7]: https://opensource.com/sites/default/files/uploads/relax.png (Stick figure relaxing) -[8]: https://opensource.com/sites/default/files/uploads/open_0.png (Stick figure with open arms) -[9]: https://opensource.com/sites/default/files/uploads/celebrate.png (Stick figures celebrating) -[10]: https://opensource.com/article/20/1/devops-empathy diff --git a/sources/talk/20200317 -AI everywhere- IoT chips coming from Arm.md b/sources/talk/20200317 -AI everywhere- IoT chips coming from Arm.md deleted file mode 100644 index a5e61bce6d..0000000000 --- a/sources/talk/20200317 -AI everywhere- IoT chips coming from Arm.md +++ /dev/null @@ -1,61 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: ('AI everywhere' IoT chips coming from Arm) -[#]: via: (https://www.networkworld.com/article/3532094/ai-everywhere-iot-chips-coming-from-arm.html) -[#]: author: (Patrick Nelson https://www.networkworld.com/author/Patrick-Nelson/) - -'AI everywhere' IoT chips coming from Arm -====== -Two new microprocessors from Arm promise to miniaturize artificial intelligence. -Healthcare - -Silicon microchip maker Arm is working on a new semiconductor design that it says will enable machine learning, at scale, on small sensor devices. Arm has completed testing of the technology and expects to bring it to market next year. - -Artificial intelligence, implemented locally on "billions and ultimately trillions" of devices is coming, the company says in a [press release][1]. Arm Holdings, owned by Japanese conglomerate Softbank, says its partners have shipped more than 160 billion Arm-based chips to date, and that 45 million of its microprocessor designs are being placed within electronics every day. - -The new machine-learning silicon will include micro neural processing units (microNPU) that can be used to identify speech patterns and perform other AI tasks. Importantly, the processing is accomplished on-device and in smaller form factors than have so far been available. The chips don't need the cloud or any network. - -[RELATED: Auto parts supplier has big plans for its nascent IoT effort][2] - -Arm, which historically has been behind mobile smartphone microchips, is aiming this design – the Cortex M55 processor, paired with the Ethos-U55, Arm's first microNPU – at Internet of Things instead. - -"Enabling AI everywhere requires device makers and developers to deliver machine learning locally on billions, and ultimately trillions of devices," said Dipti Vachani, senior vice president and general manager of Arm's automotive and IoT areas, in a statement. "With these additions to our AI platform, no device is left behind as on-device ML on the tiniest devices will be the new normal, unleashing the potential of AI securely across a vast range of life-changing applications." - -Arm wants to take advantage of the autonomous nature of chip-based number crunching, as opposed to doing it in the cloud. Privacy-conscious (and regulated) healthcare is an example of a vertical that might like the idea of localized processing.  - -Functioning AI without cloud dependence isn't entirely new. Intel's [Neural Compute Stick 2][3], a $69 self-contained computer vision and deep learning development kit, doesn't need it, for example. - -**[ [Get certified as an Apple Technical Coordinator with this seven-part online course from PluralSight.][4] ]** - -Arm is also going for power savings with its new AI technology. Not requiring a data network can mean longer battery life for the sensor— only the calculated results need to be sent, rather than every bit. Much of the time, raw sensor data is irrelevant and can be discarded. Arm's new endpoint ML technologies are going to help microcontroller developers "accelerate edge inference in devices limited by size and power," said Geoff Lees, senior vice president of edge processing at IoT semiconductor company [NXP][5], in the announcement.  - -Enabling machine learning in power-constrained settings and eliminating the need for network connectivity mean the sensor can be placed where there isn't a hardy power supply. Latency advantages and cost advantages also can come into play. - -"These devices can run neural network models on batteries for years, and deliver low-latency inference directly on the device," said Ian Nappier, product manager of TensorFlow Lite for Microcontrollers at Google, in a statement to Arm. [TensorFlow][6] is an open-source machine learning platform that's been used for detecting respiratory diseases, among other things. - -Join the Network World communities on [Facebook][7] and [LinkedIn][8] to comment on topics that are top of mind. - --------------------------------------------------------------------------------- - -via: https://www.networkworld.com/article/3532094/ai-everywhere-iot-chips-coming-from-arm.html - -作者:[Patrick Nelson][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://www.networkworld.com/author/Patrick-Nelson/ -[b]: https://github.com/lujun9972 -[1]: https://www.arm.com/company/news/2020/02/new-ai-technology-from-arm -[2]: https://www.networkworld.com/article/3098084/internet-of-things/auto-parts-supplier-has-big-plans-for-its-nascent-iot-effort.html#tk.nww-fsb -[3]: https://store.intelrealsense.com/buy-intel-neural-compute-stick-2.html -[4]: https://pluralsight.pxf.io/c/321564/424552/7490?u=https%3A%2F%2Fwww.pluralsight.com%2Fpaths%2Fapple-certified-technical-trainer-10-11 -[5]: https://www.nxp.com/company/our-company/about-nxp:ABOUT-NXP -[6]: https://www.tensorflow.org/ -[7]: https://www.facebook.com/NetworkWorld/ -[8]: https://www.linkedin.com/company/network-world diff --git a/sources/talk/20200319 Electronics should sweat to cool down, say researchers.md b/sources/talk/20200319 Electronics should sweat to cool down, say researchers.md deleted file mode 100644 index ae2bce3e22..0000000000 --- a/sources/talk/20200319 Electronics should sweat to cool down, say researchers.md +++ /dev/null @@ -1,61 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Electronics should sweat to cool down, say researchers) -[#]: via: (https://www.networkworld.com/article/3532827/electronics-should-sweat-to-cool-down-say-researchers.html) -[#]: author: (Patrick Nelson https://www.networkworld.com/author/Patrick-Nelson/) - -Electronics should sweat to cool down, say researchers -====== -Scientists think that in much the same way the human body releases perspiration to cool down, special materials might release water to draw heat from electronics. -rclassenlayouts / Aleksei Derin / Getty Images - -Computing devices should sweat when they get too hot, say scientists at Shanghai Jiao Tong University in China, where they have developed a materials application they claim will cool down devices more efficiently and in smaller form-factors than existing fans. - -It’s “a coating for electronics that releases water vapor to dissipate heat from running devices,” the team explain in a news release. “Mammals sweat to regulate body temperature,” so should electronics, they believe. - -[[Get regularly scheduled insights by signing up for Network World newsletters.]][1] - -The group’s focus has been on studying porous materials that can absorb moisture from the environment and then release water vapor when warmed. MIL-101(Cr) checks the boxes, they say. The material is a metal organic framework, or MOF, which is a sorbent, a material that stores large amounts of water. The higher the water capacity one has, the greater the dissipation of heat when it's warmed. - -MOF projects have been attempted before. “Researchers have tried to use MOFs to extract water from the desert air,” says refrigeration-engineering scientist Ruzhu Wang, who is senior author of a paper on the university’s work that has just been [published in Joule][2]. - -Their proof-of-concept test involved applying a micrometers-thin coating of MIL-101(Cr) to metallic substrates that resulted in temperature drops of up to 8.6 degrees Celsius for 25 minutes, according to the abstract for their paper. - -That’s “a significant improvement compared to that of traditional PCMs,” they say. Phase change materials (PCM) include waxes and fatty acids that are used in electronics and melt to absorb heat. They are used in smartphones, but the solid-to-liquid transition doesn’t exchange all that much energy. - -“In contrast, the liquid-vapor transition of water can exchange 10 times the energy compared to that of PCM solid-liquid transition.” Plus the material used recovers almost immediately to start sweating again, just like a mammal. - -[][3] - -Shanghai Jiao Tong University isn’t the only school looking into sweat for future tech. Cornell University says it wants to get robots to sweat to bring their temperature below ambient. Researchers there say they have built a 3D-printed, sweating robot muscle. It [manages its own temperature][4], and they think it will one day let robots run for extended periods without overheating. - -Soft robots, which are the kind preferred by many developers for their flexibility, hold more heat than metal ones. As in electronic devices such as smartphones and IoT sensors, fans aren’t ideal because they take up too much space. That’s why new materials applications are being studied. - -The Cornell robot group uses light to cure resin into shapes that control the flow of heat. A base layer “smart sponge” made of poly-N-isopropylacrylamide retains water and squeezes it through fabricated, dilated pores when heated. The pores then close automatically when cooled. - -“Just when it seemed like robots couldn’t get any cooler,” the group says. - -Join the Network World communities on [Facebook][5] and [LinkedIn][6] to comment on topics that are top of mind. - --------------------------------------------------------------------------------- - -via: https://www.networkworld.com/article/3532827/electronics-should-sweat-to-cool-down-say-researchers.html - -作者:[Patrick Nelson][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://www.networkworld.com/author/Patrick-Nelson/ -[b]: https://github.com/lujun9972 -[1]: https://www.networkworld.com/newsletters/signup.html -[2]: https://www.cell.com/joule/fulltext/S2542-4351(19)30590-2 -[3]: https://www.networkworld.com/blog/itaas-and-the-corporate-storage-technology/?utm_source=IDG&utm_medium=promotions&utm_campaign=HPE22140&utm_content=sidebar (ITAAS and Corporate Storage Strategy) -[4]: https://news.cornell.edu/stories/2020/01/researchers-create-3d-printed-sweating-robot-muscle -[5]: https://www.facebook.com/NetworkWorld/ -[6]: https://www.linkedin.com/company/network-world diff --git a/sources/talk/20200320 Cisco warns of five SD-WAN security weaknesses.md b/sources/talk/20200320 Cisco warns of five SD-WAN security weaknesses.md deleted file mode 100644 index 6055b6c53b..0000000000 --- a/sources/talk/20200320 Cisco warns of five SD-WAN security weaknesses.md +++ /dev/null @@ -1,74 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Cisco warns of five SD-WAN security weaknesses) -[#]: via: (https://www.networkworld.com/article/3533550/cisco-warns-of-five-sd-wan-security-weaknesses.html) -[#]: author: (Michael Cooney https://www.networkworld.com/author/Michael-Cooney/) - -Cisco warns of five SD-WAN security weaknesses -====== -Cisco warnings include three high-impact SD-WAN vulnerabilities -[Jaredd Craig][1] [(CC0)][2] - -Cisco has issued five  warnings about security weaknesses in its [SD-WAN][3] offerings, three of them on the high-end of the vulnerability scale. - -The worst problem is with the command-line interface (CLI) of its [SD-WAN][4] Solution software where a weakness could let a local attacker inject arbitrary commands that are executed with root privileges, Cisco [wrote.][5] - -[[Get regularly scheduled insights by signing up for Network World newsletters.]][6] - -An attacker could exploit this vulnerability – which has a 7.8 out if 10 on  the Common Vulnerability Scoring System – by authenticating to the device and submitting crafted input to the CLI utility. The attacker must be authenticated to access the CLI utility. The vulnerability is due to insufficient input validation, Cisco wrote. - -Another high warning problem lets an authenticated, local attacker elevate privileges to root on the underlying operating system.  An attacker could exploit this vulnerability by sending a crafted request to an affected system. A successful exploit could allow the attacker to gain root-level privileges, Cisco [wrote][7].  The vulnerability is due to insufficient input validation. - -The third high-level vulnerability in the SD-WAN Solution software could let an attacker cause a buffer overflow on an affected device. An attacker could exploit this vulnerability by sending crafted traffic to an affected device. A successful exploit could allow the attacker to gain access to information that they are not authorized to access and make changes to the system that they are not authorized to make, Cisco [wrote][8]. - -The vulnerabilities affect a number of Cisco products if they are running a Cisco SD-WAN Solution software release earlier than Release 19.2.2: vBond Orchestrator Software, vEdge 100-5000 Series Routers, vManage Network Management System and vSmart Controller Software. - -Cisco said there were no workarounds for any of the vulnerabilities and it suggested users accept automatic software updates to allay exploit risks. There are [software fixes for the problems][9] as well.  - -**[ [Prepare to become a Certified Information Security Systems Professional with this comprehensive online course from PluralSight. Now offering a 10-day free trial!][10] ]** - -All three of the high-level warnings were reported to Cisco by the Orange Group, Cisco said. - -The other two SD-WAN Solution software warnings – with medium threat levels -- include a one that allows a cross-site scripting (XSS) attack against the web-based management interface of the vManage software and SQL injection threat. - -The [XXS vulnerability][11] is due to insufficient validation of user-supplied input by the web-based management interface. An attacker could exploit this vulnerability by persuading a user of the interface to click a crafted link. A successful exploit could allow the attacker to execute arbitrary script code in the context of the interface or to access sensitive, browser-based information. - -The SQL vulnerability exists because the web UI improperly validates SQL values. An attacker could exploit this vulnerability by authenticating to the application and sending malicious SQL queries to an affected system. A successful exploit could let the attacker  modify values on, or return values from, the underlying database as well as the operating system, Cisco [wrote][12]. - -Cisco recognized Julien Legras and Thomas Etrillard of Synacktiv for reporting the problems. - -The company said release 19.2.2 of the [Cisco SD-WAN Solution][13] contains fixes for all five vulnerabilities. - -Join the Network World communities on [Facebook][14] and [LinkedIn][15] to comment on topics that are top of mind. - --------------------------------------------------------------------------------- - -via: https://www.networkworld.com/article/3533550/cisco-warns-of-five-sd-wan-security-weaknesses.html - -作者:[Michael Cooney][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://www.networkworld.com/author/Michael-Cooney/ -[b]: https://github.com/lujun9972 -[1]: https://unsplash.com/photos/T15gG5nA9Xk -[2]: https://creativecommons.org/publicdomain/zero/1.0/ -[3]: https://www.networkworld.com/article/3031279/sd-wan-what-it-is-and-why-you-ll-use-it-one-day.html -[4]: https://www.networkworld.com/article/3527194/multicloud-security-integration-drive-massive-sd-wan-adoption.html -[5]: https://tools.cisco.com/security/center/content/CiscoSecurityAdvisory/cisco-sa-sdwclici-cvrQpH9v -[6]: https://www.networkworld.com/newsletters/signup.html -[7]: https://tools.cisco.com/security/center/content/CiscoSecurityAdvisory/cisco-sa-sdwpresc-ySJGvE9 -[8]: https://tools.cisco.com/security/center/content/CiscoSecurityAdvisory/cisco-sa-sdwanbo-QKcABnS2 -[9]: https://software.cisco.com/download/home -[10]: https://pluralsight.pxf.io/c/321564/424552/7490?u=https%3A%2F%2Fwww.pluralsight.com%2Fpaths%2Fcertified-information-systems-security-professional-cisspr -[11]: https://tools.cisco.com/security/center/content/CiscoSecurityAdvisory/cisco-sa-20200318-vmanage-xss -[12]: https://tools.cisco.com/security/center/content/CiscoSecurityAdvisory/cisco-sa-20200318-vmanage-cypher-inject -[13]: https://www.cisco.com/c/en/us/solutions/enterprise-networks/sd-wan/index.html#~benefits -[14]: https://www.facebook.com/NetworkWorld/ -[15]: https://www.linkedin.com/company/network-world diff --git a/sources/talk/20200320 How technical debt is risking your security.md b/sources/talk/20200320 How technical debt is risking your security.md deleted file mode 100644 index 899696c7d3..0000000000 --- a/sources/talk/20200320 How technical debt is risking your security.md +++ /dev/null @@ -1,85 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (How technical debt is risking your security) -[#]: via: (https://opensource.com/article/20/3/remove-security-debt) -[#]: author: (Sam Bocetta https://opensource.com/users/sambocetta) - -How technical debt is risking your security -====== -A few security fixes now will help lighten the load of future developers -using your software. -![A lock on the side of a building][1] - -Everyone knows they shouldn't take shortcuts, especially in their work, and yet everyone does. Sometimes it doesn't matter, but when it comes to code development, though, it definitely does. - -As any experienced programmer knows, building your code the quick and dirty way soon leads to problems down the line. These issues might not be disastrous, but they incur a small penalty every time you want to develop your code further. - -This is the basic idea behind [technical debt][2], a term first coined by well-known programmer Ward Cunningham. Technical debt is a metaphor that explains the long-term burden developers and software teams incur when taking shortcuts, and has become a popular way to think about the extra effort that we have to do in future development because of the quick and dirty design choice. - -"Security Debt" is an extension of this idea, and in this article, we'll take a look at what the term means, why it is a problem, and what you can do about it. - -### What is security debt? - -To get an idea of how security debt works, we have to consider the software development lifecycle. Today, it's very rare for developers to start with a blank page, even for a new piece of software. At the very least, most programmers will start a new project with open source code copied from online repositories. - -They will then adapt and change this code to make their project. While they are doing this, there will be many points where they notice a security vulnerability. Something as simple as an error establishing a database connection can be an indication that systems are not playing well together, and that someone has taken a fast and dirty approach. - -Then they have two options: they can either take an in-depth look at the code they are working with, and fix the issue at a fundamental level, or they can quickly paste extra code over the top that gets around the problem in a quick, inefficient way. - -Given the demands of today's development environment, most developers choose the second route, and we can't blame them. The problem is that the next person who looks at the code is going to have to spend longer working out how it operates. - -Time, as we all know, is money. Because of this, each time software needs to be changed, there will be a small cost to make it secure due to previous developers taking shortcuts. This is security debt. - -### How security debt threatens your software - -There was a time when security debt was not a huge problem, at least not in the open source community. A decade ago, open source components had lifetimes measured in years and were freely available to everyone. - -This meant that security issues in legacy code got fixed. Today, the increased speed of the development lifecycle and the increasingly censored internet means that developers can no longer trust third party code to the degree they used to. - -This has led to a considerable increase in security debt for developers using open source components. Veracode's latest [State of Software Security (SOSS)][3] report found that security issues in open source software take about a month longer to be fixed than those in software that is sourced internally. Insourced software recorded the highest fix rates, but even software sourced from external contractors gets fixed faster, by about two weeks, than open source software. - -The ultimate outcome of this – and one that the term "security debt" captures very well – is that most companies currently face security vulnerabilities throughout their entire software stack, and these are accumulating faster than they are fixed. In other words, developers have maxed out their security debt credit card, and are drowning in the debt they've incurred. This is particularly concerning when you consider that total household debt [reached nearly $14 trillion][4] in the United States alone in 2019. - -### How to avoid security debt - -Avoiding a build-up of security debt requires that developers take a different approach to security than the one that is prevalent in the industry at the moment. Proven methods such as zero-knowledge cloud encryption, VPNs to promote online anonymity, and network intrusion prevention software are great, but they may also not be enough. - -In fact, there might have been some developers who were scratching their heads during our definition of security debt above: how many of us think about the next poor soul who will have to check our code for security flaws? - -Changing that way of thinking is key to preventing a build-up of security debt. Developers should take the time to thoroughly [check their software for security vulnerabilities][5], not just during development, but after the release as well. Fix any errors now, rather than waiting for security holes to build up. - -If that instruction sounds familiar, then well done. A continuity approach to software development is a critical component of [layering security through DevOps][6], and one of the pillars of the emerging discipline of DevSecOps. Along with [chaos engineering][7], these approaches seek to integrate security into development, testing, and assessment processes, and thereby prevent a build-up of security debt. - -Just like a credit card, the key to avoiding security debt getting out of control is to avoid the temptation to take shortcuts in the first place. That's easier said than done, of course, but one of the key lessons from recent data breaches is that legacy systems that many developers assume are secure are just as full of shortcuts as recently written code. - -### Measure twice, cut once - -Since [security by default hasn't arrived yet][8], we must all try and do things properly in the future. Taking the fast, dirty approach might mean that you get to leave the office early, but ultimately that decision will come back to bite you. - -If you finish early anyway, well done: you can use the time to read [our best articles on security][9] and check whether your code is as secure as you think it is. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/3/remove-security-debt - -作者:[Sam Bocetta][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/sambocetta -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/BUSINESS_3reasons.png?itok=k6F3-BqA (A lock on the side of a building) -[2]: https://opensource.com/article/17/10/why-i-love-technical-debt -[3]: https://www.veracode.com/state-of-software-security-report -[4]: https://thetokenist.io/financial-statistics/ -[5]: https://opensource.com/article/17/6/3-security-musts-software-developers -[6]: https://opensource.com/article/19/9/layered-security-devops -[7]: https://www.infoq.com/articles/chaos-engineering-security-networking/ -[8]: https://opensource.com/article/20/1/confidential-computing -[9]: https://opensource.com/article/19/12/security-resources diff --git a/sources/talk/20200321 3 metrics to measure your open source community health.md b/sources/talk/20200321 3 metrics to measure your open source community health.md deleted file mode 100644 index 57e3f7ae5f..0000000000 --- a/sources/talk/20200321 3 metrics to measure your open source community health.md +++ /dev/null @@ -1,110 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (3 metrics to measure your open source community health) -[#]: via: (https://opensource.com/article/20/3/community-metrics) -[#]: author: (Kevin Xu https://opensource.com/users/kevin-xu) - -3 metrics to measure your open source community health -====== -Community building is critical to the success of any open source -project. Here's how to evaluate your community's health and strengthen -it. -![Green graph of measurements][1] - -Community building is table stakes in the success of any open source project. Even outside of open source, community is considered a competitive advantage for businesses in many industries—from retail, to gaming, to fitness. (For a deeper dive, see "[When community becomes your competitive advantage][2]" in the _Harvard Business Review_.) - -However, open source community building—especially offline activities—is notoriously hard to measure, track, and analyze. While we've all been to our fair share of meetups, conferences, and "summits" (and probably hosted a few of them ourselves), were they worth it? Did the community meaningfully grow? Was printing all those stickers and swags worth the money? Did we collect and track the right numbers to measure progress? - -To develop a better framework for measuring community, we can look to a different industry for guidance and fresh ideas: political campaigns. - -### My metrics start with politics - -I started my career in political campaigns in the US as a field organizer (aka a low-level staffer) for then-candidate Senator Obama in 2008. Thinking back, a field organizer's job is basically community building in a specifically assigned geographical area that your campaign needs to win. My day consisted of calling supporters to do volunteer activities, hosting events to gather supporters, bringing in guest speakers (called "surrogates" in politics) to events, and selling the vision and plan of our candidate (essentially our "product"). - -Another big chunk of my day was doing data entry. We logged everything: interactions on phone conversations with voters, contact rates, event attendance, volunteer recruitment rates, volunteer show-up rates, and myriad other numbers to constantly measure our effectiveness. - -Regardless of your misgivings about politics in general or specific politicians, the winning campaigns that lead to political victories are all giant community-building exercises that are data-driven, meticulously measured, and constantly optimized. They are well-oiled community-building machines. - -When I entered the world of open source a few years ago, the community-building part felt familiar and natural. What surprised me was how little community building as an operation is quantified and measured—especially with offline activities. - -### Three metrics to track - -Taking a page from the best-run political campaigns I've seen, here are the three most important metrics for an open source community to track and optimize: - - * Number of **community ambassadors** - * Number of **return attendees** (people who attend your activities two times or more) - * Rate of **churned attendees** (the percentage of people who attend your activities only once or say they will come but don't show up) - - - -If you're curious, the corresponding terms on a political campaign for these three metrics are typically community captains, super volunteers, and flake rate. - -#### Community ambassadors - -A "community ambassador" is a user or enthusiast of your project who is willing to _consistently_ host local meetups or activities where she or he lives. Growing the number of community ambassadors and supporting them with resources and guidance are core to your community's strength and scale. You can probably hire for these if you have a lot of funding, but pure volunteers speak more to your project's allure. - -These ambassadors should be your best friends, where you understand inside and out why they are motivated to evangelize your project in front of both peers and strangers. Their feedback on your project is also valuable and should be a critical part of your development roadmap and process. You can strategically cultivate ambassadors in different tech hubs geographically around the world, so your project can count on someone with local knowledge to reach and serve users of different business cultures with different needs. The beauty of open source is that it's global by default; take advantage of it! - -Some cities are arguably more of a developer hub than others. Some to consider are Amsterdam, Austin, Bangalore, Beijing, Berlin, Hangzhou, Istanbul, London, NYC, Paris, Seattle, Seoul, Shenzhen, Singapore, São Paulo, San Francisco-Bay Area, Vancouver, Tel Aviv, Tokyo, and Toronto (listed alphabetically and based on feedback I got through social media. Please add a comment if I missed any!). An example of this is the [Cloud Native Ambassadors program][3] of the Cloud Native Computing Foundation. - -#### Return attendees - -The number of return attendees is crucial to measuring the usefulness or stickiness of your community activities. Tracking return attendees is how you can draw a meaningful line between "the curious" and "the serious." - -Trying to grow this number should be an obvious goal. However, that's not the only goal. This is the group whose motivation you want to understand the clearest. This is the group that reflects your project's user persona. This is the group that can probably give you the most valuable feedback. This is the group that will become your future community ambassadors. - -Putting it differently, this is your [1,000 true fans][4] (if you can keep them). - -Having hosted and attended my fair share of these community meetups, my observation is that most people attend to be educated on a technical topic, look for tools to solve problems at work, or network for their next job opportunity. What they are not looking for is being "marketed to." - -There is a growing trend of developer community events becoming marketing events, especially when companies are flush with funding or have a strong marketing department that wants to "control the message." I find this trend troubling because it undermines community building. - -Thus, be laser-focused on technical education. If a developer community gets taken over by marketing campaigns, your return-attendees metric won't be pretty. - -#### Churned attendees rate - -Tracking churned attendees is the flipside of the returned-attendees coin, so I won't belabor the point. These are the people that join once and then disappear or who show interest but don't show up. They are important because they tell you what isn't working and for whom, which is more actionable than just counting the people who show up. - -One note of caution: Be brutally honest when measuring this number, and don't fool yourself (or others). On its own, if someone signs up but doesn't show up, it doesn't mean much. Similarly, if someone shows up once and never comes back, it doesn't mean much. Routinely sit down and assess _why_ someone isn't showing up, so you can re-evaluate and refine your community program and activities. Don't build the wrong incentives into your community-building operation to reward the wrong metric. - -### Value of in-person connections - -I purposely focused this post on measuring offline community activities because online activities are inherently more trackable and intuitive to digital-native open source creators. - -Offline community activities are essential to any project's journey to reaching traction and prominence. I have yet to see a successful project that does not have a sizable offline presence, regardless of its online popularity. - -Why is this the case? Why can't an open source community, usually born online, just stay and grow online? - -Because technology choice is ultimately a human decision; therefore, face-to-face interaction is an irreplaceable element of new technology adoption. No one wants to be the guinea pig. No one wants to be the first. The most effective way to not feel like the first is to literally _see_ other human beings trying out or being interested in the same thing. - -Being in the same room as other developers, learning about the same project, and doing that regularly is the most effective way to build trust for a project. And with trust comes traction. - -### These three metrics work - -There are other things you _can_ track, but more data does not necessarily mean clearer insight. Focusing your energy on these three metrics will make the most impact on your community-building operation. An open source community where the _number of ambassadors and return attendees are trending up_ and the _churned attendees rate is trending down_ is one that's healthy and growing in the right way. - -* * * - -_This article originally appeared on_ _[COSS Media][5]_ _and is republished with permission._ - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/3/community-metrics - -作者:[Kevin Xu][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/kevin-xu -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/metrics_lead-steps-measure.png?itok=DG7rFZPk (Green graph of measurements) -[2]: https://hbr.org/2020/01/when-community-becomes-your-competitive-advantage -[3]: https://www.cncf.io/people/ambassadors/ -[4]: https://kk.org/thetechnium/1000-true-fans/ -[5]: https://coss.media/how-to-measure-community-building/ diff --git a/sources/talk/20200321 Coronavirus challenges capacity, but core networks are holding up.md b/sources/talk/20200321 Coronavirus challenges capacity, but core networks are holding up.md deleted file mode 100644 index 918ca93df3..0000000000 --- a/sources/talk/20200321 Coronavirus challenges capacity, but core networks are holding up.md +++ /dev/null @@ -1,107 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Coronavirus challenges capacity, but core networks are holding up) -[#]: via: (https://www.networkworld.com/article/3533438/coronavirus-challenges-capacity-but-core-networks-are-holding-up.html) -[#]: author: (Michael Cooney https://www.networkworld.com/author/Michael-Cooney/) - -Coronavirus challenges capacity, but core networks are holding up -====== -COVID-19 has sent thousands of employees to work from home, placing untold stress on remote-access networks. -Cicilie Arcurs / Getty Images - -As the coronavirus continues to spread and more people work from home, the impact of the increased traffic on networks in the US so far seems to be minimal. - -No doubt that web, VPN and data usage is growing dramatically with the [influx of remote workers][1].  For example, Verizon said it has seen a 34% increase in VPN traffic from March 10 to 17.  It has also seen a 75% increase in gaming traffic, and web traffic increased by just under 20% in that time period, according to Verizon. - -[[Get regularly scheduled insights by signing up for Network World newsletters.]][2] - -Verizon said its fiber optic and wireless networks “have been able to meet the shifting demands of customers and continue to perform well. In small pockets where there has been a significant increase in usage, our engineers have quickly added capacity to meet customers’ demand.” - -“As we see more and more individuals work from home and students engage in online learning, it is a natural byproduct that we would see an increase in web traffic and access to VPN. And as more entertainment options are cancelled in communities across the US, an increase in video traffic and online gaming is not surprising,” said Kyle Malady, Chief Technology Officer for Verizon in a [statement][3]. “We expect these peak hour percentages to fluctuate, so our engineers are continuing to closely monitor network usage patterns 24x7 and stand ready to adjust resources as changing demands arise." - -As of March 16, AT&T said that its network continues to perform well. “In cities where the coronavirus has had the biggest impact, we are seeing fewer spikes in wireless usage around particular cell towers or particular times of day because more people are working from home rather than commuting to work and fewer people are gathering in large crowds at specific locations.” - -In Europe, Vodaphone say it has seen an 50% increase in data traffic in some markets. - -“COVID-19 is already having a significant impact on our services and placing a greater demand on our network,” the company said in a statement. “Our technology teams throughout Europe have been focusing on capacity across our networks to make sure they are resilient and can absorb any new usage patterns arising as more people start working from home.” - -[][4] - -In Europe there have also been indications of problems.  - -Ireland-based [Spearline][5], which monitors international phone numbers for connectivity and audio quality, said this week that Italy's landline connection rate continues to be volatile with as much as a 10% failure rate and audio quality is running approximately 4% below normal levels.  - -Other Spearline research says: - - * Spain saw a drop in connection rates to 98.5% on March 16, but it is improving again. - * France saw a dip in connection rates approaching 5% on March17. Good quality has been maintained overall, though periodic slippage has been observed. - * Germany saw a 1.7% connection-failure rate March 17.  Good quality has been maintained, though periodic slippage has been observed. - - - -Such problems are not showing up in the US at this point, Spearline said. - -“The US is Spearline's most tested market with test calls over three main sectors being enterprise, unified communications and carrier. To date, there has been no significant impact on either the connection rates or the audio quality on calls throughout the US,” said Matthew Lawlor, co-founder and chief technical officer at Spearline.  - -The future impact is the real unknown of course, Lawlor said. - -“There are many potential issues which have happened in other countries which may have a similar impact on US infrastructure. For example, in many countries there have been hardware issues where engineers are unable to get physical access to resolve the issue,” Lawlor said.   “While rerouting calls may help resolve issues it does put more pressure on other segments of your network.” - -On March 19, one week after the CDC declarated the virus as pandemic, data analytics and broadband vendor OpenVault wrote: - - * Subscribers’ average usage from 9 a.m. to 5 p.m. has risen to 6.3 GB, 41.4% higher than the January figure of 4.4 GB.  - * During the same period, peak-hour (6 p.m. to 11 p.m.) usage has risen 17.2% from 5.0 GB per subscriber in January to 5.87 GB in March.  - * Overall daily usage has grown from 12.19 GB to 15.46 GB, an increase of 26.8%. - - - -Based on the current rate of growth, OpenVault projected that consumption for March will reach nearly 400 GB per subscriber, an increase of almost 11% over the previous monthly record of 361 GB, established in January. In addition, OpenVault projects a new coronavirus-influenced run rate of 460 GB per subscriber per month going forward. OpenVault’s research is based on the usage of more than 1 million broadband subscribers through the United States, the company said. - -“Broadband clearly is keeping the hearts of business, education and entertainment beating during this crisis,” said Mark Trudeau, CEO and founder of OpenVault in a  [statement][6]. “Networks built for peak-hours consumption so far are easily handling the rise in nine-to-five business-hours usage. We’ve had concerns about peak hours consumption given the increase in streaming entertainment and the trend toward temporary cessation of bandwidth caps, but operator networks seem to be handling the additional traffic without impacting customer experiences.” - -Increased use of conferencing apps may affect their availability for reasons other than network capacity. For example,  according to Thousand Eyes, users around the globe were unable to connect to their Zoom meetings for approximately 20 minutes on Friday due to failed DNS resolution.  - -Others too are monitoring data traffic looking for warning signs of slowdowns.  “Traffic towards video conferencing, streaming services and news, e-commerce websites has surged. We've seen growth in traffic from residential broadband networks, and a slowing of traffic from businesses and universities," wrote Louis Poinsignon a network engineer with CloudFlare in a [blog][7] about Internet traffic patterns. He noted that on March 13 when the US announced a state of emergency, CloudFlare’s US data centers served 20% more traffic than usual. - -Poinsignon  noted that  [Internet Exchange Points][8], where Internet service providers and content providers can exchange data directly (rather than via a third party) have also seen spikes in traffic. For example, Amsterdam ([AMS-IX][9]), London ([LINX][10]) and Frankfurt ([DE-CIX][11]), a 10-20% increase was seen around March 9. - -“Even though from time to time individual services, such as a web site or an app, have outages, the core of the Internet is robust,” Poinsignon wrote.  “Traffic is shifting from corporate and university networks to residential broadband, but the Internet was designed for change.” - -In related news: - - * Netflix said it would reduce streaming quality in Europe for at least the next 30 days to prevent the internet collapsing under the strain of unprecedented usage due to the coronavirus pandemic. "We estimate that this will reduce Netflix traffic on European networks by around 25% while also ensuring a good quality service for our members," Netflix said. - * DISH announced that it is providing 20 MHz of AWS-4 (Band 66) and all of its 700 MHz spectrum to AT&T at no cost for 60 days. Last week, DISH began lending its complete 600 MHz portfolio of spectrum to T-Mobile. With these two agreements, DISH has activated most of its spectrum portfolio to enhance national wireless capacity as the nation confronts the COVID-19 crisis. - - - -Join the Network World communities on [Facebook][12] and [LinkedIn][13] to comment on topics that are top of mind. - --------------------------------------------------------------------------------- - -via: https://www.networkworld.com/article/3533438/coronavirus-challenges-capacity-but-core-networks-are-holding-up.html - -作者:[Michael Cooney][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://www.networkworld.com/author/Michael-Cooney/ -[b]: https://github.com/lujun9972 -[1]: https://www.networkworld.com/article/3532440/coronavirus-challenges-remote-networking.html -[2]: https://www.networkworld.com/newsletters/signup.html -[3]: https://www.verizon.com/about/news/how-americans-are-spending-their-time-temporary-new-normal -[4]: https://www.networkworld.com/blog/itaas-and-the-corporate-storage-technology/?utm_source=IDG&utm_medium=promotions&utm_campaign=HPE22140&utm_content=sidebar (ITAAS and Corporate Storage Strategy) -[5]: https://www.spearline.com/ -[6]: http://openvault.com/covid-19-impact-driving-business-hours-broadband-consumption-up-41/ -[7]: https://blog.cloudflare.com/on-the-shoulders-of-giants-recent-changes-in-internet-traffic/ -[8]: https://en.wikipedia.org/wiki/Internet_exchange_point -[9]: https://www.ams-ix.net/ams/documentation/total-stats -[10]: https://portal.linx.net/stats/lans -[11]: https://www.de-cix.net/en/locations/germany/frankfurt/statistics -[12]: https://www.facebook.com/NetworkWorld/ -[13]: https://www.linkedin.com/company/network-world diff --git a/sources/talk/20200324 COVID-19- Weekly health check of ISPs, cloud providers and conferencing services.md b/sources/talk/20200324 COVID-19- Weekly health check of ISPs, cloud providers and conferencing services.md deleted file mode 100644 index a5540c4ce2..0000000000 --- a/sources/talk/20200324 COVID-19- Weekly health check of ISPs, cloud providers and conferencing services.md +++ /dev/null @@ -1,96 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (COVID-19: Weekly health check of ISPs, cloud providers and conferencing services) -[#]: via: (https://www.networkworld.com/article/3534130/covid-19-weekly-health-check-of-isps-cloud-providers-and-conferencing-services.html) -[#]: author: (Tim Greene https://www.networkworld.com/author/Tim-Greene/) - -COVID-19: Weekly health check of ISPs, cloud providers and conferencing services -====== -ThousandEyes, which tracks internet and cloud traffic, is providing Network World with weekly updates on the performance of three categories of service provider: ISP, cloud provider, UCaaS -[ThousandEyes][1] - -_As COVID-19 continues to spread, forcing employees to work from home, the services of ISPs, cloud providers and conferencing services a.k.a. unified communications as a service (UCaaS) providers are experiencing increased traffic._ - -_Thousand Eyes is monitoring how these increases affect outages and the performance these providers undergo. It will provide Network World a roundup of interesting events of  the week in the delivery of these services, and Network World will provide a summary here. Stop back next week for another update._ - -With the increased use of remote-access VPNs, major carriers are reporting dramatic increases in their network traffic – with Verizon reporting a 20% week-over-week increase, and Vodafone reporting an increase of 50%. - -[Read about IPv6 and cloud-access security brokers][2] - -While there has been no corresponding spike in outages in service provider networks, over the past six weeks there has been a steady increase in outages across multiple provider types both worldwide and in the U.S., all according to ThousandEyes, which keeps track of internet and cloud traffic. - -### IDG Special Report: - -Navigating the Pandemic - - * [Business continuity: Coronavirus crisis puts CIOs’ plans to the test][3] - * [Coronavirus challenges remote networking][4] - * [A security guide for pandemic planning: 7 key steps][5] - * [10 tips to set up your home office for videoconferencing][6] - * [How to survive and thrive while working from home][7] - * [WTH? OSS knows how to WFH IRL][8] - - - -This includes “a concerning upward trajectory” since the beginning of March of ISP outages worldwide that coincides with the spread of COVID-19, [according to a ThousandEyes blog][9] by Angelique Medina, the company’s director of product marketing. ISP outages worldwide hovered around 150 per week between Feb. 10 and March 19, but then increased to between just under 200 and about 225 during the following three weeks. - -In the U.S. those numbers were a little over 50 in the first time range and reaching about 100 during the first week of March. “That early March level has been mostly sustained over the last couple of weeks,” Medina writes. - -Cogent Communications was one ISP with nearly identical large scale outages on March 11 and March 18, with “disruptions for the fairly lengthy period (by Internet standards) of 30 minutes,” she wrote. - -[][10] - -Hurricane Electric suffered an outage March 20 that was less extensive and shorter than Cogent’s but included smaller disruptions that altogether affected hundreds of sites and services, she wrote. - -Public-cloud provider networks have withstood the effects of COVID-19 well, with slight increases in the number of outages in the U.S., but otherwise relatively level around the world. The possible reason: “Major public cloud providers, such as AWS, Microsoft Azure, and Google Cloud, have built massive global networks that are incredibly well-equipped to handle traffic surges,” Medina wrote. And when these networks do have major outages it’s due to routing or infrastructure state changes, not traffic congestion. - -Some providers of collaboration applications – the likes of Zoom, Webex, MSFT Teams, RingCentral – also experienced performance problems between March 9 and March 20. ThousandEyes doesn’t name them, but does list performance numbers for what it describes “the top three” UCaaS providers. One actually showed improvements in availability, latency, packet loss and jitter. The other two “showed minimal (in the grand scheme of things) degradations on all fronts — not surprising given the unprecedented strain they’ve been under,” according to the blog. - -Each provider showed spikes in traffic loss over the time period that ranged from less than 1% to more than 4% in one case. In the case of one provider, “outages within its own network spiked last week, meaning that the network issues impacting users were taking place on infrastructure managed by the provider versus an external ISP.” - -“Outage incidents within large UCaaS provider networks are fairly infrequent; however, the recent massive surge in usage is clearly stressing current design limits. Capacity is reportedly being added across the board to meet new service demands,” according to the blog. - -Meanwhile, ThousandEyes has introduced a new feature on its site a [Global Internet Outages Map][1] that is updated every few minutes. It shows recent and ongoing outages - -## Google outage unrelated to COVID-19 - -On March 26 Google suffered a 20 minute outage on the East Coast of the U.S., apparently from a router failure in Atlanta, ThousandEyes said, agreeing with a statement put out by Googe to that effect. - -That problem affected other regions of the U.S. as evidenced by Google sites such as google.com intermittently returning server errors."These 500 server errors are consistent with an inability to reach the backend systems necessary to correctly load various services," ThousandEyes said in a statement. "Any traffic traversing the affected region — connecting from Google’s front-end servers to backend services — may have been impacted and seen the resulting server errors." - -ThousandEyes posted interactive results of tests it ran about the outage [here][11] and [here][12]. - -. - -Join the Network World communities on [Facebook][13] and [LinkedIn][14] to comment on topics that are top of mind. - --------------------------------------------------------------------------------- - -via: https://www.networkworld.com/article/3534130/covid-19-weekly-health-check-of-isps-cloud-providers-and-conferencing-services.html - -作者:[Tim Greene][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://www.networkworld.com/author/Tim-Greene/ -[b]: https://github.com/lujun9972 -[1]: https://www.thousandeyes.com/outages -[2]: https://www.networkworld.com/article/3391380/does-your-cloud-access-security-broker-support-ipv6-it-should.html -[3]: https://www.cio.com/article/3532899/business-continuity-coronavirus-crisis-puts-cios-plans-to-the-test.html -[4]: https://www.networkworld.com/article/3532440/coronavirus-challenges-remote-networking.html -[5]: https://www.csoonline.com/article/3528878/a-security-guide-for-pandemic-planning-7-key-steps.html -[6]: https://www.computerworld.com/article/3250684/10-tips-to-set-up-your-home-office-for-videoconferencing.html -[7]: https://www.computerworld.com/article/3532283/how-to-survive-and-thrive-while-working-from-home.html -[8]: https://www.infoworld.com/article/3533050/wth-oss-knows-how-to-wfh-irl.html -[9]: https://blog.thousandeyes.com/internet-health-during-covid-19/ -[10]: https://www.networkworld.com/blog/itaas-and-the-corporate-storage-technology/?utm_source=IDG&utm_medium=promotions&utm_campaign=HPE22140&utm_content=sidebar (ITAAS and Corporate Storage Strategy) -[11]: https://agisi.share.thousandeyes.com/view/endpoint-agent/?roundId=1585237800&metric=loss&scenarioId=eyebrowNetwork&filters=%7B%22filters%22:%7B%22domain%22:%5B%22google.com%22%5D,%22geonameId%22:%5B4148757,4180439,4459467,4460243,4509177,4671240,4744709,4744870,4887398,4890864,4930956,5099836,5110266,5110302,5128581,5145476,5150529,5282804,5786882%5D%7D%7D&page=0,0&grouping=BY_NETWORK,BY_DOMAIN -[12]: https://ythkurgdz.share.thousandeyes.com/view/tests/?roundId=1585236900&metric=availability&scenarioId=httpServer&testId=1283781 -[13]: https://www.facebook.com/NetworkWorld/ -[14]: https://www.linkedin.com/company/network-world diff --git a/sources/talk/20200325 COVID-19 vs. Raspberry Pi- Researchers bring IoT technology to disease detection.md b/sources/talk/20200325 COVID-19 vs. Raspberry Pi- Researchers bring IoT technology to disease detection.md deleted file mode 100644 index cdcf720c0b..0000000000 --- a/sources/talk/20200325 COVID-19 vs. Raspberry Pi- Researchers bring IoT technology to disease detection.md +++ /dev/null @@ -1,55 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (COVID-19 vs. Raspberry Pi: Researchers bring IoT technology to disease detection) -[#]: via: (https://www.networkworld.com/article/3534101/covid-19-vs-raspberry-pi-researchers-bring-iot-technology-to-disease-detection.html) -[#]: author: (Jon Gold https://www.networkworld.com/author/Jon-Gold/) - -COVID-19 vs. Raspberry Pi: Researchers bring IoT technology to disease detection -====== -Researchers from UMass say that a Raspberry Pi edge device can help identify flu-like symptoms in crowds, broadening the range of tools that can be used to track the spread of disease. -[Bill Oxford / Raspberry Pi / Modified by IDG Comm.][1] [(CC0)][2] - -An [IoT][3] device that tracks coughing and crowd size in real time could become a useful tool for identifying the presence of flu-like symptoms among large groups of people, according to a team of researchers at UMass Amherst. - -FluSense, as the researchers call it, is about the size of a dictionary. It contains a cheap microphone array, a thermal sensor, a Raspberry Pi and an Intel Movidius 2 neural computing engine. The idea is to use AI at the edge to classify audio samples and identify the number of people in a room at any given time. - -[[Get regularly scheduled insights by signing up for Network World newsletters.]][4] - -Since the system can distinguish coughing from other types of non-speech audio, correlating coughing with the size of a given crowd could give a useful index of how many people are likely to be experiencing flu-like symptoms. - -A test run between December 2018 and July 2019 saw FluSense installed in four waiting rooms at UMass’ University Health Services clinic, and the researchers said that they were able to “strongly” correlate the system’s results with clinical testing for influenza and other illnesses with similar symptoms. - -And bigger plans for FluSense are afoot, according to the paper’s lead author, Ph.D student Forsad Al Hossain and his co-author and adviser, assistant professor Tauhidur Rahman. - -“[C]urrently we are planning to deploy the FluSense system in several large public spaces (e.g., large cafeteria, classroom, dormitories, gymnasium, auditorium) to capture syndromic signals from a broad range of people who live in a certain town or city,” they said. “We are also looking for funding to run a large-scale multi-city trial. In the meantime, we are also diversifying our sensing capability by extending FluSense’s capability to capture more syndromic signals (e.g., recently we added sneeze sensing capability to FluSense). We definitely see a significant level of commercialization potential in this line of research.” - -FluSense is particularly interesting from a technical perspective because all of the meaningful processing work is done locally, via the Intel neural computing engine and Raspberry Pi. Symptom information is sent wirelessly to the lab for collation, of course, but the heavy lifting is accomplished at the edge. Al Hossain and Rahman were quick to emphasize that the device doesn’t collect personally identifiable information – the emphasis is on aggregating data in a given setting, rather than identifying sickness in any single patient – and everything it does collect is heavily encrypted, making it a minimal privacy concern. - -The key point of FluSense, according to the researchers, is to think of it as a health surveillance tool, rather than a piece of diagnostic equipment. Al Hossain and Rahman said that it has several important advantages over other health surveillance techniques, particularly those based on Internet tracking, like Google Flu Trend and Twitter. - -“FluSense is not easily influenced by public health campaigns or advertisements. Also, the contactless nature of this sensor is ideal to capture syndromic signals passively from different geographical locations and different socioeconomic groups (including underprivileged who may not have access to healthcare and may not go to a doctor/clinic,” they said. - -Join the Network World communities on [Facebook][5] and [LinkedIn][6] to comment on topics that are top of mind. - --------------------------------------------------------------------------------- - -via: https://www.networkworld.com/article/3534101/covid-19-vs-raspberry-pi-researchers-bring-iot-technology-to-disease-detection.html - -作者:[Jon Gold][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://www.networkworld.com/author/Jon-Gold/ -[b]: https://github.com/lujun9972 -[1]: https://unsplash.com/photos/tR0PPLuN6Pw -[2]: https://creativecommons.org/publicdomain/zero/1.0/ -[3]: https://www.networkworld.com/article/3207535/what-is-iot-the-internet-of-things-explained.html -[4]: https://www.networkworld.com/newsletters/signup.html -[5]: https://www.facebook.com/NetworkWorld/ -[6]: https://www.linkedin.com/company/network-world diff --git a/sources/talk/20200325 The coming together of SD-WAN and AIOps.md b/sources/talk/20200325 The coming together of SD-WAN and AIOps.md deleted file mode 100644 index 690a27686d..0000000000 --- a/sources/talk/20200325 The coming together of SD-WAN and AIOps.md +++ /dev/null @@ -1,104 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (The coming together of SD-WAN and AIOps) -[#]: via: (https://www.networkworld.com/article/3533437/the-coming-together-of-aiops-and-sd-wan.html) -[#]: author: (Zeus Kerravala https://www.networkworld.com/author/Zeus-Kerravala/) - -The coming together of SD-WAN and AIOps -====== -SD-WAN delivers cost and resiliency benefits. Infusing AI into SD-WAN takes things further, enabling automated operations and business agility. -kohb / Getty Images - -Software-defined wide-area networking ([SD-WAN][1]) and AIOps are both red-hot technologies. SD-WANs increase application availability, reduce costs and in some cases improve performance. AIOps infuses machine learning into IT operations to increase the level of automation. This reduces errors and enables businesses to make changes at digital speeds. Most think of these as separate technologies, but the two are on a collision course and will give rise to what I'm calling the AI-WAN.  - -### SD-WAN not a panacea for all network woes - -SD-WAN is the biggest leap forward in networking since… well, the actual WAN. But many solutions still rely on manual configurations. SD-WANs certainly increase application resiliency, lower telecommunications costs, and often increase application performance, but they are more complicated than traditional WANs. Initial setup can be a challenge, but the bigger issue is ongoing operations. Manually tweaking and tuning the network to adapt to business changes can be time consuming and error-prone. A solution is needed to bring better automation to SD-WANs. - -**READ MORE:** [How AI can improve network capacity planning][2] - -Enter AI-WAN. Much like a self-driving car, an AI-WAN can make decisions based on different rules and adapt to changes faster than people can. Self-driving cars continually monitor road conditions, speed limits and other factors to determine what changes to make. Similarly, a self-driving network can monitor, correct, defend, and analyze with minimal to no human involvement. This is done through automation capabilities powered by AI, obviating the need for people to get involved. - -Make no mistake, manual operations will hold businesses back from reaching their full potential. An interesting data point from my research is that it takes enterprises an average of four months to make changes across a network. That's because maintaining legacy networks and fixing glitches takes too much time. One ZK Research study found 30% of engineers spend at least one day a week doing nothing but troubleshooting problems. SD-WANs can improve these metrics, but there's still a heavy people burden. - -With growing data challenges businesses face as they migrate to the cloud, they simply can't afford to wait that long. Instead of being afraid of AI taking over jobs, businesses should embrace it. AI can remove human error—which is the largest cause of unplanned network downtime—and help businesses focus on higher-level tasks instead. - -### AI-WAN will transform network operations - -So how will the evolution of SD-WAN into AI-WAN transform network management and operations? Administrators can use their time to focus on strategic initiatives instead of fixing problems. Another data point from ZK Research is that 90% of the time taken to fix a problem is spent identifying the source. Now that applications reside in the cloud and run on mobile devices, identifying the source of a problem has gotten harder. AI-WANs have the ability to spot even the smallest anomaly, even if it hasn't yet begun to impact business. - -SD-WANs are fundamentally designed so that all routing rules are managed centrally by administrators and can be transmitted across a network. AI-WAN takes it a step further and enables administrators to anticipate problems before they happen through fault prediction. It may even adjust network glitches on its own before users are affected, thus improving network performance. - -[][3] - -A self-driving car knows the rules of the road—where the blind spots are, how to synch with traffic signals, and which safety measures to take—using AI software, real-time data from IoT sensors, cameras, and much more. Similarly, a self-driving network knows the higher-level rules and can prevent administrators from making mistakes, such as allowing applications in countries where certain actions are banned.  - -Security is another concern. Everything from mobile devices to Internet of Things (IoT) to cloud computing is creating multiple new entry points and shifting resources to the network edge. This puts businesses at a security risk, as they struggle to respond to changes quickly. - -Businesses can miss security gaps created by users, with hundreds of software-as-a-service (SaaS) apps being used at the same time without IT's knowledge. Older networking technologies cannot support SaaS and cloud services, while SD-WANs can. But simply deploying an SD-WAN is not enough to protect a network. Security shouldn't be an afterthought in an SD-WAN deployment, but part of it from the get-go. - -Increasingly, vendors are bundling AI-based analytics with SD-WAN solutions to boost network security. Such solutions use AI to analyze how certain events impact the network, application performance, and security. Then, they create intelligent recommendations for any network changes, such as unauthorized use of SaaS apps. - -Going back to the autonomous car analogy, AI-WANs are designed to keep roads clear and accident-free. They enable smarter networks that can adapt quickly to changing conditions and self-heal if necessary. With the growing demands of cloud computing and SaaS apps, intelligent networks are the future and forward-thinking businesses are already in the driver’s seat. - -### AI-WAN exists today and will explode in the future - -AI-WAN may seem futuristic, but there are a number of vendors that are delivering it or in the process of bringing solutions to market. Managed service provider Masergy, for example, recently introduced [AIOps for SD-WAN][4] to deliver autonomous networking and has the most complete offering. - -Open System, another managed service provider, [snapped up cloud-based Sqooba][5] to add AIOps to its strong network and security services. Keeping with the M&A theme, VMware recently [acquired AIOps vendor Nyansa][6] and rolled it into its VeloCloud SD-WAN group. That move gives VMware similar capabilities to [Aruba Networks][7], which initially applied AI to WiFi troubleshooting but is now bringing it to its SD-Branch offering. [Cisco][8] is another networking vendor with an AIOps story, although it's trying to apply it network-wide, not just with the WAN.  - -Over time, I expect every SD-WAN or SASE vendor to bring AIOps into the fold, shifting the focus away from connectivity to automated operations. - -**Learn more about SD-WAN** - - * [Top 10 underused SD-WAN features][9] - * [SD-WAN: The inside scoop from real-world deployments][10] - * [5 reasons to choose a managed SD-WAN and 5 reasons to think twice][11] - * [10 essential SD-WAN considerations][12] - * [SD-WAN: What is it and why you’ll use it one day][13] - * [SD-WAN deployment options: DIY vs. cloud managed][14] - * [How SD-WAN can improve your security strategy][15] - * [10 hot SD-WAN startups to watch][16] - * [How SD-WAN saves $1.2M over 5 years for a radiology firm][17] - * [SD-WAN creates new security challenges][18] - - - -Join the Network World communities on [Facebook][19] and [LinkedIn][20] to comment on topics that are top of mind. - --------------------------------------------------------------------------------- - -via: https://www.networkworld.com/article/3533437/the-coming-together-of-aiops-and-sd-wan.html - -作者:[Zeus Kerravala][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://www.networkworld.com/author/Zeus-Kerravala/ -[b]: https://github.com/lujun9972 -[1]: https://www.networkworld.com/article/3031279/sd-wan-what-it-is-and-why-you-ll-use-it-one-day.html -[2]: https://www.networkworld.com/article/3338100/using-ai-to-improve-network-capacity-planning-what-you-need-to-know.html -[3]: https://www.networkworld.com/blog/itaas-and-the-corporate-storage-technology/?utm_source=IDG&utm_medium=promotions&utm_campaign=HPE22140&utm_content=sidebar (ITAAS and Corporate Storage Strategy) -[4]: https://techcrunch.com/2020/03/19/nvidia-makes-its-gpu-powered-genome-sequencing-tool-available-free-to-those-studying-covid-19/?guccounter=1&guce_referrer=aHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS8&guce_referrer_sig=AQAAAMI6we4H-fTz2mf5g-l6IP27C1O-V-u6EiQuJ5QzVnlrrPU04iS0fhyrZo5U8q5rAk5I9uVW5PQYKHX8ziMdWrFBxhBP7f__JshmAGevyu4Z5zm98nDnC6nEdIekjVX4RPPmF9Q_PImcQ0opZy6JukS-DZA62tHI9R7D1Q2JAog7 -[5]: https://open-systems.com/press-release/open-systems-acquires-sqooba -[6]: https://www.vmware.com/company/acquisitions/nyansa.html -[7]: https://blogs.arubanetworks.com/solutions/ai-doing-more-with-less-in-2020-and-beyond/ -[8]: https://www.cisco.com/c/en/us/products/cloud-systems-management/crosswork-network-automation/service-centric-approach-to-aiops.html#~overview -[9]: https://www.networkworld.com/article/3518992/top-10-underused-sd-wan-features.html -[10]: https://www.networkworld.com/article/3316568/sd-wan/sd-wan-the-inside-scoop-from-real-world-deployments.html -[11]: https://www.networkworld.com/article/3431080/5-reasons-to-choose-a-managed-sd-wan-and-5-reasons-to-think-twice.html -[12]: https://www.networkworld.com/article/3355138/sd-wan-10-essential-considerations.html -[13]: https://www.networkworld.com/article/3031279/sd-wan/sd-wan-what-it-is-and-why-you-ll-use-it-one-day.html -[14]: https://www.networkworld.com/article/3243701/wide-area-networking/sd-wan-deployment-options-diy-vs-cloud-managed.html -[15]: https://www.networkworld.com/article/3336483/how-sd-wan-can-improve-your-security-strategy.html -[16]: https://www.networkworld.com/article/3284367/sd-wan/10-hot-sd-wan-startups-to-watch.html -[17]: https://www.networkworld.com/article/3255291/lan-wan/sd-wan-helps-radiology-firm-cut-costs-scale-bandwidth.html -[18]: https://www.networkworld.com/article/3336155/sd-wan-creates-new-security-challenges.html -[19]: https://www.facebook.com/NetworkWorld/ -[20]: https://www.linkedin.com/company/network-world diff --git a/sources/talk/20200326 ROLLING UPDATE- The impact of COVID-19 on public networks and security.md b/sources/talk/20200326 ROLLING UPDATE- The impact of COVID-19 on public networks and security.md deleted file mode 100644 index 7f8c0a2cd8..0000000000 --- a/sources/talk/20200326 ROLLING UPDATE- The impact of COVID-19 on public networks and security.md +++ /dev/null @@ -1,119 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (ROLLING UPDATE: The impact of COVID-19 on public networks and security) -[#]: via: (https://www.networkworld.com/article/3534037/rolling-update-the-impact-of-covid-19-on-public-networks-and-security.html) -[#]: author: (Michael Cooney https://www.networkworld.com/author/Michael-Cooney/) - -ROLLING UPDATE: The impact of COVID-19 on public networks and security -====== -Network World updates the latest coronavirus-related networking news -Ig0rZh / Getty Images - -_As the coronavirus spreads, public and private companies as well as government entities are requiring employees to work from home, putting unforeseen strain on all manner of networking technologies and causing bandwidth and security concerns.  What follows is a round-up of news and traffic updates that Network World will update as needed to help keep up with the ever-changing situation.  Check back frequently!_ - -**UPDATE 3.27** - -Broadband watchers at [BroadbandNow][1] say users in most of the cities it analyzed are experiencing normal network conditions, suggesting that ISP’s (and their networks) are holding up to the shifting demand. In a March 25 [post][2] the firm wrote: “Encouragingly, many of the areas hit hardest by the spread of the coronavirus are holding up to increased network demand. Cities like Los Angeles, Chicago, Brooklyn, and San Francisco have all experienced little or no disruption. New York City,  now the epicenter of the virus in the U.S., has seen a 24% dip out of its previous ten-week range. However, with a new median speed of nearly 52 Mbps, home connections still appear to be holding up overall.” - -**[ Also see [What to consider when deploying a next generation firewall][3]. | Get regularly scheduled insights by [signing up for Network World newsletters][4]. ]** - -Other BroadbandNow findings included: - - * Eighty eight (44%) of the 200 cities it analyzed experienced some degree of network degradation over the past week compared to the 10 weeks prior. However, only 27 (13.5%) cities experienced dips of 20% below range or greater. - * Seattle download speeds have continued to hold up over the past week, while New York City’s speeds have fallen out of range by 24%. Both cities are currently heavily affected by the coronavirus pandemic. - * Three cities – Austin, Texas, Winston Salem, N.C., and Oxnard, Calif. – have experienced significant degradations, falling out of their 10-week range by more than 40%. - - - -Cisco’s Talos threat-intelligence arm [wrote][5] on March 26 about the COVID security threat noting what it called three broad categories of attacks leveraging COVID with known advanced persistent threat participation in: [Malware and phishing campaigns][6] using COVID-themed lures; attacks against organizations that carry out research and other work related to COVID; and fraud and disinformation. From an enterprise security perspective, Talos recommended: - - * Remote access: Do not expose Remote Desktop Protocol (RDP) to the internet. Use secure VPN connections with multi-factor authentication schemes. Network access control packages can be used to ensure that systems attempting to remotely connect to the corporate environment meet a minimum set of security standards such as anti-malware protection, patch levels, etc,. prior to granting them access to corporate resources. Continually identify and remediate access-policy violations. - * Identity Management: Protect critical and public-facing applications with multi-factor authentication and supporting corporate policies. Verify that remote-account and access-termination capabilities work as intended in a remote environment. - * Endpoint Control: Because many people may be working from home networks, endpoint visibility, protection, and mitigation is now more important than ever. Consider whether remediation and reimaging capabilities will work as intended in a remote environment. Encrypt devices where possible, and add this check to your NAC solution as a gate for connectivity. Another simple method of protecting endpoints is via DNS, such as with [Cisco’s] Umbrella, by blocking the resolution of malicious domains before the host has a chance to make a connection. - - - -In an [FAQ][7] about the impact of COVID-19 on fulfilling customer hardware orders, VMware stated: “Some VMware SD-WAN hardware appliances are on backorder as a result of supply chain issues. As a result, we are extending the option to update existing orders with different appliances where inventory is more readily available. Customers may contact a special email hotline with questions related to backordered appliances. Please send an email to [sd-wan-hotline@vmware.com][8] with your questions and include the order number, urgent quantities, and contact information. We will do our best to respond within 48 hours.” - -Cisco said it has been analyzing traffic statistics with major carriers across Asia, Europe, and the Americas, and its data shows that typically, the most congested point in the network occurs at inter-provider peering points, Jonathan Davidson, senior vice president and general manager of Cisco's Mass-Scale Infrastructure Group wrote in a [blog][9] on March 26. “However, the traffic exchanged at these bottlenecks is only a part of the total internet traffic, meaning reports on traffic may be higher overall as private peering and local destinations also contribute to more traffic growth.” - -[][10] - -“Our analysis at these locations shows an increase in traffic of 10% to 33% over normal levels. In every country, traffic spiked with the decision to shut down non-essential businesses and keep people at home. Since then, traffic has remained stable or has experienced a slight uptick over the days that followed,” Davidson stated. - -He said that traffic during peak hours from 6 p.m. and 10 p.m. has increased slightly, but is not the primary driver for the overall inrease. Busy hours have extended to 9 a.m. 10 p.m., although the new busy-hour (9 a.m. to 6 p.m.) traffic is still below the traditional peak hours. "Service providers are certainly paying attention to these changes, but they are not yet a dire concern, as most networks are designed for growth. Current capacities are utilized more over the course of the entire day,” he wrote. - -Spanish multinational telecommunications company [Telefonica][11]’ said IP networks are experiencing traffic increases of close to 40% while mobile voice use is up about 50% and data is up 25%. In general, traffic through IP networks has experienced increases of nearly 40% while mobile use has increased by about 50% for voice and 25% for data. Likewise, traffic from instant-messaging tools such as Whatsapp has increased fivefold in recent days. - -**UPDATE: 3.26** - - * Week over week (ending March 23) [Ookla][12] says it has started to see a degradation of mobile and fixed-broadband performance worldwide. More detail on specific locations is available below. Comparing the week of March 16 to the week of March 9, mean download speed over mobile and fixed broadband decreased in Canada and the U.S. while both remained relatively flat in Mexico. - * What is the impact of the coronavirus on corporate network planning? Depends on how long the work-from-home mandate goes on really. Tom Nolle, president of CIMI Corp. [takes an interesting look at the situation][13] saying the shutdown “could eventually produce a major uptick for SD-WAN services, particularly in [managed service provider]    Businesses would be much more likely to embark on an SD-WAN VPN adventure that didn’t involve purchase/licensing, favoring a service approach in general, and in particular one with a fairly short contract period.” - * Statistics from VPN provider [NordVPN][14] show the growth of VPN usage across the globe.  For example, the company said the US has experienced a 65.93% growth in the use of business VPNs since March 11. It reported that mass remote working has contributed towards a rise in desktop (94.09%) and mobile app (0.39%) usage among Americans. Globally, NordVPN teams has seen a 165% spike in the use of business VPNs and business VPN usage in Netherlands (240.49%), Canada (206.29%) and Austria (207.86%) has skyrocketed beyond 200%. Italy has had the most modest growth in business VPN usage at just 10.57%. - - - -**UPDATE: 3. 25**: - - * According to [Atlas VPN][15] user data, VPN usage in the US increased by 124% during the last two weeks. VPN usage in the country increased by 71% between March 16 and 22 alone. Atlas said it measured how much traffic traveled through its servers during that period compared to March 9 to 15. The data came from the company's 53,000 weekly users. - * Verizon [reports][16] that voice usage, long declining in the age of texting, chat and social media, is up 25% in the last week. The network report shows the primary driver is accessing conference calls. In addition, people are talking longer on mobile devices with wireless voice usage notching a 10% increase and calls lasting 15% longer.  - * AT&T also [reported][17] increased calling, especially Wi-Fi calling, up 88% on March 22 versus a normal Sunday. It says that consumer home voice calls were up 74% more than an average Sunday; traffic from Netflix dipped after all-time highs on Friday and Saturday; and data traffic due to heavy video streaming between its network and peered networks tied record highs. AT&T said it has deployed portable cell nodes to bolster coverage supporting FirstNet customers in Indiana, Connecticut, New Jersey, California and New York. - * Microsoft this week advised users of Office 365 it was throttling back some services: - * **OneNote: ** OneNote in Teams will be read-only for commercial tenants, excluding EDU. Users can go to OneNote for the web for editing. Download size and sync frequency of file attachments has been changed. You can find details on these and other OneNote related updates as . - * **SharePoint:** We are rescheduling specific backend operations to regional evening and weekend business hours. Impacted capabilities include migration, DLP and delays in file management after uploading a new file, video or image. Reduced video resolution for playback videos. - * **Stream:** People timeline has been disabled for newly uploaded videos. Pre-existing videos will not be impacted. Meeting recording video resolution adjusted to 720p. - - - -**RELATED COVID-19 NEWS:** - - * Security vendor [Check Point’s Threat Intelligence][18] says that Since January 2020, there have been over 4,000 coronavirus-related domains registered globally. Out of these websites, 3% were found to be malicious and an additional 5% are suspicious. Coronavirus- related domains are 50% more likely to be malicious than other domains registered at the same period, and also higher than recent seasonal themes such as Valentine’s day. - * [Orange][19] an IT and communications **services** company aid that has increased its network capacity and upgraded its service platforms. These measures allow it to support the ongoing exponential increase in needs and uses. The number of users connecting to their company's network remotely has already increased by 700% among its customers. It has also doubled the capacity for simultaneous connections on its platforms. The use of remote collaboration solutions such as video conferencing has also risen massively with usage increasing by between 20% to 100%. - * Verizon said it has seen a 34% increase in VPN traffic from March 10 to 17. It has also seen a 75% increase in gaming traffic and web traffic increased by just under 20% in that time period according to Verizon. - * One week after the CDC declaration of the virus as a pandemic, data analytics and broadband vendor OpenVault wrote on March 19 that: - * Subscribers’ average usage during the 9 am-to-5 pm daypart has risen to 6.3 GB, 41.4% higher than the January figure of 4.4 GB.  - * During the same period, peak hours (6 pm–11 pm) usage has risen 17.2% from 5.0 GB per subscriber in January to 5.87 GB in March.  - * Overall daily usage has grown from 12.19 GB to 15.46 GB, an increase of 26.8%. - * Based on the current rate of growth, OpenVault projected that consumption for March will reach nearly 400 GB per subscriber, an increase of almost 11% over the previous monthly record of 361 GB, established in January of this year. In addition, OpenVault projects a new coronavirus-influenced run rate of 460 GB per subscriber per month going forward. - - - -Join the Network World communities on [Facebook][20] and [LinkedIn][21] to comment on topics that are top of mind. - --------------------------------------------------------------------------------- - -via: https://www.networkworld.com/article/3534037/rolling-update-the-impact-of-covid-19-on-public-networks-and-security.html - -作者:[Michael Cooney][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://www.networkworld.com/author/Michael-Cooney/ -[b]: https://github.com/lujun9972 -[1]: https://broadbandnow.com/ -[2]: https://broadbandnow.com/report/internet-speed-analysis-march-15th-21st/ -[3]: https://www.networkworld.com/article/3236448/lan-wan/what-to-consider-when-deploying-a-next-generation-firewall.html -[4]: https://www.networkworld.com/newsletters/signup.html -[5]: https://blog.talosintelligence.com/2020/03/covid-19-pandemic-threats.html -[6]: https://blog.talosintelligence.com/2020/02/coronavirus-themed-malware.html -[7]: https://www.vmware.com/company/news/updates/vmware-response-covid-19.html?mid=31381&eid=CVMW2000048242496 -[8]: mailto:sd-wan-hotline@vmware.com -[9]: https://blogs.cisco.com/news/global-traffic-spikes-no-panic-at-the-cisco -[10]: https://www.networkworld.com/blog/itaas-and-the-corporate-storage-technology/?utm_source=IDG&utm_medium=promotions&utm_campaign=HPE22140&utm_content=sidebar (ITAAS and Corporate Storage Strategy) -[11]: https://www.telefonica.com/en/web/press-office/-/telefonica-announces-measures-related-to-covid-19 -[12]: https://downdetector.com/?utm_campaign=Ookla%20Insights%20Blog%20Subscription&utm_source=hs_email&utm_medium=email&utm_content=85202785&_hsenc=p2ANqtz--Nj93d_eQyJpsqxrPJyNPtTiMBWBQU984psLyalw51K61e4d1WODareMF5NWFriHY2Uzw3WF7rF-2vSfH5cR53Jg3K5Q&_hsmi=85202785 -[13]: https://blog.cimicorp.com/?p=4068 -[14]: https://nordvpnteams.com/ -[15]: https://atlasvpn.com/blog/lockdowns-and-panic-leads-to-a-124-surge-in-vpn-usage-in-the-us/ -[16]: https://www.verizon.com/about/news/update-verizon-serve-customers-covid-19 -[17]: https://about.att.com/pages/COVID-19.html -[18]: https://blog.checkpoint.com/2020/03/05/update-coronavirus-themed-domains-50-more-likely-to-be-malicious-than-other-domains/ -[19]: https://www.orange.com/en/Press-Room/press-releases/press-releases-2020/Orange-is-mobilised-to-ensure-continuity-of-service-for-all-customers-in-France-and-around-the-world -[20]: https://www.facebook.com/NetworkWorld/ -[21]: https://www.linkedin.com/company/network-world diff --git a/sources/talk/20200327 6 tricks for developing a work from home schedule.md b/sources/talk/20200327 6 tricks for developing a work from home schedule.md deleted file mode 100644 index 9253f824fd..0000000000 --- a/sources/talk/20200327 6 tricks for developing a work from home schedule.md +++ /dev/null @@ -1,108 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (6 tricks for developing a work from home schedule) -[#]: via: (https://opensource.com/article/20/3/work-from-home) -[#]: author: (Seth Kenlon https://opensource.com/users/seth) - -6 tricks for developing a work from home schedule -====== -Stay flexible, embrace change, and think of the transition to your home -office as an opportunity to create a healthier WFH experience. -![Working from home at a laptop][1] - -When you start working from home, one of the first things you might have noticed is that there almost no outside influences on your schedule. - -You probably have meetings—some over [team chat][2] and others over [video][3]— that you have to attend, but otherwise, there's nothing requiring you to do anything at any specific time. What you find out pretty quickly, though, is that there's an invisible influence that sneaks up on you: deadlines. - -This lack of structure fosters procrastination, sometimes willful and other times aimless, followed by frantic sprints to get something done. Learning to mitigate that, along with all the distractions working from home might offer, is often the hardest part of your home-based work. - -Here are a few ways to build in that structure for yourself do you don't end up feeling like you are falling behind. - -### You have always had your own schedule - -Everybody reacts to schedules differently. For some people, schedules offer guidance and comfort. For others, schedules are rigid and oppressive. - -An office space generally provides focus. There might be plenty of distractions at the office, but you usually find a good stretch of time at some point during your day when you can get a big chunk of work done. Even in an office, though, each person actually keeps their own schedule. Your colleague might arrive early in the day, happily completing a day's work in an empty office before anyone else arrives and then spending the rest of the day doing menial tasks and socializing. Another colleague might arrive late and leave early, maximizing time spent in the office for actual work. Still others follow a steady pace throughout the day. - -As you're settling into a WFH routine, take notes, either mentally or physically, on what seems to work well for you. If you like formalized systems, then build a schedule for yourself after a week or two, based on what you've been doing naturally. If there's something that isn't working for you, then drop it from your schedule. - -Once you've found a good rhythm for yourself, you can manage your day with a [to-do list][4] like [todo.txt][5], or if you prefer sledgehammers (or you actually manage a department), you can try a [project management][6] application. - -### Treat yourself as a new hire - -For the first week or two at home, you may find it helpful to treat yourself (and your remote team) as a new hire. Instead of trying to mimic or impose the same schedule you kept at the office or at school, take time to monitor your own activity. It takes time for your body and mind to establish new and comfortable habits, and if you're the kind of person who wanders into a routine, then you need to give yourself time to discover what those habits are. - -For instance, if you're consistently finding that you do your best work right after breakfast, then relegate menial tasks, like responding to email, reviewing tasks, or triaging bug reports, to the early morning, and make sure you have a big task set up for after breakfast. If you're having a hard time maintaining focus, then make time for morning tea so you can relax, reassess your workload, and plan your next step. Be curious about yourself like a manager would be for a brand new employee. Adjust accordingly. - -### There is no guilt to being interrupted at home - -Not everything on your schedule is under your control. If you have children too young for school, or if children are home from school, then their schedules take precedence. - -It's a perceived benefit of working from home that your schedule is more flexible than at an office, but with that assumption, there can sometimes come a little to a lot of guilt. You might feel you're not working "enough" because you have to stop to wake up and feed children, or because you want to take a few play breaks every now and again. - -That's mostly illusory, though, and here is how to think about it. If you swap out "children" for "manager," you might remember some times at the office where your "real" work was interrupted because you had to entertain upper management with sparkly presentations, or complete piles of paperwork for HR, or decompress by chatting with colleagues by the water cooler. - -Your work from home is really no different. There are plenty of distractions, and they're only a problem if you fail to acknowledge and work around them. - -### Making the choice to move beyond the 9-to-5 - -Unlike at the office, you're not forced into a rigid and dated 9-to-5 structure. If your day has to start at 7am, contains a lot of breaks, and doesn't end until 7pm, then that's alright. The essential part is to define that as your schedule for yourself (once you've established it as a schedule that works for you; remember to give yourself a few weeks to get a feel for what your schedule actually "wants" to be). Pick your start and end times, establish break times with your housemates, whether they're children, spouses, pets, or roommates/friends. Work when you're supposed to be working, and don't work when you're not scheduled to work. For most of us, colleagues don't need to know exactly when you are online as long as you're available when you're needed. In that case, your hours are your own. If the team is the kind that needs to know, run it by them. - -### Don't forget time for yourself - -It's important to at least establish times you stop thinking about work, no matter what. If you've got a very young child who's not given to staying on any schedule, then you might have to stay more flexible than most. Still, give yourself permission to actively be inactive. Do something you enjoy, even if it feels unproductive. It's normal to spend some idle time at the office to think or intentionally not think. Working from home deserves the same space. If anything, it's even more important as you establish working hours. The goal is to recognize when you're at home and when you're at work. - -Finding stuff to do at work is relatively easy, but sometimes finding things to do to relax can be hard. If you have children, you can collaborate with them using Scratch for [drawing beautiful art][7], [programming video games][8], or even [robotics][9]. For the times you're not necessarily looking to collaborate and need your little one to do some exploration of their own, there are some [great open source alternatives to Minecraft][10], too. If you're interested in getting away from the screen, though, you might try some [Arduino][11] or [Seeeduino][12] gardening projects. Start with some programming, and end up outside in the garden! - -### Choose to see change as exciting - -Some say humans don't generally love change and that we're primarily creatures of habit, so moving from an office into a home office can be upsetting. And yet, invariably, we've shown that change can be exciting and even good.  - -Use this thought experiment to remember how much you love change. Would you willingly revert to technology from even two years ago? How about five, or ten? - -If we can embrace change in technology and be uninterested in reverting back, why not embrace change elsewhere? - -When you work from home, you have the opportunity to be willing to explore change. If you find that a meeting time doesn't work for your schedule, mention it to your team. It may not work for them, either, and moving it to a different day could mean making room for a work sprint that knocks out a good chunk of your work for the week. If you find that a tool isn't working out for you, find a different one. - -In fact, some of the most productive people are constantly evaluating new applications and new methods of working. They're constantly learning new things, developing new skills. They don't do this because they need the new skill, at least not by the letter of their work contract, but learning new things often reveals a surprising applicability to something they do need. - -Need some examples? Tinkering with a Raspberry Pi for fun could result in a home server running [useful apps][13] to help you stay informed. [Learning][14] how to [write in Markdown][15] could introduce you to a new and more efficient workflow than you ever knew possible. Setting up a [computer with Linux][16] could reveal a new world of open source software that changes the way you approach problems, and improves the methods you use to solve them. The possibilities are limitless, but if you don't know where to start, you can browse through some of our articles or [cheat sheets][17] for ideas and tips. - -### Working from home is a new opportunity - -The habits we've built up around work aren't always healthy or efficient or fun. If you're starting to work from home, though, it's a chance to reinvent what work means for you. Keep the lines of [communication open][18] with your colleagues, embrace new ideas and the potential of change, and discover how you can be more productive by enjoying yourself and the place you call home (and **$HOME**). - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/3/work-from-home - -作者:[Seth Kenlon][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/seth -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/wfh_work_home_laptop_work.png?itok=VFwToeMy (Working from home at a laptop) -[2]: https://opensource.com/alternatives/slack -[3]: https://opensource.com/alternatives/skype -[4]: https://opensource.com/article/19/9/to-do-list-managers-linux -[5]: https://opensource.com/article/20/1/open-source-to-do-list -[6]: https://opensource.com/article/18/2/agile-project-management-tools -[7]: https://opensource.com/article/19/9/drawing-vectors-scratch-3 -[8]: https://opensource.com/article/18/4/designing-game-scratch-open-jam -[9]: https://opensource.com/education/13/8/student-programming-scratch-and-finch -[10]: https://opensource.com/alternatives/minecraft -[11]: https://opensource.com/article/17/3/arduino-garden-projects -[12]: https://opensource.com/article/19/12/seeeduino-nano-review -[13]: https://opensource.com/article/20/2/newsboat -[14]: https://opensource.com/article/19/9/introduction-markdown -[15]: https://opensource.com/article/18/11/markdown-editors -[16]: https://opensource.com/article/19/9/found-linux-video-gaming -[17]: https://opensource.com/article/20/1/cheat-sheets-guides -[18]: https://opensource.com/article/20/3/open-source-working-home diff --git a/sources/talk/20200330 Know the benefits of cloud-native networking for SASE.md b/sources/talk/20200330 Know the benefits of cloud-native networking for SASE.md deleted file mode 100644 index e4c38f352e..0000000000 --- a/sources/talk/20200330 Know the benefits of cloud-native networking for SASE.md +++ /dev/null @@ -1,82 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Know the benefits of cloud-native networking for SASE) -[#]: via: (https://www.networkworld.com/article/3534720/know-the-benefits-of-cloud-native-networking-for-sase.html) -[#]: author: (Zeus Kerravala https://www.networkworld.com/author/Zeus-Kerravala/) - -Know the benefits of cloud-native networking for SASE -====== -Shlomo Kramer, CEO of Cato Networks discusses the benefits cloud-native networking brings to SASE -Metamorworks / Getty Images - -Gartner has positioned secure access service edge (SASE) as the next wave of SD-WANs. While most industry people I talk to agree on the concept of security and networking being brought together, there is some debate surrounding cloud-native versus cloud-managed. - -To get a better understanding of why cloud native matters, I sat down with Shlomo Kramer, CEO of Cato Networks, which designed its SASE service from the ground up for cloud delivery. - -**Last year Gartner coined the term SASE, do you agree or disagree with their premise?** - -[[Get regularly scheduled insights by signing up for Network World newsletters.]][1] - -Well I definitely agree.  The manifesto that Cato was founded on was the vision of converging network transport and network security and delivering it as a cloud service. The argument as to why you need SASE is topological in nature because traffic patterns have changed. Network traffic used to be inward bound because people sat at their desks, using corporate workstations and connecting to enterprise applications that resided in the company data centers. - -That meant security was effectively a hard shell placed around a soft core.  Security was applied at the edge and protected all the physical locations behind it. Today, the traffic patterns have changed, and the security needs to be applied everywhere.  Applications are built in AWS as well as on-premises, workers are in the office, at home and in the hotel or anywhere.  So now corporate assets are everywhere so the hard shell no longer works.  Security needs to be different and be integrated everywhere so I absolutely agree with the concept of SASE. - -**What are some other challenges with legacy technologies like MPLS and security appliances?** - -**T**he problems with MPLS are well documented, so I won’t spend too much time on this topic other than say every company we talk to wants to move off of MPLS because of high costs, long deployment times and a lack of agility.  MPLS does nothing for mobile users or cloud connectivity so organizations need to deploy VPN servers, cloud interconnects and other technologies to connect all of their company resources. - -[][2] - -On the security side, branch appliances have been an enormous problem that we as an industry accepted as the only possible solution.  Appliances need to be procured, deployed, maintained, upgraded and retired. All of which takes time and effort. They need to be integrated with one another, which requires more time and skills. Most appliances are managed from separate management consoles making operations complex and challenging.  Over time, more appliances are added, which raises the complexity level.  Also, when traffic jumps or too many features are turned on, upgrades are often required outside budget cycles.  Security professionals often lag behind when applying software patches because updating appliances is risky and needs to be carefully planned, leaving the company at risk. - -I can go on, but _appliances_ as an architecture involve too many headaches and too much cost for companies looking to become leaner and more agile. And by appliances, I also mean VNFs and virtual appliances. It's the same story again. You still need to deploy, manage and scale them. Appliances are a poor choice not because of anyone's solution's limitations but because of the architecture itself. - -**What benefit do cloud-native platforms provide?** - -For Gur (Co-Founder of Cato, Gur Shatz) and myself, who came from the security and networking worlds, we were well acquainted with these problems. As we thought about what the right architecture would be moving forward, the cloud seemed like the obvious choice. We had already seen how cloud computing changed markets for data centers, servers, storage, and applications. We thought the cloud could do the same for security and networking.  - -Like AWS for data centers and servers, we wanted to create a utility that would secure and network the complete enterprise, not just sites, but also remote users, cloud data centers, cloud applications, and third-party devices. We wanted enterprises to "tap" into this utility and instantly receive all the advanced security and networking services for the entire organization. It's why we called our SD-WAN device the "Cato Socket," like an electrical socket you plug into. This vision is in line with the SASE definition. - -Instead of appliances, we move the “heavy lifting” involved in security and networking into a global, distributed, cloud-native software platform. By cloud-native software, we mean several things.  We actually wrote a [blog on this topic][3] that talks about the value of cloud-native.  There are many benefits but in particular, multi-tenancy is game-changing. This allows cloud providers to amortize costs across their customer base, allowing them to deliver offerings at a price point unmatched by one based on purchasing appliances for customers.  - -This platform runs our single-pass, security and networking stack that performs all security inspections in parallel. A packet comes in, depacketized and decrypted by our software that then performs all the necessary security inspections in parallel before sending the packet on.  This is an incredible change from the way appliances work today. Today, each appliance must depacketize and decrypt packets, run a deep packet inspection (DPI) engine to understand the packet, apply the specific security inspections, and repacketize and re-encrypt for the next appliance to do the same.   - -**You’ve also stated that a global private network is necessary, why is that?** - -As for the network, enterprises require predictable, low latency performance everywhere all the time. That's simply not possible with Internet routing today when broadband is used. While the problems of unpredictable latency across global routes or in under-developed Internet regions is well known even within Internet regions, we've seen specific routes have problems.   - -How do you overcome latency AND the global connectivity costs of MPLS? Our answer was to leverage the massive build-out in global IP connectivity. By buying massive wholesale SLA-backed capacity across multiple IP backbones, and then dynamically selecting the best backbone at each hop across our network, we could deliver global, low-latency connections at a fraction of the cost of MPLS.    - -**The SASE industry is currently filled with start-ups and smaller vendors.  Why are the big incumbents struggling to make this shift?** - -** ** - -I think it should be evident by now, but existing appliance-based solutions simply can't be converted to become cloud-native. Re-engineering a platform for the cloud requires massive investments in R&D, which will come at the expense of existing and very successful product lines, so beyond engineering, there is also an internal conflict to overcome.    - -And that's why the "big incumbents," as you put it, are so threatened by SASE. We all recognize that SASE is the future, but to get that to that future, many of the established solution providers will need to disrupt their existing businesses. That's not easy to do, but what they can do is market.  - -We, as an industry, are seeing vendors trying to capitalize on SASE by rebranding their solutions as SASE offerings. Some are appliances without cloud capabilities; others are security services without networking capabilities. For IT to tell the difference between a true SASE platform and a "fake" one, the litmus test is simple: If the center of gravity is in the appliances. If the offer lacks SD-WAN and if there is more than one management console. It's not SASE, and it's not the future. It's a repackaging of the past.   - -Join the Network World communities on [Facebook][4] and [LinkedIn][5] to comment on topics that are top of mind. - --------------------------------------------------------------------------------- - -via: https://www.networkworld.com/article/3534720/know-the-benefits-of-cloud-native-networking-for-sase.html - -作者:[Zeus Kerravala][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://www.networkworld.com/author/Zeus-Kerravala/ -[b]: https://github.com/lujun9972 -[1]: https://www.networkworld.com/newsletters/signup.html -[2]: https://www.networkworld.com/blog/itaas-and-the-corporate-storage-technology/?utm_source=IDG&utm_medium=promotions&utm_campaign=HPE22140&utm_content=sidebar (ITAAS and Corporate Storage Strategy) -[3]: https://www.catonetworks.com/blog/the-cloud-native-network-what-it-means-and-why-it-matters/ -[4]: https://www.facebook.com/NetworkWorld/ -[5]: https://www.linkedin.com/company/network-world diff --git a/sources/talk/20200330 SASE might be better than VPNs for quickly ramping up remote access.md b/sources/talk/20200330 SASE might be better than VPNs for quickly ramping up remote access.md deleted file mode 100644 index 10f3abab83..0000000000 --- a/sources/talk/20200330 SASE might be better than VPNs for quickly ramping up remote access.md +++ /dev/null @@ -1,98 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (SASE might be better than VPNs for quickly ramping up remote access) -[#]: via: (https://www.networkworld.com/article/3534501/sase-might-be-better-than-vpns-for-quickly-ramping-up-remote-access.html) -[#]: author: (Linda Musthaler https://www.networkworld.com/author/Linda-Musthaler/) - -SASE might be better than VPNs for quickly ramping up remote access -====== -A secure access service edge model can quickly grow remote-worker capacity without requiring enterprises to deploy their own new VPN gear. -Getty Images - -The global pandemic now hitting almost every corner of the world is forcing countless millions of people to work from home. In one sense, we’re fortunate to now have the technology that allows us to do that. Between broadband Internet access in the home, corporate VPNs, team workspaces and videoconferencing services, many people can continue to do their jobs as effectively as if they were in their regular office environment. - -That doesn’t mean it’s all smooth sailing for the IT departments that have to enable and support those critical work-from-home services. Depending on the type of network architecture a company has, it can be relatively easy or significantly challenging to support tens of thousands of employees now suddenly working from home. - -[[Get regularly scheduled insights by signing up for Network World newsletters.]][1] - -I recently talked with Mark Casey, CEO of the network infrastructure services provider [Apcela][2], who conveyed the challenges that many large enterprises have. It’s these companies that typically still have a traditional hub-and-spoke kind of WAN anchored in a physical data center. Corporate traffic is backhauled from branch and remote locations (like workers’ homes) to a centralized [data center][3] to pass through a security stack before it is sent to the internet or to cloud services. Unfortunately, this legacy network architecture doesn’t adapt well to the dramatically different traffic patterns resulting from a massive surge in telework. - -When you look at the [VPN][4] architecture in this environment, it’s largely dominated by Cisco with its AnyConnect solution that pairs with the vendor’s ASA [firewall][5] products. Countless large enterprises have these hardware appliances in their on-premises data centers. Whether it’s Cisco equipment or some other vendor’s, the VPN/firewall combination is a real workhorse under normal conditions, but the vast increase in remote workers is causing a strain. - -**VPN capacity is strained** - -A home-based worker brings up a VPN connection that creates a secure tunnel to take him straight into the data center. This might be fine when the company expects 10% to 20% of its employees to work remotely at any given time, but now the numbers might approach 50% or 70%. This creates contention for resources and a poor VPN experience for all. What’s more, workers are routing a bunch of internet traffic to the data center along with traffic destined for on-premise applications like [Microsoft Office 365][6]. This is the landscape that Casey sees every day as he engages with large enterprise organizations. - -“We’ve talked to a number of companies recently that say they need to expand their VPN capacity but the legacy network architecture is holding them back. [Cisco][7], Palo Alto and others are offering free VPN client licenses but the enterprises still need to expand the VPN terminating appliances. It’s hard to quickly scale capacity in this environment,” says Casey. “Whether it’s coronavirus or some other catalyst that puts stress on the legacy network environment, we advocate that enterprises should diversify and shift portions of their network architecture to the cloud. This will give them much more flexibility to provide security and remote access services to their workforce in the long run.” - -[][8] - -**SASE for flexibility and capacity on demand** - -Casey points to the [Secure Access Service Edge][9] (SASE, pronounced “sassy”) framework as a model for re-architecting the enterprise network. SASE is Gartner’s name for a combination of [SD-WAN][10] capabilities with a number of security services that are primarily delivered through a cloud-based delivery model. - -Gartner defines the service edge as an offering that supports the access needs of digital enterprises by combining SD-WAN functions with network security services such as secure web gateway (SWG), cloud access security broker (CASB), and cloud-based firewall. In short, a SASE offering helps simplify network management by offering highly customizable policy-based control that can be tailored by user identity, session context, and application needs for performance and security – and it’s delivered from the cloud.  - -Casey explains the concept of a service edge with a geographical example. “Suppose an employee is VPNing into his corporate network from his New York area home, and the data center happens to be in Chicago. Ordinarily the traffic would all be directed to Chicago, but if he’s accessing internet content, it would be optimal to egress that traffic via secure web gateway much more locally to where the user is. It’s better to go to a site in New York where the VPN terminates on a local firewall, and there’s a secure web gateway there so the Internet traffic can be offloaded there instead of backhauling it to Chicago. This site in New York is called the service edge.” - -Casey continues his explanation: “A virtualized version of a company’s firewall sits in the hub. The VPN terminates on the VPN concentrator in the local hub and then the traffic is routed appropriately. That traffic going to the internet goes out through secure web gateway and that traffic that's destined for an application in the data center goes over a private network inside the security parameters. This is essentially another tunnel back to the data center. And that's a great use case for this whole concept of SASE, which is to lift some of your core security components and move them out to the cloud.” - -With the word cloud, people tend to think of AWS or Azure or Google Cloud Platform, but Casey gives cloud a broader definition. “Cloud is Software as a Service, like Salesforce and ServiceNow,” says Casey. “If you’re an enterprise, cloud is an Equinix data center. Cloud is anything that’s not you, and it’s delivered as a service.” - -**The service edge is a powerful hub** - -In Apcela’s parlance, a service edge is called an application hub, or AppHub. Other companies call them communication hubs, cloud hubs, or simply Points of Presence (PoPs). Regardless of the name, the concept is the same. - -These hubs consist of racks of switching and routing equipment that are typically deployed in carrier-neutral co-location centers. Then these data centers are interconnected with high-capacity, low-latency circuits that create a high-performance core network. SD-WAN, VPN and security stacks are typically deployed in the hubs. At the edge of this network, an enterprise can directly connect its own data centers, branch offices, remote and mobile users, and even third-party partners. The leading SASE providers have built hubs, or PoPs, around the world so that organizations and their workers can connect to the closest hub to obtain the communication and security services they need. Each enterprise chooses what services it wants to utilize. - -When considering how to deploy security as a virtual service, Casey says, “You don't necessarily want to put all the security in AWS because then it will work great with AWS, but it won't work for GCP or Azure, and it certainly won't help you for your SaaS applications. So having this hub environment that sits between the application clouds – Salesforce, Office 365, Workday, etc. – and the users and enterprise locations is the perfect location to put these security services. And because the hubs are essentially an Infrastructure as a Service, you're not stuck with having to move to some proprietary cloud-based platform.” - -SASE infrastructure is essentially on demand, so it’s fairly easy for new customers to adopt it. “It’s not complicated,” says Casey. “We have to find a place, somewhere in the world, and cross connect back into an enterprise’s infrastructure to deliver private connectivity. But it's all very cloud-like. It takes the agility of cloud and the speed of cloud and enables you to act quickly.” - -**SASE has VPN capacity pre-built** - -The SASE model allows companies to expand their VPN platforms easily because the capability is all pre-built. Once the service is turned on, the company is well positioned to support thousands of new home-based workers. - -I asked Casey about a realistic timeframe for companies that are new to the SASE approach before they can expect to be up and running with expanded VPN capacity. “I can only speak to the solution Apcela offers, of course, but I’d say it’s a matter of days to weeks, but certainly not months,” he says. “In our case, it depends on their security platform because we leverage virtualized network functions on the security side, so the whole concept of procuring and shipping equipment goes away.” Other vendors might do the deployment in different ways. - -Contrast this approach to the legacy model of installing new hardware in a data center to provide more capacity. By the time the company orders the hardware, gets it shipped to the data center, and then installed and configured, two or three months might pass. - -Another benefit of the SASE framework is that traffic travels over a private core network rather than the public Internet. “The Internet shouldn’t become your new [WAN][11] – certainly not for business and mission-critical platforms. You need a specialized sort of [MPLS][12]-like network for your cloud apps, which is what a SASE platform does,” says Casey. “Traffic is taken off the Internet at the secure edge, put onto a private secure network and routed directly to the appropriate SaaS or IaaS platform data center.” - -Having a private core network is especially important at this time because the public Internet is under great strain due to the traffic and content pattern shifts now that so many people are staying home or working from home. The [strain is so bad][13] that companies like Facebook and Netflix have been asked by the European Commissioner for internal market and services to throttle their services to consume less bandwidth. As Casey says, “You don’t want your corporate traffic to compete for bandwidth against Netflix and all these different videoconferencing services.” - -If your organization is struggling with ramping up work-from-home capacity in a hurry, consider how a SASE service might help you. - -Join the Network World communities on [Facebook][14] and [LinkedIn][15] to comment on topics that are top of mind. - --------------------------------------------------------------------------------- - -via: https://www.networkworld.com/article/3534501/sase-might-be-better-than-vpns-for-quickly-ramping-up-remote-access.html - -作者:[Linda Musthaler][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://www.networkworld.com/author/Linda-Musthaler/ -[b]: https://github.com/lujun9972 -[1]: https://www.networkworld.com/newsletters/signup.html -[2]: https://www.apcela.com/ -[3]: https://www.networkworld.com/article/3223692/what-is-a-data-centerhow-its-changed-and-what-you-need-to-know.html -[4]: https://www.networkworld.com/article/3268744/understanding-virtual-private-networks-and-why-vpns-are-important-to-sd-wan.html -[5]: https://www.networkworld.com/article/3230457/what-is-a-firewall-perimeter-stateful-inspection-next-generation.html -[6]: https://techcommunity.microsoft.com/t5/office-365-blog/how-to-quickly-optimize-office-365-traffic-for-remote-staff-amp/ba-p/1214571; -[7]: https://blogs.cisco.com/security/cisco-expands-free-security-offerings-to-help-with-rise-in-remote-workers -[8]: https://www.networkworld.com/blog/itaas-and-the-corporate-storage-technology/?utm_source=IDG&utm_medium=promotions&utm_campaign=HPE22140&utm_content=sidebar (ITAAS and Corporate Storage Strategy) -[9]: https://www.networkworld.com/article/3516503/it-pros-need-to-weigh-in-on-that-sassy-security-model.html -[10]: https://www.networkworld.com/article/3031279/sd-wan-what-it-is-and-why-you-ll-use-it-one-day.html -[11]: https://www.networkworld.com/article/3248989/what-is-a-wan-wide-area-network-definition-and-examples.html -[12]: https://www.networkworld.com/article/2297171/network-security-mpls-explained.html -[13]: https://mashable.com/article/eu-netflix-standard-definition-coronavirus/ -[14]: https://www.facebook.com/NetworkWorld/ -[15]: https://www.linkedin.com/company/network-world diff --git a/sources/talk/20200401 How enterprise networking is changing with a work-at-home workforce.md b/sources/talk/20200401 How enterprise networking is changing with a work-at-home workforce.md deleted file mode 100644 index f87bc0a8f8..0000000000 --- a/sources/talk/20200401 How enterprise networking is changing with a work-at-home workforce.md +++ /dev/null @@ -1,114 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (How enterprise networking is changing with a work-at-home workforce) -[#]: via: (https://www.networkworld.com/article/3534037/how-enterprise-networking-is-changing-with-a-work-at-home-workforce.html) -[#]: author: (Michael Cooney https://www.networkworld.com/author/Michael-Cooney/) - -How enterprise networking is changing with a work-at-home workforce -====== -Network World updates the latest COVID-19-related networking news -Ig0rZh / Getty Images - -_As the coronavirus spreads, public and private companies as well as government entities are requiring employees to work from home, putting unforeseen strain on all manner of networking technologies and causing bandwidth and security concerns.  What follows is a round-up of news and traffic updates that Network World will update as needed to help keep up with the ever-changing situation.  Check back frequently!_ - -UPDATE: 3.30 - -AT&T said its core network traffic – which includes business, home broadband and wireless  – was up 24% through March 30 compared to the same day last month.  It broke down some mobility traffic patterns as well: voice calls: +33%, instant messaging: +63%, text messaging: +41%, email: -18%, web browsing: -5%, video: +4% (also accounts for over half of all mobility traffic). It also usage for conferencing: AT&T’s global audio-conferencing solution: +200%; audio, web and video conferencing tools: +400%; Large-scale webcast events: +200%. - -[RELATED: Firewall face-off for the enterprise][1] - -AT&T said its investment in artificial intelligence technology is helping it keep up with demand. For example, the company said AI is helping remotely troubleshoot and diagnose problems with customer equipment, by identifying the cause or even proactively identifying a potential issue before it occurs. “We’ve expedited deployments of new AI capabilities in certain markets that will allow us to balance the traffic load within a sector and across sectors to help avoid overloading specific cells and improve the experience.” - -DNS vendor BlueCat says it has been tracking the use of DNS over HTTPS (DoH) – a method of encrypting queries to prevent visibility into DNS traffic patterns.  Over the last week through March 27, the company said it has  seen a massive increase in the use of DoH across its customer base wrote Ben Ball, director of strategy and content marketing at BlueCat in a [blog][2] about the trend. “In the course of a single weekend, the number of endpoints attempting to use DoH went from an average of 90 to about 1,400.  That’s a 1,500% increase in the use of DoH. Around 45% of these queries are from Firefox (which now activates DoH by default).  Aside from that, we’re seeing queries to eleven different DoH services from all kinds of applications. DoH usage is fairly uniform across our customer base as well – this isn’t one company or industry vertical; this is a broad trend. While we haven’t seen any clear indications that any of these queries are from [DoH enabled malware][3], that is an emerging threat that we are tracking,” Ball stated. - -Ookla’s [SpeedTest][4] shows mean download speed over fixed broadband declined only slightly in Mexico and the U.S. when comparing the week of March 23 to that of March 16, while a decline in Canada’s mean download speed over fixed broadband was more evident. Mean download speed over mobile was down in the U.S. and Canada during the week of March 23, while it rose slightly in Mexico during the same period. - -**UPDATE 3.27** - -[][5] - -Broadband watchers at [BroadbandNow][6] say users in most of the cities it analyzed are experiencing normal network conditions, suggesting that ISP’s (and their networks) are holding up to the shifting demand. In a March 25 [post][7] the firm wrote: “Encouragingly, many of the areas hit hardest by the spread of the coronavirus are holding up to increased network demand. Cities like Los Angeles, Chicago, Brooklyn, and San Francisco have all experienced little or no disruption. New York City,  now the epicenter of the virus in the U.S., has seen a 24% dip out of its previous ten-week range. However, with a new median speed of nearly 52 Mbps, home connections still appear to be holding up overall.” - -Other BroadbandNow findings included: - - * Eighty eight (44%) of the 200 cities it analyzed experienced some degree of network degradation over the past week compared to the 10 weeks prior. However, only 27 (13.5%) cities experienced dips of 20% below range or greater. - * Seattle download speeds have continued to hold up over the past week, while New York City’s speeds have fallen out of range by 24%. Both cities are currently heavily affected by the coronavirus pandemic. - * Three cities – Austin, Texas, Winston Salem, N.C., and Oxnard, Calif. – have experienced significant degradations, falling out of their 10-week range by more than 40%. - - - -Cisco’s Talos threat-intelligence arm [wrote][8] on March 26 about the COVID security threat noting what it called three broad categories of attacks leveraging COVID with known advanced persistent threat participation in: [Malware and phishing campaigns][9] using COVID-themed lures; attacks against organizations that carry out research and other work related to COVID; and fraud and disinformation. From an enterprise security perspective, Talos recommended: - - * Remote access: Do not expose Remote Desktop Protocol (RDP) to the internet. Use secure VPN connections with multi-factor authentication schemes. Network access control packages can be used to ensure that systems attempting to remotely connect to the corporate environment meet a minimum set of security standards such as anti-malware protection, patch levels, etc,. prior to granting them access to corporate resources. Continually identify and remediate access-policy violations. - * Identity Management: Protect critical and public-facing applications with multi-factor authentication and supporting corporate policies. Verify that remote-account and access-termination capabilities work as intended in a remote environment. - * Endpoint Control: Because many people may be working from home networks, endpoint visibility, protection, and mitigation is now more important than ever. Consider whether remediation and reimaging capabilities will work as intended in a remote environment. Encrypt devices where possible, and add this check to your NAC solution as a gate for connectivity. Another simple method of protecting endpoints is via DNS, such as with [Cisco’s] Umbrella, by blocking the resolution of malicious domains before the host has a chance to make a connection. - - - -In an [FAQ][10] about the impact of COVID-19 on fulfilling customer hardware orders, VMware stated: “Some VMware SD-WAN hardware appliances are on backorder as a result of supply chain issues. As a result, we are extending the option to update existing orders with different appliances where inventory is more readily available. Customers may contact a special email hotline with questions related to backordered appliances. Please send an email to [sd-wan-hotline@vmware.com][11] with your questions and include the order number, urgent quantities, and contact information. We will do our best to respond within 48 hours.” - -Cisco said it has been analyzing traffic statistics with major carriers across Asia, Europe, and the Americas, and its data shows that typically, the most congested point in the network occurs at inter-provider peering points, Jonathan Davidson, senior vice president and general manager of Cisco's Mass-Scale Infrastructure Group wrote in a [blog][12] on March 26. “However, the traffic exchanged at these bottlenecks is only a part of the total internet traffic, meaning reports on traffic may be higher overall as private peering and local destinations also contribute to more traffic growth.” - -“Our analysis at these locations shows an increase in traffic of 10% to 33% over normal levels. In every country, traffic spiked with the decision to shut down non-essential businesses and keep people at home. Since then, traffic has remained stable or has experienced a slight uptick over the days that followed,” Davidson stated. - -He said that traffic during peak hours from 6 p.m. and 10 p.m. has increased slightly, but is not the primary driver for the overall inrease. Busy hours have extended to 9 a.m. 10 p.m., although the new busy-hour (9 a.m. to 6 p.m.) traffic is still below the traditional peak hours. "Service providers are certainly paying attention to these changes, but they are not yet a dire concern, as most networks are designed for growth. Current capacities are utilized more over the course of the entire day,” he wrote. - -Spanish multinational telecommunications company [Telefonica][13]’ said IP networks are experiencing traffic increases of close to 40% while mobile voice use is up about 50% and data is up 25%. In general, traffic through IP networks has experienced increases of nearly 40% while mobile use has increased by about 50% for voice and 25% for data. Likewise, traffic from instant-messaging tools such as Whatsapp has increased fivefold in recent days. - -**UPDATE: 3.26** - - * Week over week (ending March 23) [Ookla][14] says it has started to see a degradation of mobile and fixed-broadband performance worldwide. More detail on specific locations is available below. Comparing the week of March 16 to the week of March 9, mean download speed over mobile and fixed broadband decreased in Canada and the U.S. while both remained relatively flat in Mexico. - * What is the impact of the coronavirus on corporate network planning? Depends on how long the work-from-home mandate goes on really. Tom Nolle, president of CIMI Corp. [takes an interesting look at the situation][15] saying the shutdown “could eventually produce a major uptick for SD-WAN services, particularly in [managed service provider]    Businesses would be much more likely to embark on an SD-WAN VPN adventure that didn’t involve purchase/licensing, favoring a service approach in general, and in particular one with a fairly short contract period.” - * Statistics from VPN provider [NordVPN][16] show the growth of VPN usage across the globe.  For example, the company said the US has experienced a 65.93% growth in the use of business VPNs since March 11. It reported that mass remote working has contributed towards a rise in desktop (94.09%) and mobile app (0.39%) usage among Americans. Globally, NordVPN teams has seen a 165% spike in the use of business VPNs and business VPN usage in Netherlands (240.49%), Canada (206.29%) and Austria (207.86%) has skyrocketed beyond 200%. Italy has had the most modest growth in business VPN usage at just 10.57%. - - - -**UPDATE: 3. 25**: - - * According to [Atlas VPN][17] user data, VPN usage in the US increased by 124% during the last two weeks. VPN usage in the country increased by 71% between March 16 and 22 alone. Atlas said it measured how much traffic traveled through its servers during that period compared to March 9 to 15. The data came from the company's 53,000 weekly users. - * Verizon [reports][18] that voice usage, long declining in the age of texting, chat and social media, is up 25% in the last week. The network report shows the primary driver is accessing conference calls. In addition, people are talking longer on mobile devices with wireless voice usage notching a 10% increase and calls lasting 15% longer.  - * AT&T also [reported][19] increased calling, especially Wi-Fi calling, up 88% on March 22 versus a normal Sunday. It says that consumer home voice calls were up 74% more than an average Sunday; traffic from Netflix dipped after all-time highs on Friday and Saturday; and data traffic due to heavy video streaming between its network and peered networks tied record highs. AT&T said it has deployed portable cell nodes to bolster coverage supporting FirstNet customers in Indiana, Connecticut, New Jersey, California and New York. - * Microsoft this week advised users of Office 365 it was throttling back some services: - * **OneNote: ** OneNote in Teams will be read-only for commercial tenants, excluding EDU. Users can go to OneNote for the web for editing. Download size and sync frequency of file attachments has been changed. You can find details on these and other OneNote related updates as . - * **SharePoint:** We are rescheduling specific backend operations to regional evening and weekend business hours. Impacted capabilities include migration, DLP and delays in file management after uploading a new file, video or image. Reduced video resolution for playback videos. - * **Stream:** People timeline has been disabled for newly uploaded videos. Pre-existing videos will not be impacted. Meeting recording video resolution adjusted to 720p. - - - -**RELATED COVID-19 NEWS:** - --------------------------------------------------------------------------------- - -via: https://www.networkworld.com/article/3534037/how-enterprise-networking-is-changing-with-a-work-at-home-workforce.html - -作者:[Michael Cooney][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://www.networkworld.com/author/Michael-Cooney/ -[b]: https://github.com/lujun9972 -[1]: https://www.networkworld.com/article/3189176/security/face-off-cisco-vs-fortinet-for-enterprise-firewalls.html -[2]: https://www.bluecatnetworks.com/blog/wfh-doh/ -[3]: https://blog.netlab.360.com/an-analysis-of-godlua-backdoor-en/ -[4]: https://www.speedtest.net/insights/blog/tracking-covid-19-impact-global-internet-performance/ -[5]: https://www.networkworld.com/blog/itaas-and-the-corporate-storage-technology/?utm_source=IDG&utm_medium=promotions&utm_campaign=HPE22140&utm_content=sidebar (ITAAS and Corporate Storage Strategy) -[6]: https://broadbandnow.com/ -[7]: https://broadbandnow.com/report/internet-speed-analysis-march-15th-21st/ -[8]: https://blog.talosintelligence.com/2020/03/covid-19-pandemic-threats.html -[9]: https://blog.talosintelligence.com/2020/02/coronavirus-themed-malware.html -[10]: https://www.vmware.com/company/news/updates/vmware-response-covid-19.html?mid=31381&eid=CVMW2000048242496 -[11]: mailto:sd-wan-hotline@vmware.com -[12]: https://blogs.cisco.com/news/global-traffic-spikes-no-panic-at-the-cisco -[13]: https://www.telefonica.com/en/web/press-office/-/telefonica-announces-measures-related-to-covid-19 -[14]: https://downdetector.com/?utm_campaign=Ookla%20Insights%20Blog%20Subscription&utm_source=hs_email&utm_medium=email&utm_content=85202785&_hsenc=p2ANqtz--Nj93d_eQyJpsqxrPJyNPtTiMBWBQU984psLyalw51K61e4d1WODareMF5NWFriHY2Uzw3WF7rF-2vSfH5cR53Jg3K5Q&_hsmi=85202785 -[15]: https://blog.cimicorp.com/?p=4068 -[16]: https://nordvpnteams.com/ -[17]: https://atlasvpn.com/blog/lockdowns-and-panic-leads-to-a-124-surge-in-vpn-usage-in-the-us/ -[18]: https://www.verizon.com/about/news/update-verizon-serve-customers-covid-19 -[19]: https://about.att.com/pages/COVID-19.html diff --git a/sources/talk/20200402 When debugging, your attitude matters.md b/sources/talk/20200402 When debugging, your attitude matters.md deleted file mode 100644 index 6968d3f8e3..0000000000 --- a/sources/talk/20200402 When debugging, your attitude matters.md +++ /dev/null @@ -1,101 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: (name1e5s) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (When debugging, your attitude matters) -[#]: via: (https://jvns.ca/blog/debugging-attitude-matters/) -[#]: author: (Julia Evans https://jvns.ca/) - -When debugging, your attitude matters -====== - -A while back I wrote [What does debugging a program look like?][1] on what to do when debugging (change one thing at a time! check your assumptions!). - -But I was debugging some CSS last week, and I think that post is missing something important: **your attitude**. - -Now – I’m not a very good CSS developer yet. I’ve never written CSS professionally and I don’t understand a lot of basic CSS concepts (I think I finally understood for the first time recently how `position: absolute` works). And last week I was working on the most complicated CSS project I’d ever attempted. - -While I was debugging my CSS, I noticed myself doing some bad things that I normally would not! I was: - - * making random changes to my code in the hopes that it would work - * googling a lot of things and trying them without understanding what they did - * if something broke, reverting my changes and starting again - - - -This strategy was exactly as effective as you might imagine (not very effective!), and it was because of my attitude about CSS! I had this unusual-for-me belief that CSS was Too Hard and impossible for me to understand. So let’s talk about that attitude a bit! - -### the problem attitude: “this is too hard for me to understand” - -One specific problem I was having was – I had 2 divs stacked on top of one another, and I wanted Div A to be on top of Div B. My model of CSS stacking order at the start of this was basically “if you want Thing A to be on top of Thing B, change the z-index to make it work”. So I changed the z-index of Div A to be 5 or something. - -But it didn’t work! In Firefox, div A was on top, but in Chrome, Div B was on top. Argh! Why? CSS is impossible!!! - -I googled a bit, and I found out that a possible reason z-index might not work was because Div A and Div B were actually in different “stacking contexts”. If that was true, even if I set the z-index of Div A to 999999 it would still not put it on top of Div B. ([here’s a small example of what this z-index problem looks like, though I think my specific bug had some extra complications][2]) - -I thought “man, this stacking context thing seems really complicated, why is it different between Firefox and Chrome, I’m not going to be able to figure this out”. So I tried a bunch of random things a bunch of blog posts suggested, which as usual did not work. - -Finally I gave up this “change random things and pray” strategy and thought “well, what if I just read the documentation on stacking order, maybe it’s not that bad”. - -So I read the [MDN page on stacking order][3], which says: - -> When the z-index property is not specified on any element, elements are stacked in the following order (from bottom to top): -> 1\. The background and borders of the root element -> 2\. Descendant non-positioned blocks, in order of appearance in the HTML -> 3\. Descendant positioned elements, in order of appearance in the HTML - -This is SO SIMPLE! It just depends on the order in the HTML! I put Div A after Div B in the HTML (as a sibling) and it made everything work in both browsers. - -### better attitude: “let’s learn the basics and see if that helps” - -This whole stacking problem turned out to really not be that complicated – all I needed to do was read a very short and simple documentation page to understand how stacking works! - -Of course, computer things are not always this simple (and even in this specific case the [rules about what creates a new stacking context][4] are pretty complicated.). But I did not need to understand those more complicated rules in order to put Div A on top of Div B! I only needed to know the much simpler 3 rules above. - -So – calm down for a second, learn a few of the basics, and see if that helps. - -### watching people who know what they’re doing is inspiring - -Another area of CSS that I thought was “too hard” for me to understand was this whole `position: absolute` and `position: relative` business. I kept seeing (and sometimes using!) examples where people made complicated CSS things with `position: absolute` but I didn’t understand how they worked. Doesn’t `position: absolute` mean that the element is always in the same place on the screen? Why are these `position: absolute` things moving when I scroll like the rest of the document? (spoiler: no, that’s `position: fixed`.) - -But last week, I paired with someone who’s a lot better at CSS than me on some code, and I saw that they were just typing in `position: absolute` and `position: relative` confidently into their code without seeming confused about it!! Could that be me? - -I looked up the [documentation on MDN][5] on `position: absolute`, and it said: - -> The element is removed from the normal document flow, and no space is created for the element in the page layout. It is positioned relative to its closest positioned ancestor… Its final position is determined by the values of top, right, bottom, and left. - -So things with `position: absolute` are positioned relative to their closest positioned ancestor! And you just use `top/bottom/right/left` to pick where! That’s so simple! - -### documentation that you can trust makes a big difference - -I think another big source of my frustration with CSS is that I didn’t have the best grasp of where to find accurate information & advice. I knew that MDN was a reliable reference, but MDN doesn’t really help answer questions like “ok but seriously how do I center a div???” and I found myself reading a lot of random Stack Overflow answers/blog posts that I wasn’t 100% sure were correct. - -This week I learned about [CSS Tricks][6] which has a lot of GREAT articles like [Centering in CSS: A Complete Guide][7] which seems very reputable and is written in a super clear way. - -### that’s all! - -I don’t really know why I started to believe that it was “impossible” to understand basic CSS concepts since I don’t believe that about computers in general. Maybe because I’ve been writing CSS at a beginner level for a very long time but hadn’t ever really tried to do a more involved CSS project than “let’s arrange some divs in a grid with flexbox”! - -But this attitude really got in the way of me writing the CSS I wanted to write! And once I let go of it and used my normal debugging techniques I was able to get a lot more things to work the way I wanted. - --------------------------------------------------------------------------------- - -via: https://jvns.ca/blog/debugging-attitude-matters/ - -作者:[Julia Evans][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://jvns.ca/ -[b]: https://github.com/lujun9972 -[1]: https://jvns.ca/blog/2019/06/23/a-few-debugging-resources/ -[2]: https://codepen.io/jvns-css-fun/pen/YzXMMdQ -[3]: https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Positioning/Understanding_z_index/Stacking_without_z-index -[4]: https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Positioning/Understanding_z_index/The_stacking_context -[5]: https://developer.mozilla.org/en-US/docs/Web/CSS/position -[6]: https://css-tricks.com -[7]: https://css-tricks.com/centering-css-complete-guide/ diff --git a/sources/talk/20200405 Book review- Nine Lies About Work.md b/sources/talk/20200405 Book review- Nine Lies About Work.md deleted file mode 100644 index a4c06438aa..0000000000 --- a/sources/talk/20200405 Book review- Nine Lies About Work.md +++ /dev/null @@ -1,106 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Book review: Nine Lies About Work) -[#]: via: (https://opensource.com/open-organization/20/4/book-review-nine-lies-about-work) -[#]: author: (Ron McFarland https://opensource.com/users/ron-mcfarland) - -Book review: Nine Lies About Work -====== -An examination of common work misconceptions and how open organizations -are often ahead of the curve. -![Carrot on a stick][1] - -In _Nine Lies About Work_, authors Marcus Buckingham and Ashley Goodall examine what we might consider "common theories" about aspects of contemporary organizational life—and they debunk those theories. The book's so-called "lies" are, therefore, not really lies but rather common beliefs about work that simply aren't accurate in actual working environments today. - -In this review, I'll outline all nine of those misconceptions and explain what the authors believe is really true in the case of each one. But then I'll focus more on explaining the misconceptions that are especially relevant to [open organizations][2]. - -### Liar, liar - -Buckingham and Goodall address the following nine "lies" about work. - -Lie #1—People care about which company they work for. The authors believe that people really care about which team they're directly working on. That is where we [find engagement][3]. - -Lie #2—The best plan wins. The authors believe that the best front-line intelligence and feedback wins. In this rapidly changing world, [plans only tell you where you are now][4] and where you may be in the very near future (that is, in a few weeks or months). - -Lie #3—The best companies cascade goals. The authors believe that the best companies [disseminate downward meaning][5] (that is, public purpose) to their staff. - -Lie #4—The best people are well-rounded. The authors believe that the best people are good only at specific tasks (and not _necessarily_ other tasks). - -Lie #5—People need feedback. The authors believe that people need nonjudgmental, uncritical attention, and to be recognized; they don't need criticism. - -Lie #6—People can reliably rate other people. The authors believe that people can reliably rate their own experience and [evaluate their own performance][6] often better than others can. - -Lie #7—People have potential. The authors believe that every person possesses individual needs and individual feelings of forward momentum and progress. Therefore, their potential cannot be determined. - -Lie #8—Work-life balance matters most. The authors believe that love-in-work matters most. Companies should promote each individual finding the [love of what they do at work][7], then expand on that love. Companies should promote having fun at work, but they rarely do. - -Lie #9—Leadership is a thing. The authors believe that [we each follow people with a vision][8] in which we believe. To say a person is "a good leader" is, therefore, only situational according to individual followers. No universal criteria, rule, or model for effective leadership exists. - -### Teams over companies - -Now let's take a hard look at Lie #1. The authors believe that someone seeking a job will care about the quality of a company, their status inside that company, and their pay, but as soon as work begins, team engagement becomes far more important to them. That's because teams focus on what we do on a daily basis. Those teams might even be unofficial groups inside an organization—"[internal communities][9]," we might call them. Buckingham and Goodall provide eight characteristics of great teams, and these characteristics would ring equally true in [open organization communities][2]. The authors present them separated into two categories—"We"-related and "Me"-related): - - * The members are enthusiastic about the team mission ("We"). - * Each is surrounded by people who share the same values ("We"). - * Their teammates will stand behind them when needed ("We") - * The members feel confident regarding the future of the company ("We"). - * Each member understands what is expected ("Me"). - * Everyone feels they have a chance to use their particular strengths ("Me"). According to a 2018 study from ADP Research Institute, cited in the book's appendix, if we can use our strengths that bring us joy and energizes us 20% of the time at work, total work engagement skyrockets. - * All members can be recognized for excellent work ("Me"). - * The members are challenged to grow ("Me"). - - - -All these characteristics describe a healthy culture in an open organization community. - -According to the authors, a company should explore what [informal, unofficial teams][10] it has and learn what they're involved in. Usually, they say, the average person is on five teams, each with different purposes. Ask people if they have these types of teams (or a single mentor) with whom they can consult inside the company. Larger, more formal groups are less important. - -More important, however, are lunch meetings between informal team members or chats in corners discussing how they can help each other. When I was providing sales seminars, for example, I would walk around the company cafeteria and have these discussions with global sales departments. By doing this, I developed strong communities over a 20-year period. The quality and quantities of these teams are directly connected to employee engagement and are extremely important to the success of a company, according to the authors. An organizational leader's primary job is to create an environment where these teams can grow and thrive. - -### Forget planning - -Next, let's turn to Lie #2: the best plan wins. Buckingham and Goodall believe the best front-line intelligence wins. Open organizations [rely a great deal on bottom-up management techniques][11], which fits nicely into what the authors are saying here. All the action is on the front-line, and real-time reporting to management on situational developments is extremely important, according to the authors. Conditions are changing so fast that [by the time some plans are introduced, they are already out-of-date][12]. That is why open organizations strongly believe in cultivating ground-level decision-making practices. People closest to the issues know what's happening. - -Regarding [open organization principles][2], we might note the emphasis on getting front-line information in real-time and broadly distributing it as much as possible (inclusivity, transparency, broader community), as well as encouraging and reporting front-line suggestions (collaboration, adaptability). Communication is two-way. To share information efficiently and understand when it's needed, Buckingham and Goodall believe that many small, short, frequent meetings are always more productive than large, long, infrequent ones. - -### Don't judge - -Next, let's examine Lie #5: People need feedback. The authors do recognize people's need for nonjudgmental, uncritical attention, and their desire to be recognized. A leader's level of uncritical attention is directly connected to the level of staff engagement. Just asking, "[How are you doing in your work?][13]" and "Well, how can I help?" is all that is needed. - -The authors believe that the worst managers are those that ignore people. Average managers don't ignore people, but they give negative feedback, which weakens their teams' feelings of engagement. The best managers, team leaders, or community leaders don't ignore and don't judge. At least weekly, they simply ask questions and provide help if needed. A high degree of managerial attention directly improves front-line engagement. The authors believe that it makes members feel connected, supported, and understood. - -Buckingham and Goodall believe that looking at a staff's negative qualities is a natural tendency. Therefore, leaders and managers must make strong efforts to avoid doing so. This effort is worth it, the authors argue, as it results in greater performance, engagement, and growth. For example, when I was giving sales manager training, I frequently needed to address the situation of handling sales staff coming to the manager to help them with a customer problem. I recommended that the manager just ask the sales staff a simple question: "What did you do and say when you met the customer, and what would you do differently if you could visit the customer all over again?" This forced salespeople to come up with their own advice. - -### Concluding thoughts - -_Nine Lies about Work_ has much to teach anyone interested in open organizations. Buckingham is a global researcher in human strengths development and performance; Goodall is a senior VP in leadership and team intelligence at Cisco. It is amazing how closely their beliefs align with open organization principles. The ways they articulate those beliefs in this book are enlightening. - --------------------------------------------------------------------------------- - -via: https://opensource.com/open-organization/20/4/book-review-nine-lies-about-work - -作者:[Ron McFarland][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/ron-mcfarland -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/BUSINESS_pink2.png?itok=I5Wgct6V (Carrot on a stick) -[2]: https://opensource.com/open-organization/resources/open-org-definition -[3]: https://opensource.com/open-organization/18/10/understanding-engagement-empowerment -[4]: https://opensource.com/open-organization/19/5/planning-future-unknowable -[5]: https://opensource.com/open-organization/18/7/culture-of-experimentation-in-4-steps -[6]: https://opensource.com/open-organization/15/5/measuring-performance-open-source-way -[7]: https://opensource.com/open-organization/15/11/reigniting-employee-passion -[8]: https://opensource.com/open-organization/18/12/what-is-open-leadership -[9]: https://opensource.com/open-organization/19/11/what-is-community-practice -[10]: https://opensource.com/open-organization/20/1/why-build-community-of-practice -[11]: https://opensource.com/open-organization/17/3/making-better-open-decisions -[12]: https://opensource.com/open-organization/18/3/try-learn-modify -[13]: https://opensource.com/open-organization/16/10/how-ask-why-without-upsetting-anyone diff --git a/sources/talk/20200406 How to Use a Differential Analyzer (to Murder People).md b/sources/talk/20200406 How to Use a Differential Analyzer (to Murder People).md deleted file mode 100644 index 6796e25603..0000000000 --- a/sources/talk/20200406 How to Use a Differential Analyzer (to Murder People).md +++ /dev/null @@ -1,147 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (How to Use a Differential Analyzer (to Murder People)) -[#]: via: (https://twobithistory.org/2020/04/06/differential-analyzer.html) -[#]: author: (Two-Bit History https://twobithistory.org) - -How to Use a Differential Analyzer (to Murder People) -====== - -A differential analyzer is a mechanical, analog computer that can solve differential equations. Differential analyzers aren’t used anymore because even a cheap laptop can solve the same equations much faster—and can do it in the background while you stream the new season of Westworld on HBO. Before the invention of digital computers though, differential analyzers allowed mathematicians to make calculations that would not have been practical otherwise. - -It is hard to see today how a computer made out of anything other than digital circuitry printed in silicon could work. A mechanical computer sounds like something out of a steampunk novel. But differential analyzers did work and even proved to be an essential tool in many lines of research. Most famously, differential analyzers were used by the US Army to calculate range tables for their artillery pieces. Even the largest gun is not going to be effective unless you have a range table to help you aim it, so differential analyzers arguably played an important role in helping the Allies win the Second World War. - -To understand how differential analyzers could do all this, you will need to know what differential equations are. Forgotten what those are? That’s okay, because I had too. - -### Differential Equations - -Differential equations are something you might first encounter in the final few weeks of a college-level Calculus I course. By that point in the semester, your underpaid adjunct professor will have taught you about limits, derivatives, and integrals; if you take those concepts and add an equals sign, you get a differential equation. - -Differential equations describe rates of change in terms of some other variable (or perhaps multiple other variables). Whereas a familiar algebraic expression like (y = 4x + 3) specifies the relationship between some variable quantity (y) and some other variable quantity (x), a differential equation, which might look like (\frac{dy}{dx} = x), or even (\frac{dy}{dx} = 2), specifies the relationship between a _rate of change_ and some other variable quantity. Basically, a differential equation is just a description of a rate of change in exact mathematical terms. The first of those last two differential equations is saying, “The variable (y) changes with respect to (x) at a rate defined exactly by (x),” and the second is saying, “No matter what (x) is, the variable (y) changes with respect to (x) at a rate of exactly 2.” - -Differential equations are useful because in the real world it is often easier to describe how complex systems change from one instant to the next than it is to come up with an equation describing the system at all possible instants. Differential equations are widely used in physics and engineering for that reason. One famous differential equation is the heat equation, which describes how heat diffuses through an object over time. It would be hard to come up with a function that fully describes the distribution of heat throughout an object given only a time (t), but reasoning about how heat diffuses from one time to the next is less likely to turn your brain into soup—the hot bits near lots of cold bits will probably get colder, the cold bits near lots of hot bits will probably get hotter, etc. So the heat equation, though it is much more complicated than the examples in the last paragraph, is likewise just a description of rates of change. It describes how the temperature of any one point on the object will change over time given how its temperature differs from the points around it. - -Let’s consider another example that I think will make all of this more concrete. If I am standing in a vacuum and throw a tennis ball straight up, will it come back down before I asphyxiate? This kind of question, posed less dramatically, is the kind of thing I was asked in high school physics class, and all I needed to solve it back then were some basic Newtonian equations of motion. But let’s pretend for a minute that I have forgotten those equations and all I can remember is that objects accelerate toward earth at a constant rate of (g), or about (10 ;m/s^2). How can differential equations help me solve this problem? - -Well, we can express the one thing I remember about high school physics as a differential equation. The tennis ball, once it leaves my hand, will accelerate toward the earth at a rate of (g). This is the same as saying that the velocity of the ball will change (in the negative direction) over time at a rate of (g). We could even go one step further and say that _the rate of change in the height of my ball above the ground_ (this is just its velocity) will change over time at a rate of negative (g). We can write this down as the following, where (h) represents height and (t) represents time: - -[\frac{d^2h}{dt^2} = -g] - -This looks slightly different from the differential equations we have seen so far because this is what is known as a second-order differential equation. We are talking about the rate of change of a rate of change, which, as you might remember from your own calculus education, involves second derivatives. That’s why parts of the expression on the left look like they are being squared. But this equation is still just expressing the fact that the ball accelerates downward at a constant acceleration of (g). - -From here, one option I have is to use the tools of calculus to solve the differential equation. With differential equations, this does not mean finding a single value or set of values that satisfy the relationship but instead finding a function or set of functions that do. Another way to think about this is that the differential equation is telling us that there is some function out there whose second derivative is the constant (-g); we want to find that function because it will give us the height of the ball at any given time. This differential equation happens to be an easy one to solve. By doing so, we can re-derive the basic equations of motion that I had forgotten and easily calculate how long it will take the ball to come back down. - -But most of the time differential equations are hard to solve. Sometimes they are even impossible to solve. So another option I have, given that I paid more attention in my computer science classes that my calculus classes in college, is to take my differential equation and use it as the basis for a simulation. If I know the starting velocity and the acceleration of my tennis ball, then I can easily write a little for-loop, perhaps in Python, that iterates through my problem second by second and tells me what the velocity will be at any given second (t) after the initial time. Once I’ve done that, I could tweak my for-loop so that it also uses the calculated velocity to update the height of the ball on each iteration. Now I can run my Python simulation and figure out when the ball will come back down. My simulation won’t be perfectly accurate, but I can decrease the size of the time step if I need more accuracy. All I am trying to accomplish anyway is to figure out if the ball will come back down while I am still alive. - -This is the numerical approach to solving a differential equation. It is how differential equations are solved in practice in most fields where they arise. Computers are indispensable here, because the accuracy of the simulation depends on us being able to take millions of small little steps through our problem. Doing this by hand would obviously be error-prone and take a long time. - -So what if I were not just standing in a vacuum with a tennis ball but were standing in a vacuum with a tennis ball in, say, 1936? I still want to automate my computation, but Claude Shannon won’t even complete his master’s thesis for another year yet (the one in which he casually implements Boolean algebra using electronic circuits). Without digital computers, I’m afraid, we have to go analog. - -### The Differential Analyzer - -The first differential analyzer was built between 1928 and 1931 at MIT by Vannevar Bush and Harold Hazen. Both men were engineers. The machine was created to tackle practical problems in applied mathematics and physics. It was supposed to address what Bush described, in [a 1931 paper][1] about the machine, as the contemporary problem of mathematicians who are “continually being hampered by the complexity rather than the profundity of the equations they employ.” - -A differential analyzer is a complicated arrangement of rods, gears, and spinning discs that can solve differential equations of up to the sixth order. It is like a digital computer in this way, which is also a complicated arrangement of simple parts that somehow adds up to a machine that can do amazing things. But whereas the circuitry of a digital computer implements Boolean logic that is then used to simulate arbitrary problems, the rods, gears, and spinning discs _directly_ simulate the differential equation problem. This is what makes a differential analyzer an analog computer—it is a direct mechanical analogy for the real problem. - -How on earth do gears and spinning discs do calculus? This is actually the easiest part of the machine to explain. The most important components in a differential analyzer are the six mechanical integrators, one for each order in a sixth-order differential equation. A mechanical integrator is a relatively simple device that can integrate a single input function; mechanical integrators go back to the 19th century. We will want to understand how they work, but, as an aside here, Bush’s big accomplishment was not inventing the mechanical integrator but rather figuring out a practical way to chain integrators together to solve higher-order differential equations. - -A mechanical integrator consists of one large spinning disc and one much smaller spinning wheel. The disc is laid flat parallel to the ground like the turntable of a record player. It is driven by a motor and rotates at a constant speed. The small wheel is suspended above the disc so that it rests on the surface of the disc ever so slightly—with enough pressure that the disc drives the wheel but not enough that the wheel cannot freely slide sideways over the surface of the disc. So as the disc turns, the wheel turns too. - -The speed at which the wheel turns will depend on how far from the center of the disc the wheel is positioned. The inner parts of the disc, of course, are rotating more slowly than the outer parts. The wheel stays fixed where it is, but the disc is mounted on a carriage that can be moved back and forth in one direction, which repositions the wheel relative to the center of the disc. Now this is the key to how the integrator works: The position of the disc carriage is driven by the input function to the integrator. The output from the integrator is determined by the rotation of the small wheel. So your input function drives the rate of change of your output function and you have just transformed the derivative of some function into the function itself—which is what we call integration! - -If that explanation does nothing for you, seeing a mechanical integrator in action really helps. The principle is surprisingly simple and there is no way to watch the device operate without grasping how it works. So I have created [a visualization of a running mechanical integrator][2] that I encourage you to take a look at. The visualization shows the integration of some function (f(x)) into its antiderivative (F(x)) while various things spin and move. It’s pretty exciting. - -![][3] _A nice screenshot of my visualization, but you should check out the real thing!_ - -So we have a component that can do integration for us, but that alone is not enough to solve a differential equation. To explain the full process to you, I’m going to use an example that Bush offers himself in his 1931 paper, which also happens to be essentially the same example we contemplated in our earlier discussion of differential equations. (This was a happy accident!) Bush introduces the following differential equation to represent the motion of a falling body: - -[\frac{d^2x}{dt^2} = -k,\frac{dx}{dt} - g] - -This is the same equation we used to model the motion of our tennis ball, only Bush has used (x) in place of (h) and has added another term that accounts for how air resistance will decelerate the ball. This new term describes the effect of air resistance on the ball in the simplest possible way: The air will slow the ball’s velocity at a rate that is proportional to its velocity (the (k) here is some proportionality constant whose value we don’t really care about). So as the ball moves faster, the force of air resistance will be stronger, further decelerating the ball. - -To configure a differential analyzer to solve this differential equation, we have to start with what Bush calls the “input table.” The input table is just a piece of graphing paper mounted on a carriage. If we were trying to solve a more complicated equation, the operator of the machine would first plot our input function on the graphing paper and then, once the machine starts running, trace out the function using a pointer connected to the rest of the machine. In this case, though, our input is just the constant (g), so we only have to move the pointer to the right value and then leave it there. - -What about the other variables (x) and (t)? The (x) variable is our output as it represents the height of the ball. It will be plotted on graphing paper placed on the output table, which is similar to the input table only the pointer is a pen and is driven by the machine. The (t) variable should do nothing more than advance at a steady rate. (In our Python simulation of the tennis ball problem as posed earlier, we just incremented (t) in a loop.) So the (t) variable comes from the differential analyzer’s motor, which kicks off the whole process by rotating the rod connected to it at a constant speed. - -Bush has a helpful diagram documenting all of this that I will show you in a second, but first we need to make one more tweak to our differential equation that will make the diagram easier to understand. We can integrate both sides of our equation once, yielding the following: - -[\frac{dx}{dt} = - \int \left(k,\frac{dx}{dt} + g\right),dt] - -The terms in this equation map better to values represented by the rotation of various parts of the machine while it runs. Okay, here’s that diagram: - -![][4] _The differential analyzer configured to solve the problem of a falling body in one dimension._ - -The input table is at the top of the diagram. The output table is at the bottom-right. The output table here is set up to graph both (x) and (\frac{dx}{dt}), i.e. height and velocity. The integrators appear at the bottom-left; since this is a second-order differential equation, we need two. The motor drives the very top rod labeled (t). (Interestingly, Bush referred to these horizontal rods as “buses.”) - -That leaves two components unexplained. The box with the little (k) in it is a multiplier respresnting our proportionality constant (k). It takes the rotation of the rod labeled (\frac{dx}{dt}) and scales it up or down using a gear ratio. The box with the (\sum) symbol is an adder. It uses a clever arrangement of gears to add the rotations of two rods together to drive a third rod. We need it since our equation involves the sum of two terms. These extra components available in the differential analyzer ensure that the machine can flexibly simulate equations with all kinds of terms and coefficients. - -I find it helpful to reason in ultra-slow motion about the cascade of cause and effect that plays out as soon as the motor starts running. The motor immediately begins to rotate the rod labeled (t) at a constant speed. Thus, we have our notion of time. This rod does three things, illustrated by the three vertical rods connected to it: it drives the rotation of the discs in both integrators and also advances the carriage of the output table so that the output pen begins to draw. - -Now if the integrators were set up so that their wheels are centered, then the rotation of rod (t) would cause no other rods to rotate. The integrator discs would spin but the wheels, centered as they are, would not be driven. The output chart would just show a flat line. This happens because we have not accounted for the initial conditions of the problem. In our earlier Python simulation, we needed to know the initial velocity of the ball, which we would have represented there as a constant variable or as a parameter of our Python function. Here, we account for the initial velocity and acceleration by displacing the integrator discs by the appropriate amount before the machine begins to run. - -Once we’ve done that, the rotation of rod (t) propagates through the whole system. Physically, a lot of things start rotating at the same time, but we can think of the rotation going first to integrator II, which combines it with the acceleration expression calculated based on (g) and then integrates it to get the result (\frac{dx}{dt}). This represents the velocity of the ball. The velocity is in turn used as input to integrator I, whose disc is displaced so that the output wheel rotates at the rate (\frac{dx}{dt}). The output from integrator I is our final output (x), which gets routed directly to the output table. - -One confusing thing I’ve glossed over is that there is a cycle in the machine: Integrator II takes as an input the rotation of the rod labeled ((k,\frac{dx}{dt} + g)), but that rod’s rotation is determined in part by the output from integrator II itself. This might make you feel queasy, but there is no physical issue here—everything is rotating at once. If anything, we should not be surprised to see cycles like this, since differential equations often describe rates of change in a function as a function of the function itself. (In this example, the acceleration, which is the rate of change of velocity, depends on the velocity.) - -With everything correctly configured, the output we get is a nice graph, charting both the position and velocity of our ball over time. This graph is on paper. To our modern digital sensibilities, that might seem absurd. What can you do with a paper graph? While it’s true that the differential analyzer is not so magical that it can write out a neat mathematical expression for the solution to our problem, it’s worth remembering that neat solutions to many differential equations are not possible anyway. The paper graph that the machine does write out contains exactly the same information that could be output by our earlier Python simulation of a falling ball: where the ball is at any given time. It can be used to answer any practical question you might have about the problem. - -The differential analyzer is a preposterously cool machine. It is complicated, but it fundamentally involves nothing more than rotating rods and gears. You don’t have to be an electrical engineer or know how to fabricate a microchip to understand all the physical processes involved. And yet the machine does calculus! It solves differential equations that you never could on your own. The differential analyzer demonstrates that the key material required for the construction of a useful computing machine is not silicon but human ingenuity. - -### Murdering People - -Human ingenuity can serve purposes both good and bad. As I have mentioned, the highest-profile use of differential analyzers historically was to calculate artillery range tables for the US Army. To the extent that the Second World War was the “Good Fight,” this was probably for the best. But there is also no getting past the fact that differential analyzers helped to make very large guns better at killing lots of people. And kill lots of people they did—if Wikipedia is to be believed, more soldiers were killed by artillery than small arms fire during the Second World War. - -I will get back to the moralizing in a minute, but just a quick detour here to explain why calculating range tables was hard and how differential analyzers helped, because it’s nice to see how differential analyzers were applied to a real problem. A range table tells the artilleryman operating a gun how high to elevate the barrel to reach a certain range. One way to produce a range table might be just to fire that particular kind of gun at different angles of elevation many times and record the results. This was done at proving grounds like the Aberdeen Proving Ground in Maryland. But producing range tables solely through empirical observation like this is expensive and time-consuming. There is also no way to account for other factors like the weather or for different weights of shell without combinatorially increasing the necessary number of firings to something unmanageable. So using a mathematical theory that can fill in a complete range table based on a smaller number of observed firings is a better approach. - -I don’t want to get too deep into how these mathematical theories work, because the math is complicated and I don’t really understand it. But as you might imagine, the physics that governs the motion of an artillery shell in flight is not that different from the physics that governs the motion of a tennis ball thrown upward. The need for accuracy means that the differential equations employed have to depart from the idealized forms we’ve been using and quickly get gnarly. Even the earliest attempts to formulate a rigorous ballistic theory involve equations that account for, among other factors, the weight, diameter, and shape of the projectile, the prevailing wind, the altitude, the atmospheric density, and the rotation of the earth[1][5]. - -So the equations are complicated, but they are still differential equations that a differential analyzer can solve numerically in the way that we have already seen. Differential analyzers were put to work solving ballistics equations at the Aberdeen Proving Ground in 1935, where they dramatically sped up the process of calculating range tables.[2][6] Nevertheless, during the Second World War, the demand for range tables grew so quickly that the US Army could not calculate them fast enough to accompany all the weaponry being shipped to Europe. This eventually led the Army to fund the ENIAC project at the University of Pennsylvania, which, depending on your definitions, produced the world’s first digital computer. ENIAC could, through rewiring, run any program, but it was constructed primarily to perform range table calculations many times faster than could be done with a differential analyzer. - -Given that the range table problem drove much of the early history of computing even apart from the differential analyzer, perhaps it’s unfair to single out the differential analyzer for moral hand-wringing. The differential analyzer isn’t uniquely compromised by its military applications—the entire field of computing, during the Second World War and well afterward, advanced because of the endless funding being thrown at it by the United States military. - -Anyway, I think the more interesting legacy of the differential analyzer is what it teaches us about the nature of computing. I am surprised that the differential analyzer can accomplish as much as it can; my guess is that you are too. It is easy to fall into the trap of thinking of computing as the realm of what can be realized with very fast digital circuits. In truth, computing is a more abstract process than that, and electronic, digital circuits are just what we typically use to get it done. In his paper about the differential analyzer, Vannevar Bush suggests that his invention is just a small contribution to “the far-reaching project of utilizing complex mechanical interrelationships as substitutes for intricate processes of reasoning.” That puts it nicely. - -_If you enjoyed this post, more like it come out every four weeks! Follow [@TwoBitHistory][7] on Twitter or subscribe to the [RSS feed][8] to make sure you know when a new post is out._ - -_Previously on TwoBitHistory…_ - -> Do you worry that your children are "BBS-ing"? Do you have a neighbor who talks too much about his "door games"? -> -> In this VICE News special report, we take you into the seedy underworld of bulletin board systems: -> -> — TwoBitHistory (@TwoBitHistory) [February 2, 2020][9] - - 1. Alan Gluchoff. “Artillerymen and Mathematicians: Forest Ray Moulton and Changes in American Exterior Ballistics, 1885-1934.” Historia Mathematica, vol. 38, no. 4, 2011, pp. 506–547., . [↩︎][10] - - 2. Karl Kempf. “Electronic Computers within the Ordnance Corps,” 1961, accessed April 6, 2020, . [↩︎][11] - - - - --------------------------------------------------------------------------------- - -via: https://twobithistory.org/2020/04/06/differential-analyzer.html - -作者:[Two-Bit History][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://twobithistory.org -[b]: https://github.com/lujun9972 -[1]: http://worrydream.com/refs/Bush%20-%20The%20Differential%20Analyzer.pdf -[2]: https://sinclairtarget.com/differential-analyzer/ -[3]: https://twobithistory.org/images/diff-analyzer-viz.png -[4]: https://twobithistory.org/images/analyzer-diagram.png -[5]: tmp.GUgd146Tkg#fn:1 -[6]: tmp.GUgd146Tkg#fn:2 -[7]: https://twitter.com/TwoBitHistory -[8]: https://twobithistory.org/feed.xml -[9]: https://twitter.com/TwoBitHistory/status/1224014531778826240?ref_src=twsrc%5Etfw -[10]: tmp.GUgd146Tkg#fnref:1 -[11]: tmp.GUgd146Tkg#fnref:2 diff --git a/sources/talk/20200406 What is good documentation for software projects.md b/sources/talk/20200406 What is good documentation for software projects.md deleted file mode 100644 index 7726287131..0000000000 --- a/sources/talk/20200406 What is good documentation for software projects.md +++ /dev/null @@ -1,156 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (What is good documentation for software projects?) -[#]: via: (https://opensource.com/article/20/4/documentation) -[#]: author: (Cameron Shorter https://opensource.com/users/cameronshorter) - -What is good documentation for software projects? -====== -Mixing experienced tech writers with open source communities reveals new -approaches for creating better docs. -![Typewriter with hands][1] - -The [Open Geospatial (OSGeo) Foundation][2] recently participated in Google's first [Season of Docs][3], in which Google sponsored senior technical writers to contribute to open source projects. OSGeo is an umbrella organization for around 50 geospatial open source projects. I've contributed to a number of these projects over the years and recently co-mentored the two Season of Docs technical writers Google allocated to OSGeo. - -We discovered during our involvement that, like many open source projects, we knew little about: - - * The state of our docs - * What we were aiming for - * Our priorities - * The details of the challenges we faced - * How to improve - - - -We discovered: - - * How hard it is to keep tech docs current - * Skillsets from multiple roles are needed to create good docs - * Open source's docs and writing processes are immature when compared to software development - - - -It is an exciting problem space with high-value challenges ready to be tackled. It reminds me of the early days of open source, before it became trendy with business. - -### What should tech writers work on? - -Open source communities welcomed the chance to have tech writers improve our docs and expressed a pressing need for it, but found it hard to articulate exactly what needed to be fixed: - - * People explained that their project docs often hadn't been updated between doc releases. - * Some projects had new features that had not been documented. - * Other projects had issue lists, collating observed deficiencies, but had no systematic review. - * Most observed that docs were created by developers with no formal tech writing training. - * Many noted that their English docs were written by non-native English speakers. - - - -But where should we start? We needed to decide on what we wanted and what we should work on first. - -### Defining good docs - -We then realized that we didn't have a good definition of "good documentation." For our software projects, we have a comprehensive [incubation process][4] to assess the maturity of software and the project's community, but we couldn't find a similar set of metrics to define "good documentation." So we started the [Good Docs Project][5] to collate "best-practice templates and writing instructions for documenting open source software." This helped us define what we were aiming for and prioritize what we can achieve with our available resources. - -### Documentation audit - -Once we knew what good docs looked like, we could audit the status of a project's docs: - - * What documentation do we have? - * Does it cover all the functionality? - * Does it cover end-user needs? - * Is the documentation any good? - - - -We discovered that the quality, currency, and completeness of our OSGeo docs were immature when compared to the quality of the software they described. - -### It takes a village to raise good docs - -In researching open source projects' documentation needs, it became clear that crafting good docs requires multiple skillsets. Ideally, a doc team has access to: - - * A developer with a deep understanding of the software being described - * A software user who can explain the application within the context of the application's domain - * An educator who understands the principles of learning - * An information architect who understands how to structure material - * A writer who writes clearly and concisely with good grammar - * Someone who speaks English as a first language (for English docs) - * A translator who is good at translating docs into multiple languages - * A DevOps person who can set up doc-build pipelines - * A community builder, facilitator, and coordinator who can inspire collective action, capture offers of help, and help all these different personas collaborate - - - -Technical writers usually have a high-level understanding of most of these domains, and their skills are often under-appreciated and under-utilized, especially if they are directed with a vague "just clean up the grammar and stuff." - -However, the best docs typically have been influenced by multiple stakeholders. This can be partly achieved by [using templates to collaborate][6] between domains, timeframes, projects, and organizations. - -### Tools for documenting open source projects are painful - -We experienced significant pain in trying to convert between software and [writing toolsets][7]. We love the versioning of Git, are frustrated by clunky Markdown interfaces, and want access to editing and review workflows in Word and Google Docs along with grammar and syntax plugin tools such as Grammarly. Translation tools such as Transifex are pretty cool, too. - -Could someone please write an application that addresses this use case? Maybe there is an idea in here for a future [Google Summer of Code][8]? - -### Achievements during OSGeo's Season of Docs - -We're quite proud of our achievements during OSGeo's participation in Google's Season of Docs. Our allocated tech writers amplified the effectiveness of our existing documentation communities, and our documentation communities amplified the effectiveness of these tech writers: - - * [Felicity Brand][9] worked with around 50 of OSGeo's open source projects to update the Quickstarts as part of our [OSGeoLive][10] distribution of software. - * [Swapnil Ogale][11] worked directly with [GeoNetwork's][12] documentation team, auditing the breadth and quality of docs, setting up templates for future docs, and updating many of the docs. - - - -Further: - - * We kicked off the Good Docs Project to establish "best-practice templates and writing instructions for documenting open source software." - * In conjunction with the [OGC][13] and [ISO][14] spatial standards communities, we kicked off an [OSGeo Lexicon][15] project to coordinate official definitions for terminology used within the OSGeo context. This will apply best-practice definitions to previously haphazard glossaries. - * We did a [deep-dive analysis][16] of the documentation challenges faced by QGIS, one of OSGeo's most successful projects. Surprisingly, its biggest problem isn't a lack of tech writers or complicated tools (although they are factors). Key problems center around: - * Poorly capturing community goodwill and offers of assistance - * Lack of direction - * Struggling to keep up with a rapidly evolving software baseline - * Insufficient writing expertise - * A high technical barrier to entry - * Documentation and training being generated outside of the core project - * Awkward documentation tools and processes - - - -### Thanks, Google - -We are grateful to Google for sponsoring Season of Docs. We've learned plenty from Felicity and Swapnil, the great writers that Google provided to us, and we hope what we have learned will help make future Season of Docs initiatives even better. - -* * * - -_This originally appeared on [Cameron Shorter's blog][17] and is republished with permission._ - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/4/documentation - -作者:[Cameron Shorter][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/cameronshorter -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/typewriter-hands.jpg?itok=oPugBzgv (Typewriter with hands) -[2]: https://www.osgeo.org/ -[3]: https://developers.google.com/season-of-docs -[4]: https://www.osgeo.org/about/committees/incubation/graduation/ -[5]: https://thegooddocsproject.dev/ -[6]: http://cameronshorter.blogspot.com/2019/02/inspiring-techies-to-become-great.html -[7]: https://opensource.com/article/20/3/open-source-writing-tools -[8]: https://summerofcode.withgoogle.com/ -[9]: https://flicstar.com/2019/11/27/project-report-for-season-of-docs-2019/ -[10]: https://live.osgeo.org/en/index.html -[11]: https://docs.google.com/document/d/1sTGz8aWPTS6moxgrtsBRz19roemJlilcdQk6B-9IZOo -[12]: https://geonetwork-opensource.org/ -[13]: https://www.ogc.org/ -[14]: https://committee.iso.org/home/tc211 -[15]: https://wiki.osgeo.org/wiki/Lexicon_Committee -[16]: http://cameronshorter.blogspot.com/2019/12/why-qgis-docs-team-is-struggling.html -[17]: https://cameronshorter.blogspot.com/2020/03/insights-from-mixing-writers-with-open.html diff --git a/sources/talk/20200411 5 open source activities while you work from home.md b/sources/talk/20200411 5 open source activities while you work from home.md deleted file mode 100644 index c52818f909..0000000000 --- a/sources/talk/20200411 5 open source activities while you work from home.md +++ /dev/null @@ -1,99 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (5 open source activities while you work from home) -[#]: via: (https://opensource.com/article/20/4/open-source-activities) -[#]: author: (Seth Kenlon https://opensource.com/users/seth) - -5 open source activities while you work from home -====== -Work-life balance is important whether you're working from home -temporarily or it's your usual mode of earning a living. -![Person in a field of dandelions][1] - -The mythos of the remote home office or the exciting archetype of the digital nomad are as appealing as they are dangerous. It's great to be able to avoid a commute, to be able to stay comfortable at home while getting lots of work done, and to be master of your own schedule. But along with those liberties, you inherit the responsibility of remembering to be a normal, functioning human being. Believe it or not, the two aren't mutually exclusive. You can do both, but you have to work at it. Here are some ideas on how. - -### Plant something - -![Seeeduino in the garden][2] - -You may have an abundance of little ones to care for during the day, and if you do, you should read our [article][3] about fun open source projects for kids and parents. If you don't, or if you're just keen to try caring for something that's quiet, then you might find it satisfying to plant something. - -I used to think gardening was something you did as a way to establish a routine: each morning, you wake up and tend to your plants before you start your day, each evening you might pull weeds, and so on. Now that I have a garden, I realize that it's more like a low-stress puzzle. Learning to tend to plants is a little like learning to program. You learn the basics first, you learn to debug (literally, in the case of aphids), and then you learn how to optimize growth and maybe even [how to automate plant care][4]. - -If you're not attracted to gardening, there are plenty of other [outdoor projects][5] that are useful in getting you outdoors with a purpose and encouraging you to go back out for more. - -### Go for a walk - -![Walking][6] - -The phrases "go for a walk" or "get some fresh air" are so common that they seem trite, but that doesn't make the result any less valid. Getting outside your usual workspace is vital for clarity and drive, but sometimes going outside feels a little pointless. You can only walk around the block so many times before the journey loses excitement. - -If you need a goal for ambling around your neighborhood, you can download a handy app called [StreetComplete][7]. It's a quest-based app that presents you with points of interest in your area with incomplete [Open Street Map][8] data. You can help crowdsource better open source maps by verifying and providing information through the app. Suddenly, that aimless meandering you don't really want to do is a fun quest for you and your family. - -### Diversify - -![Mini stapler][9] - -Being in an office can present exciting challenges, whether it's because you're in a dynamic industry or in a petty fight with a colleague over ownership of a stapler. When you work from home, your daily routine can get pretty, well, routine. If that's the case, it might be time to diversify. - -If you've been meaning to [get involved with open source][10], now's a great time for it. - -If you suspect you might be artistic (or even if you're convinced you're not, but you have something you want to express), then maybe it's time to finally learn how to create some [digital imagery][11]. - -Or maybe you're curious about programming. It might be easier than you think and given enough free time, you might even end up with [your own game written in Python][12]. - -### Make some music - -![Music keyboardas][13] - -Artistic expression is important, whether you're working from home or living with someone who's bored at home. The great thing about music is that you don't need to be _musical_ to [make some really cool noise][14]. In fact, you can make some [wild sounds on a Raspberry Pi][15], if you have one lying around. - -If you happen to be musical, though, you can have a go at a digital audio workstation like [Qtractor][16] or [Rosegarden][17]. For inspiration, read about a [professional composer][18] and the music festival he created. - -### Refurbish - -![Old computers][19] - -I don't like it when good things go to waste, especially computers. Read about [refurbishing old computers][20] and [really old computers][21], and then rummage around in your attic to find one for your own experiments. - -### Meet the challenge - -Being stuck at home for long periods of time, whether it's for a few weeks or the better part of your career, can be challenging. However, open source is a vast landscape of opportunity. Explore and find the parts of it that appeal to you. You can build a hobby, and maybe even a career, out of all the fun things you can do with other people's toys. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/4/open-source-activities - -作者:[Seth Kenlon][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/seth -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/OSDC_dandelion_520x292.png?itok=-xhFQvUj (Person in a field of dandelions) -[2]: https://opensource.com/sites/default/files/uploads/diversions_seeeduino.jpg (Seeeduino in the garden) -[3]: https://opensource.com/article/19/12/kids-students-education -[4]: https://opensource.com/article/17/3/arduino-garden-projects -[5]: https://opensource.com/article/19/5/hardware-outdoors -[6]: https://opensource.com/sites/default/files/uploads/diversions_walk.jpg (Walking) -[7]: https://opensource.com/article/20/1/streetcomplete-crowdsource-maps -[8]: https://opensource.com/article/17/8/openstreetmap -[9]: https://opensource.com/sites/default/files/uploads/diversions_stapler.jpg (Mini stapler) -[10]: https://opensource.com/article/17/10/open-source-cats -[11]: https://opensource.com/life/12/6/design-without-debt-five-tools-for-designers -[12]: https://opensource.com/article/17/10/python-101 -[13]: https://opensource.com/sites/default/files/uploads/diversions_keyboards.jpg (Music keyboards) -[14]: https://opensource.com/life/16/2/linux-multimedia-studio -[15]: https://opensource.com/article/20/3/sonic-pi -[16]: https://opensource.com/article/17/6/qtractor-audio -[17]: https://opensource.com/article/18/3/make-sweet-music-digital-audio-workstation-rosegarden -[18]: https://opensource.com/article/20/2/linux-open-source-music -[19]: https://opensource.com/sites/default/files/uploads/diversions_old-computers.jpg (Old computers) -[20]: https://opensource.com/article/19/7/how-make-old-computer-useful-again -[21]: https://opensource.com/article/20/2/restore-old-computer-linux diff --git a/sources/talk/20200414 How World of Warcraft introduced me to Linux.md b/sources/talk/20200414 How World of Warcraft introduced me to Linux.md deleted file mode 100644 index b1836ccb43..0000000000 --- a/sources/talk/20200414 How World of Warcraft introduced me to Linux.md +++ /dev/null @@ -1,82 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (How World of Warcraft introduced me to Linux) -[#]: via: (https://opensource.com/article/20/4/wow-linux) -[#]: author: (Luke Rawlins, RHCE https://opensource.com/users/sudoluke) - -How World of Warcraft introduced me to Linux -====== -One Linux sysadmin traces his journey from video-gaming car mechanic to -a new career in IT. -![Gaming with penguin pawns][1] - -The story behind my career with [Linux][2] is a bit unusual. It starts back in 2005; I was working as an auto mechanic at a Nissan dealership in Toledo, Ohio. I had never used a computer for anything other than checking email, browsing the web, and playing World of Warcraft. - -I had never heard of Linux, I didn't know the term "open source," I probably couldn't even have walked you through how to copy a file from one place to another, and I certainly never thought that I would eventually find myself working in IT or running a website. - -### The "Blue Screen of Death" that changed my life - -I mentioned that I liked to play World of Warcraft (I still do, you can find me on my Mage "Elodinn—Twisting Nether" most of the time). This game was a huge hit in the early 2000s, and it consumed an enormous amount of my time (truth be told, probably a little too much of my time). - -You can imagine my horror one evening when I boot up my PC to be greeted by a blue screen with lots of cryptic messages, including "A problem has been detected…" Hmm weird, maybe I'll just unplug it and plug it back in—that works around the shop sometimes. No such luck, the same message comes up. Over and over, to no avail. - -### How do you fix this? - -So I called a friend and explained the problem. [Big blue screen][3]. Lots of little white letters. I'm going to miss the raid! - -He wasn't sure but said something about drivers, or maybe a hardware problem. I ended up calling around to a few computer repair shops to see if they could fix it. They all said the same thing after I read the message on the screen, and explained the problem to them. "I really can't be sure over the phone, but it sounds like the motherboard is bad. It's going to be $95 for diagnostics and I should be able to get it back to you in about a week." - -There was no way I was going to pay $95 for a diagnostic on an old crappy computer just to be told that either I needed a new one, or that the repair was going to be even more money on top of the diagnostic fee. So I thought to myself, if I can fix a car, then I can definitely fix this little computer. It was broken anyway; what was the worst that could happen? I end up breaking it more and need a new one? I was already in that situation. - -So I spent the next couple of days at work doing some research on computer parts, in between cars. I found out that replacing the motherboard meant that I was probably going to need a new processor. I found a motherboard/processor combo on Newegg for a decent price that I was fairly confident would work on my computer. Great! - -I ordered the parts, and a few days later, after printing out a few instructions, I had swapped out the motherboard and replaced it with my new hardware from Newegg. I was incredibly proud of my new found skills and naturally assumed that I was some kind of elite hacker. That is, until I started the computer up. - -I don't know if you know this, but Windows XP didn't like it when you replaced a lot of parts in your computer. I didn't know it at the time either, but now I had spent probably $150 because I didn't want to pay $95 for a diagnostic, and my computer was still broken. - -### The deep dark web has all the answers - -The next day, once again, I'm using all my breaks to research what went wrong. Pretty quickly I realized that my problem was tied to the fact that I needed a new Windows license. I also realized that there was no way I was going to purchase the software. I'd get a new computer before I purchased a new Windows license. But I wasn't quite ready to give up yet. - -One click leads to another, and I end up on a computer repair forum with someone complaining about a similar problem. All the replies are basically the same—buy a Windows license or buy a new PC—but one. Near the bottom of the forum, some unknown hero of the internet says, "You can always give Ubuntu a try." and leaves it at that. - -"What's Ubuntu?" I said to myself, "and how on earth do you even pronounce that word?" - -Anyway, after some more intensive searching, I found out that Ubuntu is a free operating system that is widely considered to be one of the most user-friendly Linux distributions (whatever that is) that you can get. What's more, I found a book that included an installation CD available at the Barnes and Noble bookstore that I passed on my way home from work. Why not give Ubuntu a try? After all, the computer was already broken, and the book was only $18.99. - -### This story is already too long - -I wish I still had that book. I think I sold it with a box full of old books at a garage sale when we moved a few years ago. I wanted to share my Linux story because it's different than many of the other stories I read about. I was not a college graduate at the time, I didn't learn to code as a child, and I am not an exceptionally intelligent person. I was, at best, an average student, a recently separated Marine, and I assumed that fixing computers couldn't be much different from fixing cars. At the end of the day, you're still just swapping out different parts, right? Different tools, different parts, same job—no problem. - -Along the way I ran into a lot of problems, the first one was the discovery that after all that work, I still couldn't play World of Warcraft. Eventually, I discovered WineHQ and Open Office, and all the incredible things that have come out of the open-source world. That mysterious blue screen and my World of Warcraft obsession redirected the course of my entire working life, for the better. That's an odd thing to admit, but it's probably true. - -### How does the story end? - -Well, it's not over, and I still have a lot to learn. After some frustrating trial and error, I did eventually learn how to install World of Warcraft using Wine. I missed a few weeks in the game, but I didn't lose my raid spot in the guild, and all things considered, I was no worse for the wear. At the time, I was playing a Druid, and everyone always had room for a healer when it came time to battle Ragnaros, the Fire Lord! - -Up to this point, however, my little computer repair project has turned into a wonderful career as a Linux systems administrator, a bachelor's degree, a whole bunch of IT certifications, including the Red Hat Certified Engineer certification, and a [blog][4] that I use as my way of giving back to the community that has given me so much. - -So, if you are like me, a person who is at best moderately intelligent, persistent, incredibly cheap, and not afraid to break a few things, go ahead and try out Linux the next time your computer breaks. - -I'm excited. I mean really excited. Excited to the point that I can hardly think. I'm talking six-... - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/4/wow-linux - -作者:[Luke Rawlins, RHCE][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/sudoluke -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/gaming_grid_penguin.png?itok=7Fv83mHR (Gaming with penguin pawns) -[2]: https://opensource.com/resources/linux -[3]: https://en.wikipedia.org/wiki/Blue_screen_of_death -[4]: https://sudoedit.com diff --git a/sources/talk/20200415 Fedora Origins - Part 01.md b/sources/talk/20200415 Fedora Origins - Part 01.md deleted file mode 100644 index 43c381958e..0000000000 --- a/sources/talk/20200415 Fedora Origins - Part 01.md +++ /dev/null @@ -1,126 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Fedora Origins – Part 01) -[#]: via: (https://fedoramagazine.org/fedora-origins-part-01/) -[#]: author: (Sylvia Sánchez https://fedoramagazine.org/author/lailah/) - -Fedora Origins – Part 01 -====== - -![][1] - -_Editor’s comment:_ The format of this article is different from the usual article that Fedora Magazine has published: a Fedora origins story told from the point of view of a Fedora user. The author has chosen to tell a story, since to simply present the bare facts is akin to just reading the wiki page about it. - -### Hello World! - -Hello, I am… no, I’m not going to give my real name. Let’s say I’m female, probably shorter and older than you. I used to go by the nick of Isadora, more on that later. - -![Here you have one of the old RH boxes][2] - -Now some context. Back in the late ’90s, internet became popular and PCs started to be a thing. However, most people didn’t have either because it was very expensive and often you could do better with the traditional methods. Yes, computers were very basic back then. I used to play with these pocket games that were fascinating at the time, but totally lame now. Monochrome screens with pixelated flat animations. Not going to dive there, just giving an idea how it was. - -In the mid-90s a company named Red Hat emerged and slowly started to make a profit of its own by selling its own business-oriented distribution and software utilities. The name comes from one of its founders, Marc Ewing, who used to wear a red lacrosse in university so other students could spot him easily and ask him questions. -Of course, as it was a business-oriented distribution, and I was busy with multiple other things, I didn’t pay much attention to it. It lacked the software I needed and since I wasn’t a customer, I was nobody to ask for additions. However, it was Linux and as such Open Source. People started to package stuff for RHL and put it in repositories. I was invited to join the community project, Fedora.us. I promptly declined, misunderstanding the name. It was the second time I got invited that I asked ‘what is with the “US” there (in the name)?` Another user explained it was ‘us’ as in ‘we’ not as in the ‘United States.’ They explained a bit about how the community worked and I decided to give it a go. - -Then my studies got in the way, and I had to shelve it. - -![Login Screen in Fedora Core][3] - -### Press Return - -By the time I came back to Fedora.us it had changed its name to Fedora Project and was actively being worked on from within Red Hat. Now, I wasn’t there so my direct knowledge of how this happened is a bit foggy. Some say that Fedora existed separately and Red Hat added/invited them, some say that Fedora was completely RH’s idea, some say they existed independently and at some point met or joined. Choose the version you like, I’ll put some links down there so you can know more details and decide for yourself. As far as I’m concerned, they worked together. - -Well, as usual someone dropped some CDs with ISOs for me. If I had an euro for every ISO I’ve been offered, or had tossed at my desk, for me to try it, I would be rich. As a matter of fact, I’m not rich but I do have a big rack full of old distros. - -_Anyways_… - -Now it’s the early 2000s and things have changed dramatically. Computers’ prices have dropped and internet speed is increasing, plus a set of new technologies make it cheaper and more reliable. Computers now can do so much more than just a decade ago, and they’re smaller too. Screens are bigger, with better colors and resolution. Laptops are starting to become popular though still expensive and less powerful than desktop PCs. - -During this time, I tried both Fedora and Red Hat. Now, as has been said before, Red Hat focuses on businesses and companies. Their main concern is having exactly the software their customers need, with the features their customers need, delivered as rock solid stability and a reliable update & support cycle. A lot of customization, variety of options and many cool new features are not their main core. More software means more testing and development work and bigger chances of things failing. Yet the technology industry is constantly changing and innovating. Sticking too much to older versions or proven formulas can be fatal for a company. - -So what to do? Well, they solved it with Fedora. Fedora Project would be the innovative, looking ahead test bed, and Red Hat Enterprise Linux was the more conservative, rock solid operating system for businesses. Yes, they changed the name from Red Hat Linux to Red Hat _Enterprise_ Linux. Sounds better, doesn’t it? - -Unsurprisingly, Fedora had a fame of being difficult, unstable and for “hackers only”. Whenever I said I was using Fedora, they would give me odd looks or say something like “I want something stable” or “I’m not into _that_” (meaning they didn’t fancy programming/hacking activities). Countless individuals suggested I might want to use one of the other, beginner-friendly distributions, without themselves even giving Fedora a try! Many would disregard Linux as a whole as an amateur thing, only valid for playing but not good for serious work and companies. To each their own, I suppose. - -![Note the F and the bubble already there][4] - -### Yes, but why? - -Those early versions were called Fedora Core and had a very uncertain release pattern. The six months cycle came much later. Fedora Core got its name because there were two repositories, Core and Extras. Core had the essentials, so to speak, and was maintained by Red Hat. Extras was, well, everything else. Any software that most users would want or need was included there, and it was maintained by a wide range of contributors. - -From the beginning, one of the most powerful reasons for me to use it was the community and its core values. The _Four Foundations_ of Fedora, _Freedom, Features, First & Friends_ were lived and breathed and not just a catchy line on a website or a leaflet. Fedora Project strove (and still does) to deliver the newest features first, caring for freedom (of choice and software) and keeping a good open community, making friends as we contribute to the project. - -I also liked the fact that Fedora, as its purpose was testing for Red Hat, delivered a lot of new software and technologies; it was like opening the window to see the future today. - -The downside was its unreliable upgrade cycle. You could get a new version in a few months or next year… nobody knew, there was no agreed schedule. - -![Note how, despite being Fedora, RH’s logo and signature is omnipresent][5] - -### What was in the box - -Fedora Core kept this name up to the sixth version. From the start, it was meant to be a distribution you could use right after installing it, so it came with Gnome 2, KDE 3, OpenOffice and some browser I forgot, possibly Firefox. - -I remember it being the first to introduce SELinux and SystemD by default, and to replace LILO with GRUB. I also remember the hardware requirements were something at the time, although they now sound laughable: Pentium II 400MHz, 256MB RAM (yes, you read it right) and 2GB of space in disk. It even had an option for terminal only! This would require only 64MB RAM and Pentium II 200MHz. Amazing, isn’t it? - -It had codenames. Not publicly, but it had, and they were quite peculiar. Fedora Core 1 was code named «Yarrow» which is a medium size plant with yellow or white crown-like flowers. Core 2 was Tettnang which is a small town in Baden-Württemberg, Germany. Not sure about Core 3, I think it was Heidelberg, but maybe I’m mixing with later releases. Core 4 was Stentz, if I recall correctly (no idea what it means), Core 5 was a colour, I think Bordeaux, and Core 6 was Zod that _I think_ it was a comic character but I could be wrong. If there was a method in their madness I have no idea. I thought the names amusing but didn’t give a second thought to it as they didn’t affect anything, not even the design of each release. - -![Ah… good ol` genetic helix][6] - -### So what now? - -Well, of course, Fedora Project has evolved from where we have stopped. But that’s for later articles or this one will be too long. For now, I leave you with an extract of an interview with Matthew Miller, current Project Leader and some links in case you want to know more. - -_**Extracts to interview with Matthew Miller, Project Leader.**_ - -Matthew Miller tells about the beginnings in Eduard Lucena’s podcast (transcription [here][7]): _“Fedora started about 15 years ago, really. It actually started as a thing called Fedora.us.” Back in those days, there was Red Hat Linux.” “Meanwhile, there was this thing called Fedora.us which was basically a project to make additional software available to users of Red Hat Linux. Find things that weren’t part of Red Hat Linux, and package them up, and make them available to everybody. That was started as a community project.”_ - -_“Red Hat_ (then) _merged with this [Fedora.us][8] project to form Fedora Project that produces an upstream operating system that Red Hat Enterprise Linux is derived from but then moves on a slower pace.”_ - -_“We were then two parts, Fedora Core, which was basically inherited from the old Red Hat Linux and only Red Hat employees could do anything with and then Fedora Extras, where community could come together to add things on top of that Fedora Core. It took a little while to get off the ground but it was fairly successful”_ - -“_Around the time of Fedora Core 6, those were actually merged together into one big Fedora where all of the packages were all part of the same thing. There was no more distinction of Core and Extras, and everything was all together and, more importantly, all the community was all together._ - -_They invited the community to take ownership of the whole thing and for Red Hat to become part of the community rather than separate. That was a huge success.”_ - -_**Links of interest**_ - -**Fedora, a visual history** -[https://www.phoronix.com/scan.php?page=article&item=678&num=1][9] - -**Red Hat Videos – Fedora’s anniversary** - - -**Red Hat Videos – Default to open** - - -**Fedora’s Mission & Foundations** - - -**A short history of Fedora** - - --------------------------------------------------------------------------------- - -via: https://fedoramagazine.org/fedora-origins-part-01/ - -作者:[Sylvia Sánchez][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://fedoramagazine.org/author/lailah/ -[b]: https://github.com/lujun9972 -[1]: https://fedoramagazine.org/wp-content/uploads/2020/04/fedora-origins-816x352.png -[2]: https://fedoramagazine.org/wp-content/uploads/2020/03/IMG_0554-768x1024.jpeg -[3]: https://fedoramagazine.org/wp-content/uploads/2020/04/15112-1.png -[4]: https://fedoramagazine.org/wp-content/uploads/2020/04/Fedora_Core_5.png -[5]: https://fedoramagazine.org/wp-content/uploads/2020/04/Fedora_Core_3.png -[6]: https://fedoramagazine.org/wp-content/uploads/2020/04/Artwork_FC7Themes_Fc7ThemeProposalFlyingHigh_Fc7ThemeProposalFlyingHighRhgl_rhgb-core6-1.png -[7]: https://x3mboy.fedorapeople.org/podcast/transcripts/transcriptFedoraPodcastEpisode01.html -[8]: http://fedora.us/ -[9]: https://www.phoronix.com/scan.php?page=article&item=678&num=1 diff --git a/sources/talk/20200415 How to dispose of IT hardware without hurting the environment.md b/sources/talk/20200415 How to dispose of IT hardware without hurting the environment.md deleted file mode 100644 index 511720d7fd..0000000000 --- a/sources/talk/20200415 How to dispose of IT hardware without hurting the environment.md +++ /dev/null @@ -1,102 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (How to dispose of IT hardware without hurting the environment) -[#]: via: (https://www.networkworld.com/article/3537928/how-to-dispose-of-it-hardware-without-hurting-the-environment.html) -[#]: author: (Andy Patrizio https://www.networkworld.com/author/Andy-Patrizio/) - -How to dispose of IT hardware without hurting the environment -====== -Find certified recyclers and disposal firms in order to know that the retirement of your old electronics gear is handled safely. -[Angelo Tsirekas][1] [(CC BY 3.0)][2] - -Many enterprises don’t think much about where their obsolete IT gear winds up, but it’s possible to be green-minded, not bust the budget, and even benefit a little from proper disposal. Here is how. - -### Go back to where you bought - -The first option to consider is returning the equipment the vendor or reseller you bought it from, says Susan Middleton, research director, financing strategies at IDC. “Every year we ask customers, ‘How do you handle end-of-lease?’ Overwhelmingly, they return to vendor or partner who are better equipped to handle recycling,” she says. - -[[Get regularly scheduled insights by signing up for Network World newsletters.]][3] - -Vendors often give a fair-market buyout for the devices that can go toward new products, Middleton says. “The big players like IBM and HPE do a great job because they can clean them up and resell them, and the facilities to do that are pretty big,” she says. - -### Vet disposal firms - -If that’s not an option,  and you have to find a disposal company – an IT Asset Disposition (ITAD) service – on your own, the first thing to check is whether it is properly certified, says Mike Satter, CEO of IT asset disposal and [data-center][4]-decommissioning provider OceanTech. Proper certification starts with a [Responsible Recycling (R2) certification][5]. - -R2s are administered by [Sustainable Electronics Recycling International][6] (SERI), a non-profit organization dedicated to the responsible reuse, repair, and recycling of electronic products. It sets the R2 standard and audits ITAD providers that carry the standard to make sure they are in compliance with the standard. Being responsible means creating a paper trail that shows the electronic waste – which contains heavy metals including arsenic, beryllium, cadmium, chromium, cobalt, indium, lead, mercury, nickel, and thallium, and are toxic in high enough doses – is reused, recovered or recycled. - -Some disposal firms dump old gear in general landfills or export them to other countries where regulations aren’t as strong.   - -“Any ITAD service provider that does not carry an R2 certification cannot fully guarantee zero landfill or zero export of materials,” says Satter. “Many recyclers will say they are compliant, but without verified certifications you’re taking a chance.” - -[][7] - -Mark Dobson, IT asset disposal security specialist with NextUse, a firm that removes and the resells second-hand IT assets, cites six disposal certifications that companies should look for: [R2][5],  [e-Stewards][8],  [NAID][9], [NAID AAA][10] (which has greater certification of regulatory compliance), [ISO 14001][11], and ISO 18001. “R2 would be the floor,” he says. - -Briefly, here’s what these certifications do. - - * **e-Stewards** is a standard set by the Basel Action Network in Sweden, which recognizes electronics recyclers that adhere to the most stringent environmentally and socially responsible practices when recovering hazardous electronic materials. In particular it is focused on making sure it was not shipped off to poor countries, where underage workers were exposed to toxic materials in careless work conditions. - * **NAID and NAID** AAA certification are set by The National Association of Information Destruction, a standards body that sets rules for the proper disposal of information devices, like hard drives. - * **ISO 14001** is a management framework for organizations to “achieve the intended outcomes of its environmental management system, which provide value for the environment, the organization itself and interested parties.” Outcomes of the framework should enhance environmental performance, fulfill compliance obligations and achieve environmental objectives. ISO is the International Organization of Standards, a global standards body. - * **ISO 18001** is the international standard for health and safety management systems. - - - -Dobson says ITAD companies that do it right are using one or more of the certification standards for data security and responsible recycling, and getting and maintaining those standard takes substantial initial and on-going investment in facilities, equipment, hardware, software, personnel, policies and procedures. - -“When those vendors charge more for their services, it is to cover those expenses, not to be excessively profitable,” he says. “Companies that do it the cheap way are skipping many if not all of those investments.” - -If an e-waste company says they will take retired equipment for free, consider that a red flag, says Satter. “Compliant e-waste companies have to hire vetted/credentialed employees, which must pass background checks to ensure compliance is delivered,” Satter says. “All of that costs money.” - -But the additional cost of using a certified company is minor. “We’re not talking hundreds of thousands of dollars,” says Dobson. “Even on the biggest job, it’s a few thousand dollars difference between the right way and the cheap way. For your average client, you’re talking thousands of dollars between the best vendors possible and totally half-assing it with the cheapest vendor that’s not operating in anyone’s best interest but their own.” - -### Penalties - -State environmental laws about illegal disposal are mainly enforced by state attorneys general. In addition, various federal agencies enforce violations of their agency's laws and regulations. - -Satter thinks enforcement needs to be tougher. “It will take the federal government to create extreme enforcement measures to ensure our e-waste is handled properly. The CEO or owner of companies should be arrested if they violate illegal e-waste dumping laws or knowingly exports e-waste to developing countries,” he says. - -In one case, two executives of a Seattle e-waste recycling company got [28 months in jail][12] for improper disposal of e-waste. In that case, it was e-Stewards that got wise to their illegal activities and turned them in to the Washington state AG. - -But that’s an exception, not the rule. Dobson says he sees very little enforcement. “The regulations are in place but spotily enforced, and penalties are not incentivizing. A lot of this is viewed as the cost of doing business. They build the fines for if they get caught into the cost of disposal,” he says. - -Fines for illegal dumping of old IT assets, are determined by the size of the violation, the clean-up cost, and the guidelines in the state or federal law. AT&T got one of the largest fines on record in 2014 for illegal disposal of e-waste, socked with a [$52 million fine][13]. Two years later, Apple got a spanking of $450,000 for its own [illegal dumping][14]. - -Middleton says first and foremost companies should ask for a paper trail to verify proper handling and disposal of assets from the moment they are picked up. “Ask about who certifies that your [disposal] partners are doing it correctly. When you don’t get a good answer, you walk away,” she says. - -But she says she thinks most firms are legit. “Anyone that’s lasted in this business isn’t shady. The majority that have been around a while are responsible,” says Middleton. - -Join the Network World communities on [Facebook][15] and [LinkedIn][16] to comment on topics that are top of mind. - --------------------------------------------------------------------------------- - -via: https://www.networkworld.com/article/3537928/how-to-dispose-of-it-hardware-without-hurting-the-environment.html - -作者:[Andy Patrizio][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://www.networkworld.com/author/Andy-Patrizio/ -[b]: https://github.com/lujun9972 -[1]: https://en.wikipedia.org/wiki/Kerbside_collection#/media/File:ACT_recycling_truck.jpg -[2]: https://creativecommons.org/licenses/by/3.0/legalcode -[3]: https://www.networkworld.com/newsletters/signup.html -[4]: https://www.networkworld.com/article/3223692/what-is-a-data-centerhow-its-changed-and-what-you-need-to-know.html -[5]: https://sustainableelectronics.org/r2-standard -[6]: https://sustainableelectronics.org/ -[7]: https://www.networkworld.com/blog/itaas-and-the-corporate-storage-technology/?utm_source=IDG&utm_medium=promotions&utm_campaign=HPE22140&utm_content=sidebar (ITAAS and Corporate Storage Strategy) -[8]: http://e-stewards.org/ -[9]: https://naidonline.org/ -[10]: https://naidonline.org/certifications/why-become-certified/ -[11]: https://www.iso.org/iso-14001-environmental-management.html -[12]: https://www.theverge.com/2019/12/4/20992240/e-waste-recycling-electronic-basel-convention-crime-total-reclaim-fraud -[13]: https://www.reuters.com/article/us-usa-at-t-california/att-to-pay-california-52-million-in-hazardous-waste-disposal-settlement-idUSKCN0J50AG20141121 -[14]: https://www.mercurynews.com/2016/12/06/apple-to-pay-450000-after-allegations-of-hazardous-waste-violations/ -[15]: https://www.facebook.com/NetworkWorld/ -[16]: https://www.linkedin.com/company/network-world diff --git a/sources/talk/20200415 IBM extends z15 mainframe family, intensifies Linux security.md b/sources/talk/20200415 IBM extends z15 mainframe family, intensifies Linux security.md deleted file mode 100644 index 2ec127350a..0000000000 --- a/sources/talk/20200415 IBM extends z15 mainframe family, intensifies Linux security.md +++ /dev/null @@ -1,75 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (IBM extends z15 mainframe family, intensifies Linux security) -[#]: via: (https://www.networkworld.com/article/3537678/ibm-extends-z15-mainframe-family-intensifies-linux-security.html) -[#]: author: (Michael Cooney https://www.networkworld.com/author/Michael-Cooney/) - -IBM extends z15 mainframe family, intensifies Linux security -====== -IBM continued to reshape the mainframe with an eye toward further integrating it within hybrid clouds and further securing Linux-based workloads. -Kali Linux / nevarpp / Getty Images - -IBM continued to reshape the [mainframe][1] with an eye toward further integrating it within hybrid clouds and securing [Linux][2]-based workloads. - -On the hardware side, IBM rolled out two entry-level, 19” single-frame, air-cooled platforms, the  [z15 Model T02][3] and [LinuxONE III Model LT2][4]. The new machines are extensions of the IBM z15 family that [Big Blue rolled out in September][5] of last year.  - -Both can fit in cloud [data-center][6] racks and can be outfitted with a second drawer, should customers need to grow capacity.  Both feature 65 cores using commercial processors running at 4.5GHz and can be configured to support all manner of workloads.  - -[[Get regularly scheduled insights by signing up for Network World newsletters.]][7] - -IBM said new machines support z/OS Container Extensions that enable access to an ecosystem of open-source and Linux-on-IBM Z applications that may be deployed within the native z/OS environment without requiring a separate Linux server, using Docker container skills and patterns. In addition customers can use the latest open-source tools, popular NoSQL databases, analytics frameworks and application servers, IBM said. - -The LinuxONE Model LT2 can run a number of Linux systems including [Red Hat Enterprise Linux][8], SUSE and Ubuntu, alone or side by side with IBM z/VM environments on a single physical server. The IBM LinuxONE server can run Linux workloads independently on a single server. - -Both systems support IBM’s prepackaged Cloud Paks, which include a secured Kubernetes container and containerized IBM middleware designed to let customers quickly spin-up enterprise-ready containers, the company said. IBM has standard Cloud Paks for data, application, integration, automation and multicloud management and security. The idea is to help customers develop, deploy, and manage cloud-native applications for the z15 family, IBM stated. - -Security and privacy features are key for the z15 and those have been extended with the introduction of IBM Secure Execution for Linux for the all z15 models.  In a [blog post][9] about the security extensions, IBM stated that at its core, a Secure Execution provides a KVM-based virtual machine that is fully isolated and protected from the hypervisor with encryption keys that only the IBM Z hardware and firmware have access to. - -[][10] - -“In practice, an encrypted Linux image is created using the host public key and a customer-specific key. Since the encryption keys are stored on the IBM Z hardware and firmware, the encrypted image can only be executed in a virtual machine on the host(s) it has been prepared for, and the image can’t be decrypted or tampered with outside of the designated host(s). In addition, your unencrypted virtual machine memory cannot be accessed by the host operating system either,” IBM stated. “Applications are then run inside of that virtual machine, allowing the owner of the application to focus on just disk and network data encryption, both of which can be easily handled in userland.” - -In an environment where [customers are running Kubernetes][11] across servers running on x86 and Linux on Z systems, you can deploy the Secure Execution containers specifically for the applications you want to have protected, like sensitive databases and blockchain services. In this model, Kubernetes still manages the orchestration of containers, both on x86 and IBM Z, but it has no access to the data inside the Secure Execution environment container, IBM stated.  - -With Secure Execution IBM is trying to mitigate insider threats to enterprise data. - -From 2016 to 2019, the average number of incidents involving employee or contractor negligence has increased from 10.5 to 14.5–and the average number of credential theft incidents per company has tripled over the past three years, from 1.0 to 3.2, According to the [Ponemon Institute’s 2020 Cost of an Insider Breach Report][12], IBM stated.  “IBM Secure Execution for Linux helps to mitigate these concerns by enabling clients to isolate large numbers of workloads with granularity and at scale, within a trusted execution environment.” - -The z15 family already supports what IBM calls [Data Privacy Passports][13] that promise to let customers control privacy and security by defining how all data is accessed, stored and shared. The idea is to let customers  protect and provision data and revoke access to that data at any time, not only within the z15 environment but across an enterprise's hybrid [multicloud][14] environment, IBM stated.  - -The new systems and software are expected to be available by mid-May.  z15 T02 pricing starts at $160,000 but each machine is built to order so prices vary. - -Join the Network World communities on [Facebook][15] and [LinkedIn][16] to comment on topics that are top of mind. - --------------------------------------------------------------------------------- - -via: https://www.networkworld.com/article/3537678/ibm-extends-z15-mainframe-family-intensifies-linux-security.html - -作者:[Michael Cooney][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://www.networkworld.com/author/Michael-Cooney/ -[b]: https://github.com/lujun9972 -[1]: https://www.networkworld.com/article/3446140/enterprises-find-a-new-use-for-mainframes-blockchain-and-containerized-apps.html -[2]: https://www.networkworld.com/article/3215226/what-is-linux-uses-featres-products-operating-systems.html -[3]: https://www-01.ibm.com/common/ssi/cgi-bin/ssialias?infotype=AN&subtype=CA&htmlfid=897/ENUS120-006&appname=USN -[4]: https://www-01.ibm.com/common/ssi/cgi-bin/ssialias?infotype=AN&subtype=CA&htmlfid=897/ENUS120-014&appname=USN -[5]: https://www.networkworld.com/article/3438542/ibm-z15-mainframe-amps-up-cloud-security-features.html -[6]: https://www.networkworld.com/article/3223692/what-is-a-data-centerhow-its-changed-and-what-you-need-to-know.html -[7]: https://www.networkworld.com/newsletters/signup.html -[8]: https://www.redhat.com/en/blog/enterprise-linux-all-architectures-bringing-red-hat-enterprise-linux-ibm-z15-and-linuxone-iii-single-frame-systems?sc_cid=701f2000000txokAAA&utm_source=bambu&utm_medium=social&utm_campaign=Partner -[9]: https://developer.ibm.com/blogs/inside-the-new-ibm-z15-t02-and-linuxone-iii-lt2/ -[10]: https://www.networkworld.com/blog/itaas-and-the-corporate-storage-technology/?utm_source=IDG&utm_medium=promotions&utm_campaign=HPE22140&utm_content=sidebar (ITAAS and Corporate Storage Strategy) -[11]: https://www.networkworld.com/article/3536654/ibm-taps-new-leaders-for-hybrid-cloud-battles-ahead.html -[12]: https://www.ibm.com/downloads/cas/LQZ4RONE -[13]: https://developer.ibm.com/blogs/data-privacy-passports-for-developers/ -[14]: https://www.networkworld.com/article/3429258/real-world-tools-for-multi-cloud-management.html -[15]: https://www.facebook.com/NetworkWorld/ -[16]: https://www.linkedin.com/company/network-world diff --git a/sources/talk/20200415 Network World 2020 State of the Network- SD-WAN, edge networking and security are hot.md b/sources/talk/20200415 Network World 2020 State of the Network- SD-WAN, edge networking and security are hot.md deleted file mode 100644 index 7e9543e099..0000000000 --- a/sources/talk/20200415 Network World 2020 State of the Network- SD-WAN, edge networking and security are hot.md +++ /dev/null @@ -1,96 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Network World 2020 State of the Network: SD-WAN, edge networking and security are hot) -[#]: via: (https://www.networkworld.com/article/3537559/state-of-the-network-sd-wan-edge-networking-and-security-issues-heat-things-up.html) -[#]: author: (Michael Cooney https://www.networkworld.com/author/Michael-Cooney/) - -Network World 2020 State of the Network: SD-WAN, edge networking and security are hot -====== -Network World survey finds 5G, IoT, server consolidation and WAN optimization top priorities. -[orna wachman / Pixabay][1] [(CC0)][2] - -Networking trends including [SD-WAN][3], edge and [5G][4] technology dominate the plans of IT executives and management as they look to develop efficient, bulletproof enterprise communications strategies for the future. - -Those trends and others such as network security, server consolidation and WAN optimization were cited as primary IT drivers of future investment, according to Network World's 2020 State of the Network report. - -[[Get regularly scheduled insights by signing up for Network World newsletters.]][5] - -The  survey tapped 268 IT executives and management personnel with primary networking responsibilities for their organization to find out what initiatives are motivating the move to a more digital business environment. - -### SD-WAN and WAN optimization - -The survey found that 58% of respondents said SD-WAN can improve bandwidth efficiency, and 55% said it will expand connectivity options. 48% said it will encourage [hybrid cloud][6] and 41% said it would encourage multi-cloud adoption. The Network World survey found that the increased use of containers and cloud-based applications that need access from the edge is also driving the use of SD-WAN technologies. - -There are a few differences by company size: 63% of enterprises say SD-WAN will improve the bandwidth efficiency for its cloud resources compared to 55% of SMBs. Close to half (46%) of enterprises expect SD-WAN to encourage multi-cloud, while only 26% of SMBs agree, perhaps because multicloud is less prevalent in smaller organizations, the survey stated. - -The State of the Network survey found that 44% of organizations are currently piloting or using SD-WAN, and another 28% have it on their radar. Organizations expect SD-WAN to improve management and monitoring (52%), increase resiliency (51%), improve network security (50%) and prioritize business-critical traffic (46%), the survey stated. - -It will probably come as little surprise that the technologies around SD-WAN are hot. In separate recent survey reports, analyst firm IDC says that 95% of enterprises will be using [SD-WAN][7] technology within two years, and that 42% have already deployed it. IDC also says the SD-WAN infrastructure market will hit $4.5 billion by 2022, growing at a more than 40% yearly clip between now and then. - -[][8] - -“The growth of SD-WAN is a broad-based trend that is driven largely by the enterprise desire to optimize cloud connectivity for remote sites,” Rohit Mehra, vice president, network infrastructure at IDC [said recently][9]. Going forward, the addition of features such as cloud-based application insights and performance monitoring will be a key part of SD-WAN rollouts, Mehra said. - -Cisco has talked about the growth of multicloud networking motivating many businesses to re-tool their networks in favor of SD-WAN technology, Cisco wrote recently. SD-WAN is critical for businesses adopting cloud services, acting as a connective fabric between the campus, branch, [IoT][10], [data center][11] and cloud. - -While SD-WAN is popular, its predecessor, WAN optimiization, is still in heavy use. The IDG survey found that more than half of organizations (53%) are currently piloting or using WAN optimization, which was traditionally centered around a single centralized hub or data center where an organization’s applications and data are hosted. With widely disparate user communities, many enterprises are now viewing new application-centric or regionally distributed architecture as a way to replace MPLS sprawl with purpose-built regional hubs, the survey stated. - -### Edge is big - -Often associated with SD-WAN, edge computing is also a high priority for customers in the Network World study, which found that more than one-third of organizations surveyed (36%) already have edge computing tools in production or are piloting initiatives, and another 25% are actively researching the technology. - -Edge computing is driven by a number of factors. Gartner research says that by 2023, more than 50% of enterprise-generated data will be created and processed outside the [data center][11] or cloud, up from less than 10% in 2019. - -Hand-in-hand with that change is a shift in what technologies are supported at the edge of the network, and that means information processing, content collection and delivery are placed closer to the sources, repositories and consumers of this information. Edge networking tries to keep the traffic and processing local to reduce latency, exploit the capabilities of the edge and enable greater autonomy at the edge, Gartner says. - -The Network World survey stated that [edge-computing][12] adopters expect the technologies  to reduce network latency and operational expenses, allow real-time data processing and save bandwidth. It is also expected to preserve uptime and resilience by reducing the number of network failures, providing an [IoT][10] security framework and reducing the impact of data-center outages. - -Despite all of the virtues of edge computing, security concerns are still on the minds of the vast majority of respondents (77%). More than half of those surveyed believe that  edge devices were not built with security in mind (55%), that the need for middleware creates an additional attack surface (51%) and that there are many other potential attack vectors due to the heterogeneous computing environment (51%). - -The survey stated that 69% of respondents implementing edge computing said network security has already been or will be affected, and 55% said their network management will be affected. Additionally, 49% said their cloud will be affected, perhaps because edge computing has the ability to reduce the amount of data that needs to be processed in theh cloud. - -### Security is a hot spot - -The "State of the Network" survey found there are a variety of data-center security concerns. Topping the list are DDoS attacks, which are aimed at disrupting and disabling internet services, and web application attacks where attackers target vulnerable web servers and install malicious code. - -Organizations are taking a variety of actions when it comes to mitigating these security risks, according to the study. For example the survey found that for 88% of respondents, [firewalls][10] are still the front-line defense. Access-control technologies are being used by about 81% of respondents and anti-malware is being used by 70% of enterprise customers with intrusion prevention being used by 66%. - -With the increasing number and complexity of cyber threats, it’s not surprising that almost three-quarters of respondents (71%) are either piloting, currently using or upgrading network security-monitoring technology. Network security monitoring helps to identify slowdowns and problem areas as well as allows administrators to attack problems as they happen and help prevent future attacks, the survey stated. - -### 5G is on the radar - -51% of respondents say their organization is actively researching 5G, but just 11% are piloting or using it in any capacity. Uses interested organizations are considering include broadband mobile (51%), IoT connectivity (43%), [branch or remote site connectivity][13] (41%) and low-latency communications and fixed wireless access (40% each), the survey stated. - -Join the Network World communities on [Facebook][14] and [LinkedIn][15] to comment on topics that are top of mind. - --------------------------------------------------------------------------------- - -via: https://www.networkworld.com/article/3537559/state-of-the-network-sd-wan-edge-networking-and-security-issues-heat-things-up.html - -作者:[Michael Cooney][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://www.networkworld.com/author/Michael-Cooney/ -[b]: https://github.com/lujun9972 -[1]: https://pixabay.com/photos/young-man-student-studying-learning-4053324/ -[2]: https://creativecommons.org/publicdomain/zero/1.0/ -[3]: https://www.networkworld.com/article/3031279/sd-wan-what-it-is-and-why-you-ll-use-it-one-day.html -[4]: https://www.networkworld.com/article/3203489/what-is-5g-how-is-it-better-than-4g.html -[5]: https://www.networkworld.com/newsletters/signup.html -[6]: https://www.networkworld.com/article/3429258/real-world-tools-for-multi-cloud-management.html -[7]: https://www.networkworld.com/article/3489938/what-s-hot-at-the-edge-for-2020-everything.html -[8]: https://www.networkworld.com/blog/itaas-and-the-corporate-storage-technology/?utm_source=IDG&utm_medium=promotions&utm_campaign=HPE22140&utm_content=sidebar (ITAAS and Corporate Storage Strategy) -[9]: https://www.networkworld.com/article/3527194/multicloud-security-integration-drive-massive-sd-wan-adoption.html -[10]: https://www.networkworld.com/article/3207535/what-is-iot-the-internet-of-things-explained.html -[11]: https://www.networkworld.com/article/3223692/what-is-a-data-centerhow-its-changed-and-what-you-need-to-know.html -[12]: https://www.networkworld.com/article/3224893/what-is-edge-computing-and-how-it-s-changing-the-network.html -[13]: https://www.networkworld.com/article/3250664/sd-branch-what-it-is-and-why-youll-need-it.html -[14]: https://www.facebook.com/NetworkWorld/ -[15]: https://www.linkedin.com/company/network-world diff --git a/sources/talk/20200416 Contact tracing via Bluetooth could help track COVID-19 transmission.md b/sources/talk/20200416 Contact tracing via Bluetooth could help track COVID-19 transmission.md deleted file mode 100644 index 86fa318f1c..0000000000 --- a/sources/talk/20200416 Contact tracing via Bluetooth could help track COVID-19 transmission.md +++ /dev/null @@ -1,55 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Contact tracing via Bluetooth could help track COVID-19 transmission) -[#]: via: (https://www.networkworld.com/article/3538333/contact-tracing-via-bluetooth-could-help-track-covid-19-transmission.html) -[#]: author: (Jon Gold https://www.networkworld.com/author/Jon-Gold/) - -Contact tracing via Bluetooth could help track COVID-19 transmission -====== - -Thinkstock - -[[Get regularly scheduled insights by signing up for Network World newsletters.]][1] - -A team of researchers from MIT has developed a novel method of tracking COVID-19 transmission among the population, using Bluetooth “chirps” that could automatically trace COVID-positive contacts and warn those who have potentially become infected, without violating their privacy. - -The system is called PACT, or Private Automated Contact Tracing. It works by sending random strings of numbers via low-power Bluetooth from a user’s smartphone to other nearby devices using the system, creating a coded list of smartphones that a given user has been close to in the past 14 days. - -If the user subsequently tests positive for COVID, he or she can upload that list of “chirps” to the database, so that other users can run a check to determine whether they might have exposed. - -MIT said that the system uses advanced privacy protection methods to ensure the privacy of both COVID sufferers and those checking to see whether they’ve been exposed. People would need to opt in, and researchers specifically highlighted that PACT does not use any GPS, wireless location or phone ID information. - -“For these broadcasts, we’re using cryptographic techniques to generate random, rotating numbers that are not just anonymous, but pseudonymous, constantly changing their ‘ID,’ and that can’t be traced back to an individual,” said MIT institute professor Ron Rivest, who led the project. (Rivest knows a  thing or two about cryptography: he’s the R in RSA, the first publicly available public-key cryptosystem.) - -The idea behind PACT is to make sure that the system isn’t tracking any individuals specifically. Rather, it’s meant to be a yes/no resource for those wondering whether they may have been in proximity to someone with COVID. It’s currently at the proof-of-concept stage – the team recently overcame the hurdle of getting Androids and iPhones to speak to each other – and overtures have been made to smartphone makers, Apple, Google and Microsoft to try and get the system into the public’s hands as quickly as possible. - -“The aim of the prototype is to prove to these developers that this is feasible for them to implement,” said Rivest. - -**[ [Take this mobile device management course from PluralSight and learn how to secure devices in your company without degrading the user experience.][2] ]** - -The team hopes that if PACT comes into widespread use it would enable a much more selective approach to quarantine and give communities the ability to return to normalcy more quickly. Tracking the spread of a disease like COVID with more speed and precision could let public health authorities suggest testing to specific groups of people if they notice a pattern emerging. - -MIT also said that the team has demonstrated PACT to various government agencies, and coordinating similar efforts elsewhere in the U.S., as well as in Europe. - -Join the Network World communities on [Facebook][3] and [LinkedIn][4] to comment on topics that are top of mind. - --------------------------------------------------------------------------------- - -via: https://www.networkworld.com/article/3538333/contact-tracing-via-bluetooth-could-help-track-covid-19-transmission.html - -作者:[Jon Gold][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://www.networkworld.com/author/Jon-Gold/ -[b]: https://github.com/lujun9972 -[1]: https://www.networkworld.com/newsletters/signup.html -[2]: https://pluralsight.pxf.io/c/321564/424552/7490?u=https%3A%2F%2Fwww.pluralsight.com%2Fcourses%2Fmobile-device-management-big-picture -[3]: https://www.facebook.com/NetworkWorld/ -[4]: https://www.linkedin.com/company/network-world diff --git a/sources/talk/20200416 Harvesting ambient energy will power IoT, scientists say.md b/sources/talk/20200416 Harvesting ambient energy will power IoT, scientists say.md deleted file mode 100644 index 8831fcbfbe..0000000000 --- a/sources/talk/20200416 Harvesting ambient energy will power IoT, scientists say.md +++ /dev/null @@ -1,66 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Harvesting ambient energy will power IoT, scientists say) -[#]: via: (https://www.networkworld.com/article/3536697/harvesting-ambient-energy-will-power-iot-scientists-say.html) -[#]: author: (Patrick Nelson https://www.networkworld.com/author/Patrick-Nelson/) - -Harvesting ambient energy will power IoT, scientists say -====== -Magnetic fields found naturally around electrical devices could be diverted and converted into electricity to power the IoT. -Thinkstock - -Stray, ambient magnetic fields that are naturally created from electricity usage should be captured, diverted, and converted into power for Internet of Things sensors, researchers say. - -"Just like sunlight is a free source of energy we try to harvest, so are magnetic fields," said Shashank Priya, professor of materials science and engineering and associate vice president for research at Penn State, in a statement published [on the university's web site][1]. "We have this ubiquitous energy present in our homes, office spaces, work spaces and cars. It's everywhere, and we have an opportunity to harvest this background noise and convert it to useable electricity." - -Electricity produces tiny magnetic fields around common power cables, computers and lighting found in factories, homes and offices. That energy, if harnessed, could power sensors and small data-sending radios, the academics think. Penn State is attempting to design ambient power receptors for IoT. - -### Materials science - -The group at Penn State has been having some success getting it to work. Experimental devices that are thin and about 1.5 inches long are being tested. Placing the capture-device around or on common appliances does produce electricity, the researchers claim. The key is to put the device where the magnetic field is the strongest. In one experiment, the researchers were able to generate enough power to run 180 LED lighting arrays with a device placed about 4 inches from a space heater. At 8 inches, the device produced enough electricity to operate a clock. - -"These results provide significant advancements toward sustainable power for integrated sensors and wireless communication systems," said Min Gyu Kang, an assistant research professor at Penn State and joint lead author of the study. - -Electricity and magnetism have always gone hand in hand. Magnetism is created by a moving electric charge. It's that movement which creates the magnetic field. That's why low-level magnetism is manifested in electrical wires generally, for example—the electricity is moving along the cable. - -In this case, the scientists are converting the magnetic field, which is caused by the moving electricity, into a separate electrical current. They're doing it with materials science by combining two materials. One of the materials is a magnetostrictor – it converts the magnetic field into stress-generating vibrations. The another material is piezoelectric, which grabs the vibrations and translates that energy into electricity. - -[][2] - -### How to power sensors - -Producing usable power from stray magnetic fields is just one stab at powering the IoT. Just how one goes about producing power for the millions, and possibly billions, of environmental, factory process and other sensors that are expected to come on stream as IoT takes off is up for grabs. - -Batteries have limitations—they need to be changed or charged, for example. Ambient humidity is one possibility I [wrote about recently][3]. In that case, bio-electronics have been proven to capture half-a-volt from ambient air, scientists claim. That's enough to operate rudimentary sensors. Waste heat, too, is another possible source: Researchers are [exploring ways to convert excess heat][4], such as is found in data centers, into light, and then turn that light into electricity. - -Other angles include simply reducing energy consumption through more efficient chips or streamlined wireless communications hardware. Other parasitic techniques are being tried. They include [turning existing wireless noise into a data carrier][5]. It's efficient because one doesn't have to make so much power for radio transceivers—the carrier already exists. - -In the case of the Penn State work, less obvious benefits might exist, too. - -"In buildings, it's known that if you automate a lot of functions, you could actually improve the energy efficiency very significantly," Priya said. “Buildings are one of the largest consumers of electricity in the United States. So even a few percent drop in energy consumption could represent or translate into megawatts of savings. Sensors are what will make it possible to automate these controls, and this technology is a realistic way to power those sensors." - -Join the Network World communities on [Facebook][6] and [LinkedIn][7] to comment on topics that are top of mind. - --------------------------------------------------------------------------------- - -via: https://www.networkworld.com/article/3536697/harvesting-ambient-energy-will-power-iot-scientists-say.html - -作者:[Patrick Nelson][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://www.networkworld.com/author/Patrick-Nelson/ -[b]: https://github.com/lujun9972 -[1]: https://news.psu.edu/story/613154/2020/03/31/research/scientists-tap-unused-energy-source-power-smart-sensor-networks -[2]: https://www.networkworld.com/blog/itaas-and-the-corporate-storage-technology/?utm_source=IDG&utm_medium=promotions&utm_campaign=HPE22140&utm_content=sidebar (ITAAS and Corporate Storage Strategy) -[3]: https://www.networkworld.com/article/3529893/seawater-humidity-inspire-new-ways-to-generate-power.html -[4]: https://www.networkworld.com/article/3410578/data-centers-may-soon-recycle-heat-into-electricity.html -[5]: https://www.networkworld.com/article/3449819/wireless-noise-protocol-can-extend-iot-range.html -[6]: https://www.facebook.com/NetworkWorld/ -[7]: https://www.linkedin.com/company/network-world diff --git a/sources/talk/20200416 How I-ve adjusted my work-from-home habits.md b/sources/talk/20200416 How I-ve adjusted my work-from-home habits.md deleted file mode 100644 index 251e9a7b9e..0000000000 --- a/sources/talk/20200416 How I-ve adjusted my work-from-home habits.md +++ /dev/null @@ -1,86 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (How I've adjusted my work-from-home habits) -[#]: via: (https://opensource.com/article/20/4/healthy-remote-work-habits) -[#]: author: (Will Kelly https://opensource.com/users/willkelly) - -How I've adjusted my work-from-home habits -====== -WFH newbs and veterans alike have to adjust to self-quarantine; here's -how to maintain some balance. -![Oatmeal and a laptop.][1] - -I've been a remote worker during various chapters in my career, and have tried to carry those lessons into each new remote work experience. At the end of last year, I switched to a job that lets me work from home. Fast forward to the COVID-19 outbreak; even though I was no WFH novice, I found myself having to adapt just like the many other workers who've been suddenly thrust into remote work. - -In hopes of easing that transition, here are some healthy remote work habits to adapt during a pandemic. - -### Keep exercising even if your gym is closed - -I watched the crowd in my gym dwindle the week before my state government issued its stay at home orders. Whether I've been working in an office or at home, going to the gym helps me vent stress, plus it acts as a logical break in my daily routine because I put down my phone and keyboard to clear my head. - -Fortunately, my gym put some training activities online that I plan to use. I already have a stability ball and Bosu ball in my home office that I began using on day three after the pandemic closed all the offices, schools, and later gyms in my local area. As I write this article, I'm entering week 4 of COVID-19-mandated remote work, and I'm still trying to get back to the exercise dedication and momentum I had before this all happened. - -### Dress (and groom) yourself for work - -I've worked from home on and off during my career. When I started my new job, I decided not to repeat some mistakes I made during the last time I worked from home. One mistake I made was not shaving every day. I also stopped getting dressed for work. - -When you dress and groom yourself for work every day, it can help put you in focus for work. You don't have to be too strict; it is a pandemic after all. I'm still debating on sweatpants Fridays during this crisis. - -### Eat meals away from your desk - -It's too easy to just eat meals at your desk when you work at home. Many even do it at the office. I recommend as you get through your COVID-19-enforced remote working that you use eating as a natural break in the ebbs and flows of your day. For example, unless a deadline was calling, I would go out to lunch to break up my remote working days. These days I get up from my desk, walk outside to get a breath of fresh air and have lunch in my living room. - -### Keep a schedule and track your progress - -It's easy to sleep in when you don't have to go to the office. I recommend trying to keep to your regular schedule as much as possible. It's admittedly easy for me to say that because I live alone. If you're home with children, work with your employer to time-shift your schedule to accommodate the added responsibilities and other challenges you're facing right now. It may take a few iterations to get the right schedule, but you'll appreciate the consistency. - -Another word about keeping a schedule—you might add important work meetings to your personal calendar or as reminders on your mobile device, so you have another reminder as you adjust to the new normal of COVID-19. - -The open source community has a lot of great scheduling and project management tools that you can use to track your own time and progress. There are [project management tools][2] for agile development teams. You can also find open source alternatives to [Googl][3][e Calendar][3] available on Android. - -### Put backup communications channels in place - -Even companies with robust telework programs may see some communications outages. It may not even be their CIO's fault, such as the Microsoft Teams outage that happened in Europe early on during the COVID-19 pandemic. - -Having problems dialing into a conference bridge or your employer's group chat having sporadic issues will surprise nobody right now; most understand that workers are in a period of transition, and not everything will run smoothly. However, you still need to have backup channels in place to make that communication happen, even if it's just coworkers exchanging cell numbers so they can text or call each other as needed. - -There are some fully-featured open source [Slack alternatives][4] available that are worth exploring if your organization is lacking in chat applications or if you want to give your team a backup channel to your official corporate application. (Whether you do it with the approval of your corporate IT department is up to you). - -You should also consider installing implementing [MediaWiki][5] or [Twiki][6] to improve collaboration or to give your team an accessible document repository. - -### Pivot on communications when needed - -Every company where I've been an employee or contractor has had its own communications style. Remote working at scale during the COVID-19 epidemic will challenge those communication styles. - -Be prepared to shake up your communication style, whether you're a newb or long term remote worker. That could mean writing more detailed emails instead of the terse ones you normally send to becoming more of a power user with your company's group chat tool. There are also the open source wikis I mentioned earlier that can provide you a centralized platform for any long-form writing you need to do to help communicate project requirements and changes. - -I also extend this advice to your personal communications during the workday. For example, a friend and I video conference during the day. We never did that pre-COVID-19. - -### Final thoughts - -Lots of people will evolve and rethink their remote work habits. It's only healthy that you prepare yourself for adjusting your own remote working habits. What worked for me pre-COVID-19 doesn't necessarily work right now, so I'm adjusting my remote work habits weekly as I see fit so I can maximize my productivity during the current crisis. - -How are you adjusting your remote work habits during self-quarantine? - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/4/healthy-remote-work-habits - -作者:[Will Kelly][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/willkelly -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/oatmeal-and-fedora.jpg?itok=NBFUH9eF (Oatmeal and a laptop.) -[2]: https://opensource.com/article/18/2/agile-project-management-tools -[3]: https://www.androidpolice.com/2019/12/30/the-best-free-and-open-source-alternatives-to-google-calendar-on-android/ -[4]: https://opensource.com/alternatives/slack -[5]: http://www.mediawiki.org/ -[6]: http://www.twiki.org/ diff --git a/sources/talk/20200417 Face-to-face collaboration for community to become more impactful - Chip Childers.md b/sources/talk/20200417 Face-to-face collaboration for community to become more impactful - Chip Childers.md deleted file mode 100644 index ccc63dc914..0000000000 --- a/sources/talk/20200417 Face-to-face collaboration for community to become more impactful - Chip Childers.md +++ /dev/null @@ -1,58 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Face-to-face collaboration for community to become more impactful – Chip Childers) -[#]: via: (https://www.linux.com/articles/face-to-face-collaboration-for-community-to-become-more-impactful-chip-childers/) -[#]: author: (Swapnil Bhartiya https://www.linux.com/author/swapnil/) - -Face-to-face collaboration for community to become more impactful – Chip Childers -====== - -“Anytime there’s a crisis, there’s also an opportunity for open source communities to find ways to be helpful,” affirms Chip Childers, the Executive Director of Cloud Foundry Foundation. He believes the remarkable work the Cloud Foundry community has done over the years to enhance enterprise developer productivity will now help those who have adopted the platform to combat COVID-19.; - -“It (the platform) allows them to move quickly to respond to changing conditions, whether those are market conditions, or in this case, a global pandemic. We’re actually pretty proud of a lot of the end-users and how they’re able to use the software more efficiently now,” he says. - -Prior to becoming the Executive Director, Childers served as the CTO for a little over five years. He feels “it’s a very exciting time to be stepping into the role,” and has already chalked out a robust strategy to take the Foundation to the next level. - -For starters, Google has upped its membership of Cloud Foundry and is now at the technical tier. “We were quite happy to have them decide to upgrade and we appreciate their support on that,” says Childers. - -He is also happy with how Kubernetes and Cloud Foundry are coming together. - -“Cloud Foundry and Kubernetes are now becoming complementary. The Cloud Foundry developer platform should run on the Kube infrastructure platform. Both communities have reached the point where they’re ready to see this get blended,” says Childers. - -**Unswerving Support** -VMware ranks among the largest contributors to communities. Last year, it acquired Pivotal, which is one of the biggest stakeholders in the Cloud Foundry project. So, what are the implications on Cloud Foundry of a player that has stakes in both Kubernetes and Cloud Foundry? - -“It’s a clear indication the teams that used to work for Pivotal are being intermixed with the teams that were at VMware, and through some of their other acquisitions like Heptio, they’re all working together on the shared vision of creating the Tanzu platform. This happens to align well with the vision that other Cloud Foundry distributions have — like the way SUSE builds Kubernetes-based infrastructure layers Cloud Foundry on top for developer productivity,” explains Childers. - -Childers believes Paul Fazzone’s promotion to Chairman of the Board will provide an additional boost to Cloud Foundry. - -“Paul heads R&D for VMware’s modern applications business unit. He’s been on our board for a long time. So it’s great that we’re going to continue to see the investment in the open source community not just at the business level from VMware, but also in terms of supporting the contributors, be it developers, product managers, project management support, or marketing support. They’re not wavering in their commitment to open source across the board and Cloud Foundry is one of those communities that will benefit from that,” he states. - -**A Three-Pronged Strategy** -The core mission of the Foundation is to bring a world-class enterprise developer experience to as many enterprise developers as possible. Childers, therefore, considers “enterprise developer productivity for Kubernetes infrastructure our new north star” and has devised a three-pronged strategy to align with it. - -“The first thing is that we will focus on working with the contributing community — the Foundation staff, key member contacts and participants — to improve their experience. - -Next is to build upon the inclusivity and diversity work that the Foundation has done over the years. “We’ve always had a number of different audiences to whom we’ve tried to describe the work of the project: line of business leaders, CIOs, IT operations, and enterprise developers. It is important to make a little bit of a dent in the broader technology industry,” avers Childers. - -The third and final prong of Childers strategy is to encourage developers or companies participating in Cloud Foundry efforts to also participate in Istio (an open platform that connects, manages, and secures microservices), Kubernetes, and the various scenes within the community. - -“There’s a massive overlap, which I think will be very beneficial to everyone. The learnings that developers helping to code Kubernetes or Istio learn during that process should flow in such a way that the CF community builds the developer experience on top of those systems. From this perspective, cross-pollination is really, really important,” says Childers. - -Childers is also planning a tectonic shift in the way Foundation contributors work. “While now it’s going to become a little bit harder as we deal with some of the challenges around the pandemic, I’m very excited about spending a lot of our effort focused on increasing the impact of the face-to-face collaboration time that we’re able to create for the community,” adds Childers. --------------------------------------------------------------------------------- - -via: https://www.linux.com/articles/face-to-face-collaboration-for-community-to-become-more-impactful-chip-childers/ - -作者:[Swapnil Bhartiya][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://www.linux.com/author/swapnil/ -[b]: https://github.com/lujun9972 diff --git a/sources/talk/20200418 My 10 guiding principles for open source community management.md b/sources/talk/20200418 My 10 guiding principles for open source community management.md deleted file mode 100644 index c5e62ba6b3..0000000000 --- a/sources/talk/20200418 My 10 guiding principles for open source community management.md +++ /dev/null @@ -1,116 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (My 10 guiding principles for open source community management) -[#]: via: (https://opensource.com/article/20/4/open-source-community-management) -[#]: author: (Florian Effenberger https://opensource.com/users/floeff) - -My 10 guiding principles for open source community management -====== -It's not just about subject matter expertise; leadership in the open -source world requires special skills and processes. -![community team brainstorming ideas][1] - -Many activities these days, be they sports, social work, arts or free and open source software, are organized in some sort of community. If backed by a respective legal entity, this not only helps with getting donations and entering contracts but also puts statutes and rules in place that establish the values and ideals all contributors share and abide by. - -Inside these communities, there can be various roles. Some of them have formal requirements and annual or biannual elections, e.g., the board of directors or the supervisory board; others exist ad hoc within dynamically grown groups and can change frequently. Either of those are ideally composed of experienced and enthusiastic community members who take leadership and responsibility. - -Many regular contributors will, therefore, eventually face the question of whether to accept a certain role. Based on my experience with being a board member of the former German associations [OpenOffice.org][2] Deutschland e.V. and Freies Office Deutschland e.V., previous chairman and current executive director of [The Document Foundation][3] and founding member of the Munich [Open-Source-Treffen e.V.][4], I would like to share some personal insights on the topic. - -These views are purely my own, and your mileage might vary. It is likely that others had both similar and different experiences, so I'm looking forward to any feedback and thoughts you might have. - -### 1\. Cooperation - -A community is all about cooperation. Boards, groups, and bodies are no different in this regard. Usually, you don't know who will co-serve on an elected committee with you until shortly before you start your duty. Therefore, it is important to cooperate openly with your new colleagues in a transparent, trustworthy, and effective way, within the committee as well as the larger community. - -Sharing a common understanding of responsibilities and duties, and even more importantly, of your goals, visions, and plans can help a lot. It's not necessary for these to all be totally aligned in the first place, as long as there are consensus and compromise to help you identify goals that benefit the community and their objectives at large. In a vivid and diverse community, several goals can often be pursued at once, as most won't be mutually exclusive or otherwise prohibitive. - -And then let's not forget one thing: the fun! Be proud that you have been entrusted by your peers to drive the community and its projects toward a bright future. Be proud that you can help steer the ship and shape the soul of something that is important to you. As is often the case in life, cooperating and working together with others is key to success. Joining forces is not only easier but also much more fun than working alone. - -### 2\. Commitment - -Taking over a role is something that can and should make you proud. See this as something you have been entrusted with for a certain amount of time because your contributions have been recognized by the community as extraordinary and remarkable. You acted in a visible and trustworthy fashion, and people credit you with leadership skills. - -Depending on the role you take, the honor often comes with a fair amount of new responsibility beyond what you already do, and it might involve subjects yet unknown to you. In other words: Be ready to put in some time and effort. - -How much time such a commitment takes obviously depends on multiple factors: what specific role you take, how many contributors you have to coordinate with, how large your organization is, and of course, what kind of projects you run. [In one of its annual reports][5], board members of The Document Foundation explained that every year "they each donate 15 to 20 days of activity to TDF for Board duties in addition to other volunteering" and the members of its membership committee donate "between 10 and 15 days of activity." - -### 3\. Variety - -Should you be elected into an organizations' formal body, you will see yourself responsible for representing the entity from a marketing perspective, but also from a legal and organizational point of view. Other than the more glamorous parts, these duties often also entail regular meetings, annual budget planning and reserve building, tax filings and annual activity reports, team management, trademark and copyright handling, planning and overseeing tenders, and all sorts of expected and unexpected legal matters and fostering liaisons with other entities, all of which are rather unglamorous tasks rarely seen by the general public. - -That requires the willingness to learn in a variety of areas and for having a rather high tolerance for frustration. Luckily, most of the groups I know are composed of members with different skills, so it's likely someone is either already experienced in or willing to learn one or more of the respective areas. Looking at The Document Foundation's [rules of procedure][6] for the board, a total of 13 different areas of oversight can be identified, each one staffed with one or more volunteers, matched to their area of interest. - -### 4\. Delegation - -Handling all the work alone as a pure volunteer will sooner or later become an impossible task and, unless you have magical superpowers, it's strongly advisable to share these with other seat holders, volunteers, and, if they exist, staff and external professionals. Often, growing organizational demands luckily come together with the financial growth of the entity, which makes paying professionals for certain tasks quite feasible and sensible. Accounting, administration, and legal advice are prime examples of things to outsource (unless that's the service you already provide, of course). - -If you oversee a large part of the organization, you primarily need to focus on strategy and the mission at large, so it is advisable to delegate many tasks to others. Remember, the community has entrusted you to steer the ship, to oversee the big picture; don't bother yourself with every little detail and micromanagement, but get enough insight to oversee those you task and trust that they do a good job. - -### 5\. Responsibility - -In the end, however, it still is the ultimate and shared responsibility of all representatives to oversee and coordinate the work, ensure all duties are fulfilled, and, especially for board members, take care that all legal obligations are met. Remember, donors trust you to make good use of their money, so you have a huge responsibility. - -In nearly all legislations, there exist numerous rules and regulations you are bound by, and the unfortunate tendency is often to make things more complicated instead of relaxing them. - -In case something goes wrong, those most exposed are first in line to be confronted with that, both from a social and legal point of view. - -### 6\. Social - -Depending on the size of the organization and your role, you might not only have responsibility for tasks and projects, but also for a paid team. Keep in mind that, for many, their economic situation depends on the success of your organization. Job security and a positive work environment are important factors to keep a happy and dedicated team. - -Gaining the skills and finding the time as a pure volunteer to oversee a large full-time team is demanding. Interacting by talking, listening, and being open helps a lot for both your team and the organization. In many organizations, the paid team is there to serve your community, to drive forward the success of the project, to take away annoying administrative tasks from you, and to work on tasks that support and enable your contributors. - -Working at charities can be a bit different from companies. Given most of your income consists of donor's money, you have less monetary flexibility than commercial employers. However, you provide a far superior experience than many traditional businesses. Use that as your advantage—your team does something for the good cause, can work with people around the world, can really make a difference, and at the same time make a living out of what they love. Communicate frequently, and don't forget to laud people if they do a good job, especially in remote working environments. - -### 7\. Diversity - -Crucial and essential is that representatives reflect the diversity of the community—different genders, religions, languages, cultures, backgrounds, and experiences add an incredibly exciting variety that you should aim hard to achieve in any board, committee, and group. While this can turn out to be challenging in the beginning, it for sure will enrich your community in ways you never dared to dream of before. - -This diversity is one of the most important and exciting assets a larger community offers; you'll soon learn how it widens the view, helps you to question your own thoughts and positions, and contributes greatly to your overall efforts. If you run an open source community, do exactly as the name suggests—be open, be passionate, and try to get to the bottom of things! - -### 8\. Coordination - -Having members from around the globe can make you face some practical problems though—most notably, languages and time zones. While English as a common denominator is spoken widely in Europe, it might be different for other countries, and including those who don't speak English as their mother tongue is key if you have a large community. You risk losing vital insight into what your worldwide community does if you don't manage to connect to them. - -Something the law of physics at least currently doesn't allow is overcoming the different time zones. Finding suitable meeting slots for participants on different continents, matching everyone's working schedule, and providing a work-life balance aren't trivial requirements, especially when you want to include a paid team. As you end your workday, colleagues from a different continent are just about to start theirs. While the volunteers need meeting times after office hours, your staff would probably rather not stay in the office until late or during the weekends. - -Likely there isn't an ideal meeting time, but you will end up finding a compromise that works for most people, possibly including alternate meeting times. A word to the wise: use calendar invites and meeting planners with time zones to avoid confusion, especially during times of daylight savings changes. - -The choice of medium is important as well—all stakeholders need to be aware of and included in important discussions. Some of these are thus better done in email; others are easier to handle on the phone. You might also find it convenient to prepare initial discussions via emails and have the final vote on the phone. - -Properly prefixing email subjects with votes and discussions can likewise be helpful to handle the influx of messages and catch people's attention. The same is true for meeting intervals, agendas, deadlines, quorum requirements, and sunset periods—these need to reflect everyone's needs, factoring in availabilities, vacations, and absences. The rationale behind this is that taking a role requires continuous, active participation in many communities, to keep up with what's going on, and that is much easier when the rules are clear. - -Depending on your setup and the jurisdiction you're in, votes and meetings also have formal requirements you have to stick to. - -### 9\. Trust - -Trustworthiness is probably one of the most important characteristics for anyone who fills a leadership role. Email conversations lack tone and gestures, making it harder to understand moods, emotions, and intentions. Thus it's even more important to assume best intentions on each side, trying to avoid what is known as confirmation bias, i.e., interpreting actions and words in a way that seems to confirm your existing negative assumptions. - -Trust especially comes into play when the entity is located in a country whose language you don't speak or whose legal system you are not familiar with—you will have to rely on translation services and people acting as gateways, be they volunteers or paid professionals. - -### 10\. Reward - -Filling a community role usually means plenty of hard work on top of your existing duties, but there are plenty of rewards for all that work. It is a very honorable and truly exciting opportunity that will not only enrich your professional life (and makes a good item on a CV) but beyond that, enriches your personality, your skills, and your point of view. If you're passionate about what you do, if you're open to new things, if you want to shape the future of what you love—then you indeed might be a great candidate to serve the community and lead by example. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/4/open-source-community-management - -作者:[Florian Effenberger][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/floeff -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/meeting_discussion_brainstorm.png?itok=7_m4CC8S (community team brainstorming ideas) -[2]: http://OpenOffice.org -[3]: https://www.documentfoundation.org/ -[4]: https://www.opensourcetreffen.de/ -[5]: https://wiki.documentfoundation.org/File:AnnualReport2016LR.pdf -[6]: https://wiki.documentfoundation.org/TDF/BoD_rules diff --git a/sources/talk/20200420 Why I use open source technology for web development.md b/sources/talk/20200420 Why I use open source technology for web development.md deleted file mode 100644 index 03a2ea4148..0000000000 --- a/sources/talk/20200420 Why I use open source technology for web development.md +++ /dev/null @@ -1,102 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Why I use open source technology for web development) -[#]: via: (https://opensource.com/article/20/4/open-source-web-development) -[#]: author: (Jimmy McArthur https://opensource.com/users/jimmymcarthur) - -Why I use open source technology for web development -====== -Micro-frontends with an API-driven approach power the OpenStack -Foundation's platforms. -![Text editor on a browser, in blue][1] - -Every day, millions of people all over the world access the [OpenStack Foundation][2]'s (OSF) web properties to learn about open infrastructure. This level of usage requires a platform and toolsets that are fast, flexible, and affordable—and this is where open source comes in. Not only that, but given that we work for an open source software foundation, we naturally incorporate open source technologies into everything we do, including web development. - -### Considerations for web development - -When thinking about web development technologies, we must consider how we manage our software lifecycles. All software development includes some sort of [lifecycle management][3] with the opportunity to plan, analyze, design, and implement the code. Our web development team usually works on the fly, often under tight deadlines, and with other departments. That means our requirements and workflow must be flexible enough to allow for quick iterations, updates, and corrections. I'd rather push out something quickly and, if needed, go back in and make things pixel perfect after the fact. - -Our team also has to consider all the stakeholders involved in the website, including our talented marketing teams who aren't familiar with Git workflows. That led us, like many others, to utilize a content management system (CMS), so those professionals can make updates without having to use Git. - -### Building a CMS-agnostic web architecture - -In order to uphold this need for flexibility, traditionally, we relied on an open source CMS, [SilverStripe][4]. However, our requirements quickly outgrew the system. So, we built a standalone API and use static micro-sites with [React][5] JavaScript components to pull data into custom-designed presentation layers. We use this system in everything from mobile apps to websites to digital signs. This has become known as a [Jamstack][6] architecture. We found this model was extensible enough that it allowed us to move our data anywhere while being CMS-agnostic. - -When adopting this API-driven workflow, we realized that our data was used in many different places and presented in many different ways. Across our seven web properties, we share everything from graphics to dynamic content. A standard CMS won't do this without a lot of custom development work along with either cron jobs or costly database queries. - -When things are API-driven, you can access all these different datasets across a variety of platforms while largely protecting your infrastructure from major traffic spikes. For example, the OSF collaborated with [Tipit][7], the OSF's digital design and development partner, to develop a completely open source end-to-end event management software. Our event-schedule data is presented on web pages, mobile apps, and digital signage. It's the same data, managed from a single place, but with different presentation layers, formats, and platforms. - -### Open source identity access management - -A cornerstone of moving to a decentralized Jamstack architecture is the need to establish identity and access rights. When using JavaScript to call for things in an API, we may need to require authentication and authorization. Therefore, we had to separate the identity provider from any individual implementation. There are two concepts to this: identity (authN) and identity access management (authZ). The identity provider confirms who you are, while access management confirms what roles and permissions you have to do different things. One of the first requirements when developing the event-management software was to establish a standalone identity provider. - -Enter [OpenStackID][8], which is an [OpenID Connect][9] with oAuth2 SSO solution. OpenStackID started out as a more secure way for users to log into [Openstack.org][10] and manage their profiles. Even as the number of websites and event apps we manage grows, this creates a seamless authentication experience for users. The access-management portion allows us to build standalone React-based apps that use the identity provider to determine if a particular user has the rights to do the things they want to do in that specific application. - -One thing that runs through everyone's mind—especially in a global open source community—is privacy. It's a large factor in creating our web and event properties. With OpenStackID, users can log into their [OpenStackID account][11] and set application permissions using the OAuth 2 console. If they decide they no longer want their app associated with their OpenStackID, they can simply remove permissions. - -For example, we have users for our events that do not want their personal information to be associated with their presence at our conferences. The way the platforms are set up, all personally identifiable data is managed securely on the OpenID server, and it's not shared between applications unless the user strictly enables it. Beyond that, we never share things like the events a user attends or pieces of their user profile unless it's completely anonymized, or they specifically allow it in order to remain aligned with the [Four Opens][12] or our community philosophy. - -### Better web infrastructure using open source - -Taking our considerations and shifting toward a more flexible implementation of a CMS has helped our teams collaborate more effectively. Most importantly, we continue to follow our community values by providing great privacy and security options thanks to open source technology. - -If you're interested in our approach, check out the OSF Foundation website's [source code][13]. You can also access the following source code repos to see the approach in action: - - * [Zuul website][14] - * [Airship website][15] - * [StarlingX website][16] - * [Kata Containers website][17] - * [MOC and Open Infra Labs website][18] - * [Open Stack Foundation website][19] - * [Open Infrastructure Summit admin][20] - * [Open Infrastructure Summit CFP][21] - * [Open Infrastructure Summit Signage][22] - * [OpenStack Survey GraphQL API to access survey data and reports][23] - * [OpenStack Survey Graphene API to feed summit reports][24] - * [OpenStackID authentication system][25] - * [OpenStackID resource server][26] - - - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/4/open-source-web-development - -作者:[Jimmy McArthur][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/jimmymcarthur -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/browser_blue_text_editor_web.png?itok=lcf-m6N7 (Text editor on a browser, in blue) -[2]: https://osf.dev/ -[3]: https://en.wikipedia.org/wiki/Systems_development_life_cycle -[4]: https://www.silverstripe.org/ -[5]: https://reactjs.org/ -[6]: https://jamstack.org/ -[7]: https://www.tipit.net/ -[8]: https://opendev.org/explore/repos?q=openstackid&tab=&sort=recentupdate -[9]: https://openid.net/connect/ -[10]: http://Openstack.org -[11]: https://openstackid.org/ -[12]: https://osf.dev/about/four-opens/ -[13]: https://github.com/OpenStackweb/openstack-org -[14]: https://opendev.org/zuul/zuul-website -[15]: https://github.com/AirshipWeb/airship-website -[16]: https://github.com/StarlingXWeb/starlingx-website -[17]: https://github.com/kata-containers/www.katacontainers.io -[18]: https://github.com/OpenStackweb/openinfralabs-website -[19]: https://github.com/OpenStackweb/osf-website -[20]: https://github.com/OpenStackweb/summit-admin -[21]: https://github.com/OpenStackweb/call-for-presentations -[22]: https://github.com/OpenStackweb/openstacksignage -[23]: https://github.com/OpenStackweb/openstack-survey-api -[24]: https://github.com/OpenStackweb/summit-reports-api -[25]: https://opendev.org/osf/openstackid -[26]: https://opendev.org/osf/openstackid-resources diff --git a/sources/talk/20200421 How underwater Internet of Things will work.md b/sources/talk/20200421 How underwater Internet of Things will work.md deleted file mode 100644 index 16503a8143..0000000000 --- a/sources/talk/20200421 How underwater Internet of Things will work.md +++ /dev/null @@ -1,61 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (How underwater Internet of Things will work) -[#]: via: (https://www.networkworld.com/article/3538393/how-underwater-internet-of-things-will-work.html) -[#]: author: (Patrick Nelson https://www.networkworld.com/author/Patrick-Nelson/) - -How underwater Internet of Things will work -====== -Lasers will be used to power underwater devices and transmit data below the ocean's surface. -North Sea Port - -More than two-thirds of the world's surface is covered by water. It plays an important role in our economic existence, including in major verticals such as oil and gas, shipping and tourism. - -As the Internet of Things proliferates, questions arise as to how IoT will manifest itself underwater given that radio waves degrade over distance in seawater, and underwater acoustic communication (which does actually work okay) is easily eavesdropped on and isn't stealthy. - -To make the underwater Internet of Things happen, light is the answer, some say. Researchers at King Abdullah University of Science and Technology (KAUST) in Thuwal, Saudi Arabia, are proposing underwater optical communications. They're investigating simultaneous lightwave information and power transfer (SLIPT) configurations, which they're using to transmit energy and data to underwater electronic devices. Recently, the researchers announced a breakthrough experiment in which they were able to achieve an underwater, two-way transmission of data and power over 1.5 yards between a solar panel-equipped sensor and a receiver. - -The SLIPT system will be more usable than wires strung. And in the case of human underwater equipment inspections, for example, SLIPT will be less prone to error than hand signals and less prone to audible confusion than ultrasound voice-based communicators. Remarkably, to this day, hand signals are still a common form of communication between divers. - -"SLIPT can help charge devices in inaccessible locations where continuous powering is costly or not possible," said Jose Filho, a PhD student at KAUST, [in an article][1] on the school's web site. - -Filho, who has been involved in developing the laser project, envisages ships or boats on the water's surface beaming optical communications to underwater vehicles or IoT sensors on the ocean floor. The lasers would simultaneously communicate with and power underwater robots and devices. Return data is relayed to the surface vessel, which then communicates to land bases or data centers via RF (radio). - -Surface buoys – or even unmanned aerial vehicles (drones) flying well above turbulent waves – could be used to inject power down to the seabed surface and, at the same time, receive data, researchers believe. - -[][2] - -The school explains that there's still much development that needs to be performed before SLIPT is operational, but it sees potential. "Underwater optical communication provides an enormous bandwidth and is useful for reliably transmitting information over several meters," co-first author Abderrahmen Trichili said in the article. - -KAUST, located on the Red Sea coast, has been involved in this area of technical exploration for some years. It was involved in developing some early, record-breaking underwater data communications. In 2015 it ran a 4.8 gigabit per second, 16-QAM-OFDM transmission with a 450-nanometer laser. OFDM, or Orthogonal Frequency Division Multiplexing, splits single data streams into multiple channels to reduce interference. - -Interestingly, seas and oceans are becoming increasingly important to data centers. Large swaths of the world's population are found on or near coasts, rather than inland, and we're seeing a shift towards edge-style computing that positions resources closer to sources of data. There's also a need for compute cooling, which ocean water can provide. Even wave energy as a method of powering servers means sea and data are becoming intertwined. - -Microsoft launched an [undersea water-cooling data center][3] 117 feet below the water surface in 2018. Additionally, garden-hose-sized cables carry almost all global, public Internet traffic [underwater, across oceans and between continents][4]. It's not done through satellite, as many imagine. - -So, this is not a brand-new synergy. Apart from the eco-monitoring drivers, one of the likeliest and most important reasons that ocean-based computing is being explored keenly is that there isn't any rent payable or jurisdictional ownership on the high seas. - -Join the Network World communities on [Facebook][5] and [LinkedIn][6] to comment on topics that are top of mind. - --------------------------------------------------------------------------------- - -via: https://www.networkworld.com/article/3538393/how-underwater-internet-of-things-will-work.html - -作者:[Patrick Nelson][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://www.networkworld.com/author/Patrick-Nelson/ -[b]: https://github.com/lujun9972 -[1]: https://discovery.kaust.edu.sa/en/article/952/the-power-of-light-for-internet-of-underwater-things -[2]: https://www.networkworld.com/blog/itaas-and-the-corporate-storage-technology/?utm_source=IDG&utm_medium=promotions&utm_campaign=HPE22140&utm_content=sidebar (ITAAS and Corporate Storage Strategy) -[3]: https://www.networkworld.com/article/3283332/microsoft-launches-undersea-free-cooling-data-center.html -[4]: https://www.networkworld.com/article/3004465/how-vulnerable-are-the-internets-undersea-cables.html -[5]: https://www.facebook.com/NetworkWorld/ -[6]: https://www.linkedin.com/company/network-world diff --git a/sources/talk/20200421 What is a High Traffic Website.md b/sources/talk/20200421 What is a High Traffic Website.md deleted file mode 100644 index d9207af7dd..0000000000 --- a/sources/talk/20200421 What is a High Traffic Website.md +++ /dev/null @@ -1,98 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (What is a High Traffic Website?) -[#]: via: (https://theartofmachinery.com/2020/04/21/what_is_high_traffic.html) -[#]: author: (Simon Arneaud https://theartofmachinery.com) - -What is a High Traffic Website? -====== - -Terms like “high traffic” are hazardous when designing online services because salespeople, business analysts and engineers all have different perspectives about what they mean. If we’re talking about, say, a high-stakes online poker room, then “high traffic” for the business side will be very low compared to what it is for the technical side. However, all these people will be in a meeting room together making decisions, using the same words to mean different things. It’s obvious how that can lead to bad (and sometimes expensive) choices. - -A lot of my day job is talking to business stakeholders and figuring out the technical solutions they need, so this is a problem I have to deal with. So I’ve got my own purely technical way to think about traffic levels for online services. - -### Scalability vs performance - -First, let’s be clear about two concepts that come up a lot in online service design. - -For online services, performance is all about how well (usually how fast) the system can handle a single request or unit of work. Scalability is about the volume or size of work that can be handled. For online services, scalability is usually about the number of user requests that can be handled within a timeframe, while for batch jobs we typically care about the size of the dataset we can process. Sometimes we want the system capacity to grow and shrink based on demand, but sometimes we don’t care as long as we can handle the full range of workloads we expect. - -Scalability and performance often get confused because they commonly work together. For example, suppose you have some online service using a slow algorithm and you improve perfomance by replacing the algorithm with another that does the same job with less work. Primarily that’s a performance gain, but as long as the new algorithm doesn’t use more memory or something, you’ll be able to handle more requests in the same time. - -There’s a counterexample I’ve discussed before: [internal caches versus external cache servers][1]. Using an external cache server like Redis means your app has to make network calls to do cache lookups, so it has performance overhead. On the other hand, if your app is replicated across multiple machines, a shared, external cache is more effective than a per-app, in-memory cache. The external cache is more scalable. - -### Response time - -When designing systems, it’s helpful to start by thinking about latency or response time requirements, even if we have to make some up and revise them later. Adding more RAM, more caches, more machines or more disk can solve a lot of problems, but latency problems tend to be fundamental to the system design. For example, suppose you’re designing an online game, and you want latencies of under 100ms for all users. Straight away, the speed of light limit means you can’t have one central server supporting a global game, regardless of whatever algorithms or hardware you throw at the problem. - -There’s another reason it’s useful to focus on server response time in practice. If you have a simple, single-function website, such as a mortgage calculator, then the response time can be estimated based on technical things like the hardware specs and code quality. But that’s not how typical online services are built. The online service industry tends to emphasise adding more and more features for less development cost. That means [webpages tend to expand in complexity][2] using the easiest code possible, and only get optimised when they become too slow and users churn. Even the typical mortgage calculator site will end up bloated with advertising and tracking functionality. So the response time of a website in my day job depends mostly on the client’s budget and priorities, not on technical factors, regardless of whether it’s an ecommerce site or a cutting-edge data application. - -### Looking at a single worker - -Okay, so now imagine a simple web app that gets about one request an hour that takes about 5s to process (ignoring static assets because they’re not the bottleneck). That app has an obvious performance problem because many users will give up before 5s. But there’s no scaling problem because the server will practically never hit capacity limits and drop requests. Even if traffic rises, the performance problem is the bottleneck that takes priority over any hypothetical scalability problems. - -That’s a simple insight that we can take further. Lets say we target 100ms per request, and our simple web app processes requests one at a time serially (i.e., no scaling). With 86,400 seconds in a day, a naïve calculation says we can handle 86,400 / 0.1 = 864,000 requests per day before we have scaling problems. - -Of course, the real world isn’t that simple. - -First, there will be slower and faster requests, and [requests that arrive at random won’t balance themselves nicely][3]. They’ll come in clusters that fill up queues, and the backlog will cause large spikes in response time. (There’s a handy rule that says [if you want to keep response time under control, you should target about 80% usage of theoretical total capacity][4].) - -Then there’s diurnal variation. Some local websites get nearly all of their traffic during business hours, or about a third of the day. Even a very global website can easily have 2-3 times more traffic at peak than at trough because populations aren’t distributed evenly around the world (a lot of internet users live in East Asia and North/South America, but not in the huge Pacific ocean). The actual ratio depends on many factors that are hard to predict. - -But even if we can’t easily get exact capacity estimates, this simple model is the justification for splitting websites into three traffic levels. - -### The three traffic levels - -The first level is for sites that get well under 100k dynamic requests a day. Most websites are at this level, and a lot will stay that way while being totally useful and successful. They can also pose complex technical challenges, both for performance and functionality, and a lot of my work is on sites this size. But they don’t have true scalability problems (as opposed to problems that can be solved purely by improving performance). - -If a website gets bigger, it can get into the “growing pains” level, which is roughly around 100k-1M dynamic requests a day. This is where scalability problems start to appear. Often the site is at least a bit scalable (thanks to, e.g., async or multithreaded programming), but Web developers scaling a site through this level keep discovering new surprise pain points. Things that a smaller site can get away with start turning into real problems in this level. Some of the biggest challenges are actually sociotechnical, with the team that builds and manages the site needing to learn to think about it in new ways. - -The next level is after leaving the 1M dynamic requests a day boundary behind. I think of sites at this level as being high traffic. Let me stress that that’s a technical line, not a value judgment or ego statement. The world’s biggest websites are orders of magnitude bigger than that, while most of the world’s useful websites are smaller. But the line matters because you simply can’t run a site at that scale without treating it like a high traffic site. You can get away with it at low traffic levels, you can fumble through it at the growing pains level, but at high traffic levels you just have to work differently. Coincidentally, it’s around this traffic level where it makes more sense to talk about requests per second than requests per day. - -By the way, don’t focus too much on the exact traffic levels above. They’re very rough and honestly I picked them because they’re convenient round numbers that happen to be reasonable for typical websites. The real values depend on the target response time and all the other factors, of course. What I’m trying to explain is 1) that these levels exist, 2) why they exist and 3) what to expect if you’re trying to grow an online service. - -### Going to more levels - -What happens with sites that get even bigger? Once the problems at one set of bottlenecks are fixed, the site should just scale until it hits a new set of bottlenecks, either because the application has changed significantly, or just because of a very large increase in traffic. For example, once the application servers are scalable, the next scaling bottleneck could be database reads, followed by database writes. However, the basic ideas are the same, just applied to a different part of the system. - -Working on a very high-traffic site can be a lot less “exciting” than working on a plain high-traffic site, simply because most major problems need to be solved to get to very high traffic levels in the first place. - -### Scaling when you don’t have scaling problems - -Some developers try to make online services scalable long before they have any scalability problems on the horizon, usually by adding exotic databases or broker servers or something. In particular, startup founders are often especially concerned that their technical assets might not scale to meet their business ambitions. It’s understandable, but it’s a dangerous trap for a couple of reasons. - -One is that Paul Graham’s classic [Do Things That Don’t Scale][5] essay applies to your technology stack, too. You can’t beat bigger companies with scale, but your competitive advantage is that you can choose to _not_ solve the scalability problems that bigger companies are forced to with every step they take. That’s what makes smaller companies agile, and a startup that worries too much about scalability is just a big enterprise without the big to back it up. - -The other problem is that premature scalability solutions can easily backfire. If you don’t have real scalability problems to test your solutions against, it’s hard to be sure you’re correctly solving a real problem. In fact, rapidly growing services tend to change requirements rapidly, too, so the risk of a scalability “solution” turning into technical debt is high. If you keep trying to add scalability to a part of the system that’s already scalable enough, chances are the next scaling bottleneck will appear somewhere else, anyway. - -Architectures that err on the side of too simple are easier to scale in the long run than architectures that are too complex. - -To be more concrete, I personally can’t think of a low-traffic online service I’ve worked on that couldn’t have been implemented cleanly enough using a simple, monolithic web app (in whatever popular language) in front of [a boring relational database][6], maybe with a search index like Xapian or Elasticsearch. [Many major websites aren’t much different from that.][7] It’s not the only valid architecture, but it’s a tried-and-tested one. - -Having said all that, sometimes low-traffic sites need things that are sometimes sold as scalability solutions. For example, replicating an app behind a load balancer can help you deploy whenever you want without downtime. One fintech service I worked on split credit card code into its own service, making PCI DSS compliance simpler. In all these cases there’s a clear problem other than scalability that’s being solved, and that’s what avoids overengineering. - -I often wish I had a systematic way to just figure out all the technical requirements for an online service in my head. But the real world is complicated and messy, and sometimes the only practical way to be sure is to experiment. However, every piece of software starts with ideas, and this is how I think about scalability for online service ideas during the early design phase. - --------------------------------------------------------------------------------- - -via: https://theartofmachinery.com/2020/04/21/what_is_high_traffic.html - -作者:[Simon Arneaud][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://theartofmachinery.com -[b]: https://github.com/lujun9972 -[1]: https://theartofmachinery.com/2016/07/30/server_caching_architectures.html -[2]: https://mobiforge.com/research-analysis/the-web-is-doom -[3]: https://theartofmachinery.com/2020/01/27/systems_programming_probability.html -[4]: https://www.johndcook.com/blog/2009/01/30/server-utilization-joel-on-queuing/ -[5]: http://www.paulgraham.com/ds.html -[6]: https://theartofmachinery.com/2017/10/28/rdbs_considered_useful.html -[7]: https://nickcraver.com/blog/2016/02/17/stack-overflow-the-architecture-2016-edition/ diff --git a/sources/talk/20200423 Getting to know our new, virtual world.md b/sources/talk/20200423 Getting to know our new, virtual world.md deleted file mode 100644 index 70eebbbeee..0000000000 --- a/sources/talk/20200423 Getting to know our new, virtual world.md +++ /dev/null @@ -1,72 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Getting to know our new, virtual world) -[#]: via: (https://opensource.com/article/20/4/virtual-community-management) -[#]: author: (Patricia Dugan https://opensource.com/users/patricia-dugan) - -Getting to know our new, virtual world -====== -Our current forced physical separation could generate innovations that -actually bring our communities closer together. -![Women in computing and open source v5][1] - -Witnessing the ongoing global impact of COVID-19 is a profoundly affecting experience that continues to humble us all in ways we couldn't have anticipated. Technology organizations are quickly evolving within this new reality, in which all of our human interactions are virtual until further notice. - -### Virtual open source community management - -When it comes to nurturing cultures designed to promote and reward open source innovation—as well as communities' economic, technological, and physical wellbeing—I can best speak to those I help build and manage. I believe communities should be built by weaving a tapestry of demographics and ranges of expertise. They should do this in a way that facilitates rich communication and empowers those building open source software to share knowledge with each other. - -The move to virtual connection and digitalized events only makes these methods more crucial. - -I'll share an example. Recently, I was speaking with a pillar of the Traefik open source community, known as a [Traefik Ambassador][2], based in Turkey, over video conference about a potential webinar. He suggested that, instead, we expand the speaker set to include other community members. Soon, we'd invited other contributors from Poland and Switzerland. We met online, and out of that conversation, the webinar has evolved into a collaborative series with community members taking turns presenting insights and melding different types of software together. What struck me was that if we'd had this conversation just one month ago, it would have simply focused on the creation of an asset. Now, contributors are bonding over a purpose-driven creation, with greater intention around facilitating innovation and excitement. - -Based on my experience building and growing open source communities, I believe that this new era of virtual connection offers an unprecedented opportunity for innovation and growth—as long as it is managed with equal focus on the people creating it. Below are five observations on how the world of open source can positively shape the future of innovation in a virtual and seemingly uncertain world. - -### The virtual world is flat. - -Open source communities, teams, and backing companies provide an exceptional model of how to accelerate innovation. That's especially true in these extraordinary times. At its core, open source democratizes the development process, something we see replicated more widely in our new virtual ecosystems. As the opportunity for input becomes more inclusive, organizations are seeing a flattening in infrastructure, both in communications and in operations. Existing hierarchical power structures are weakening as more voices are heard, and the best ideas are given the chance to rise to the top through greater exposure. - -As social distancing makes backchannel and handshake agreements much more complicated to execute, I predict that the traditional dance required to access and take positions in leadership will be replaced by flatter, more open methods that ultimately produce fresher—and better—perspectives. Online communication has a way of laying bare the real substance of interactions and ideas, bolstering meritocracy that's central to the strength of open source. - -### The virtual world is fast. - -This "flattening" structural shift has the potential to increase the pace and quality of innovation, as virtual events and communications widen the spotlight to now shine a light on previously unseen contributors. Creative minds among engineers, developers, and others outside of traditional leadership positions will leverage their comfort with the web and virtual channels to find each other and collaborate faster. This is nothing new for those in open source, and I expect organizations still clinging to legacy approaches will find themselves investing in learning how to implement flatter, virtual communications structures, and beginning to build them into traditional operational models. This means doubling down on efficiency and being willing to let go of the ["it's always been done this way"][3] mentality. - -### The virtual world needs community. - -Developers can conserve energy attending virtual events: there's no commute, nor other distractions from the work at hand. Working remotely and connecting only via virtual mediums enables open source contributors to create, share, and use code just about as fast as their brains allow, empowering rapid code contributions, collaborations, and new solutions produced with velocity. - -While this shift may result in productivity gains, organizations must be careful of creating the impression that a team member's most important asset is their brain. When open source developers were asked what the best part of their job was, [62% claimed it was their "personal passion."][4] Recognizing individuals as unique contributors to open source communities is necessary and essential to development—both technical and human. During this period, when we're hitting the pause button on in-person interaction, remote interactions via chats, video conferences, and phone calls will enable the human moments necessary for growth and connection. Those in open source rely on the power of community, and this extraordinary time will require the continuous and earnest commitment to it. - -### The virtual world is composed of individuals. - -The potential for greater innovation and meritocracy through virtual-only channels will only be realized if communities, organizations, and individuals also pursue and achieve wellness. It's crucial for the interpersonal bonds that maintain our energy and psychological health—traditionally forged through real-life, face-to-face contact—to continue to exist as part of the way we now work. If that disappears, there's the risk that our industry and communities become purely transactional, lacking the joy and drive that carries work forward, much less great work and innovation. Developers are especially rooted in a sense of purpose, with [only 3% reporting that money and perks were the best part of their job.][4] - -Overall wellness and support to prevent burnout should already have been central considerations for modern organizations, but they are even more important now. Virtual connectivity may set us up to work fast, but that can backfire if we're not also set up to be well. - -### The virtual world needs kindness. - -I also predict that virtual-only communication will close the distance between our online avatars and ourselves as real people. The impact of "toxic" individuals, hidden behind a computer, with little to no consequence for being a "bad actor," will be reduced and less acceptable. A growing presence of new voices will set the tone, adhering to well thought out codes of conduct, making poor behavior explicitly unwelcome. As much of our connection moves online, the norms that guide our offline behavior will become increasingly important. We'll transition to a less individualistic paradigm, and open source's long history of considering what defines good citizenship will offer insight to those looking to integrate a sense of shared responsibility into organizations. - -I feel extremely grateful to be in technology, particularly in the open source world, given it's an industry built upon the promise of innovation. At least for the moment, we as an industry can serve as a lighthouse for connection in difficult times, and as a model for collaboration and intention for those not as familiar with how to be highly productive in a virtual world. For the open source community and beyond, there is a great opportunity to lean into creating as much beneficial virtual culture as we can. Through this experience, we'll all learn new ways of interacting, which will serve us well in the future. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/4/virtual-community-management - -作者:[Patricia Dugan][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/patricia-dugan -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/OSDC_women_computing_5.png?itok=YHpNs_ss (Women in computing and open source v5) -[2]: https://info.containo.us/traefik-ambassador-program -[3]: https://goleansixsigma.com/the-most-dangerous-phrase/ -[4]: https://www.linuxfoundation.org/wp-content/uploads/2019/10/osjobsreport_2018.pdf diff --git a/sources/talk/20200424 FCC boosts Wi-Fi 6 spectrum five-fold.md b/sources/talk/20200424 FCC boosts Wi-Fi 6 spectrum five-fold.md deleted file mode 100644 index 4d3545f522..0000000000 --- a/sources/talk/20200424 FCC boosts Wi-Fi 6 spectrum five-fold.md +++ /dev/null @@ -1,72 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (FCC boosts Wi-Fi 6 spectrum five-fold) -[#]: via: (https://www.networkworld.com/article/3540288/fcc-boosts-wi-fi-6-spectrum-five-fold.html) -[#]: author: (Jon Gold https://www.networkworld.com/author/Jon-Gold/) - -FCC boosts Wi-Fi 6 spectrum five-fold -====== -The Federal Communications Commission has approved a chunk of wireless spectrum called the 6GHz band for unlicensed use by Wi-Fi 6, and gear that supports it could be available by the end of the year. -[tejasp][1] [(CC0)][2] - -The Federal Communications commission has opened up a wide swath of wireless spectrum for unlicensed use by Wi-Fi devices, which will lead to Wi-Fi access points that have greatly expanded capacity. - -It’s a huge victory for the Wi-Fi industry, as the ruling means that the amount of spectrum available for Wi-Fi just about quintupled in an instant. That means big, spacious channels – and a lot more channels overall – that can handle a lot more data and a lot more connections at the same time, according to Aruba vice president of wireless strategy and standards Chuck Lukaszewski. - -[[Get regularly scheduled insights by signing up for Network World newsletters.]][3] - -“Overnight, you’re going to see an additional gigabit per second or more of potential throughput,” he said. - -That’s a major upside, certainly, even if “overnight” might be a slightly optimistic view of when [Wi-Fi 6E][4] – the trade name for the new version of Wi-Fi that will take advantage of the new spectrum – hits the market. While some of the necessary standards haven’t yet been finalized by the IEEE, the basic ability to use 6GHz frequencies is already written into the existing Wi-Fi 6 specification. - -Broadcom director of product marketing and government affairs Chris Szymanski said that the main technical hurdle to implementing Wi-Fi 6E will be new radios, but that his company is among those that has already been designing and building compatible silicon. - -“I expect that the FCC will provide guidance on how to certify devices in the next few months,” he said. “I expect product available in the US in the late fall before the holidays.” - -Enterprise uptake will likely have to wait until compatible smartphones, laptops and the like are on shelves because existing Wi-Fi 6 cliets won’t be able to take advantage of the new 6Ghz spectrum. - -**[ [Take this mobile device management course from PluralSight and learn how to secure devices in your company without degrading the user experience.][5] ]** - -New access points are likely to have three radios in them, as opposed to the usual two, noted senior vice president of Ruckus Wireless and cloud at Commscope Bart Giordano. One each for the existing 2.4GHz and 5GHz bands, and a third for 6Ghz. - -“Antennas will be very similar because these spectrums sit next to one another,” he said, “but there’s specific tunings you have to do.” - -The driving force behind the spectrum expansion is the bottomless demand for capacity caused by the increasing use of wireless just about everywhere. The FCC’s announcement cites projections from Cisco that say about 60% of worldwide data traffic will move across Wi-Fi links within the next two years. - -Incumbent licensed users of parts of the 6GHz spectrum – which are mostly businesses using microwave links for wireless backhaul and public safety services – are far less pleased by the FCC’s decision. The Utilities Technology Council is one of several groups critical of earlier proposals to open the 6GHz band to broad-based unlicensed use, saying earlier that assurances that existing users would be protected from interference are unconvincing. - -“We have and will continue to provide the FCC with technical detail demonstrating the very real interference potential from unlicensed use across all parts of the band and the need for thoroughly tested automated frequency coordination (AFC) to protect incumbent users,” the group said in a statement. “While we appreciate the FCC proposing to require AFC for the standard-power access points, these measures must also be applied to all unlicensed devices in the band to prevent interference to mission-critical utility communications systems.” - -Farpoint Group principal and Network World contributor Craig Mathias said that it’s not going to be a smooth process, but argues that the opening of 6GHz spectrum was too great an opportunity to ignore. - -“Yes, it’s a mess – spectral re-allocations always are,” he said. “[But] I don't see any issues here that can't be addressed, and more unlicensed spectrum is of course always desirable.” - -Incumbent users of the 6GHz spectrum are unlikely to see the type of interference they’re particularly worried about, he added, given the nature of the connections currently in use and the safeguards in the new rule that are designed to protect existing networks. - -“Point-to-point microwave links operate at fairly high power and use both directional antennas and error-checking protocols to ensure reliability and otherwise deal with typical radio issues beyond interference, like the various forms of fading,” said Mathias. “A nearby Wi-Fi transmitter will be operating at much lower power and use its own signal-integrity-management techniques as well. So likely no issues in the vast majority of cases, especially if history is any guide.” - -Join the Network World communities on [Facebook][6] and [LinkedIn][7] to comment on topics that are top of mind. - --------------------------------------------------------------------------------- - -via: https://www.networkworld.com/article/3540288/fcc-boosts-wi-fi-6-spectrum-five-fold.html - -作者:[Jon Gold][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://www.networkworld.com/author/Jon-Gold/ -[b]: https://github.com/lujun9972 -[1]: https://pixabay.com/en/wifi-wireless-device-wi-fi-1371030/ -[2]: https://creativecommons.org/publicdomain/zero/1.0/ -[3]: https://www.networkworld.com/newsletters/signup.html -[4]: https://www.networkworld.com/article/3238664/80211-wi-fi-standards-and-speeds-explained.html -[5]: https://pluralsight.pxf.io/c/321564/424552/7490?u=https%3A%2F%2Fwww.pluralsight.com%2Fcourses%2Fmobile-device-management-big-picture -[6]: https://www.facebook.com/NetworkWorld/ -[7]: https://www.linkedin.com/company/network-world diff --git a/sources/talk/20200424 Red Hat Enterprise Linux 8.2 Hits the stage.md b/sources/talk/20200424 Red Hat Enterprise Linux 8.2 Hits the stage.md deleted file mode 100644 index e00e88716c..0000000000 --- a/sources/talk/20200424 Red Hat Enterprise Linux 8.2 Hits the stage.md +++ /dev/null @@ -1,89 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Red Hat Enterprise Linux 8.2 Hits the stage) -[#]: via: (https://www.networkworld.com/article/3540189/red-hat-enterprise-linux-82-hits-the-stage.html) -[#]: author: (Sandra Henry-Stocker https://www.networkworld.com/author/Sandra-Henry_Stocker/) - -Red Hat Enterprise Linux 8.2 Hits the stage -====== -RHEL 8.2 has new capabilities for management of hybrid-cloud environments and container tools to help fuel cloud-native development. -Stephen Lawson/IDG - -Red Hat Enterprise Linux (RHEL) 8.2 brings new features that include expanded monitoring capabilities in Red Hat Insights for and new container tools, including containerized versions of Skopeo and Buildah. - -Red Hat says RHEL 8.2 is arriving at a time when, because of the Covid-19 pandemic, a growing percentage of IT staffers are working remotely. Their ability to support the management and monitoring of operations and their ability to detect and address problems has never been more critical, and upgrades to Red Hat Insights are designed to help. - -[[Get regularly scheduled insights by signing up for Network World newsletters.]][1] - -### Red Hat Insights - -[Red Hat Insights][2], is Red Hat’s operations and security-risk-management offering and helps detect, diagnose and remediate potential problems before they affect production systems or end users. It was included in RHEL in May 2019. - -The latest updates include: - - * Improved visibility and  security for managing large, complex environments - * Policy and patch services to help determine which product advisories apply and guidance for problem remediation - * A "drift service" to make it easier to compare baselines, shape strategies that reduce complexity, and make troubleshooting easier - - - -### Monitoring and performance updates - -RHEL 8.2 brings some performance upgrades includeing: - - * Improved resource management with Control Groups (cgroup) v2, which is designed to reserve and set limits on memory usage to help prevent processes from overconsuming memory and causing system failures or slowdowns. - * Optimizing performance-sensitive workloads via NUMA and sub-NUMA service policies. - * Performance Co-Pilot (PCP) 5.0.2 which adds collection agents for Microsoft SQL Server 2019 to gather and analyze SQL Server metrics to draw a clearer picture of database and operating-system performance. - * Red Hat subscription watch,a service for viewing and managing RHEL and Red Hat OpenShift Container Platform subscriptions. - - - -### Evolving container tools - -RHEL 8.2 includes new container tools that are supported for 24 months as part of Red Hat's Tech Preview, which provides early access to new products. The tools include Buildah for building and Skopeo for transferring container images. - -The new relase also introduces Udica, a policy tool for containerized SELinux that can make it less likely that processes will break out of containers and cause problems to other containers or the host. - -[][3] - -Red Hat Enterprise Linux 8.2 also introduces enhancements to the Red Hat Universal Base Image, including: - - * OpenJDK and .NET 3.0 for developing  certification-ready cloud-native Red Hat applications - * **Improved access to source code associated with a given image through a single command**, making it easier for Red Hat partners to meet source code requirements for open source licensing needs. - - - -### Ease of use - -Other new features are meant to make it easier to manage RHEL: - - * RHEL subscription registration as part of the installation process, making it easier to on-board new installations. - * Enabling Red Hat Insights during installation to simplify the launch of Insights for Red Hat Enterprise Linux deployments. - * Refinement and control of the Red Hat Enterprise Linux life cycle with testing for in-place upgrades, Red Hat Insights rules to help with upgrades, and the [Convert2 RHEL][4] tool that can help shift workloads from unsupported clones like CentOS to RHEL. - - - -Join the Network World communities on [Facebook][5] and [LinkedIn][6] to comment on topics that are top of mind. - --------------------------------------------------------------------------------- - -via: https://www.networkworld.com/article/3540189/red-hat-enterprise-linux-82-hits-the-stage.html - -作者:[Sandra Henry-Stocker][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://www.networkworld.com/author/Sandra-Henry_Stocker/ -[b]: https://github.com/lujun9972 -[1]: https://www.networkworld.com/newsletters/signup.html -[2]: https://www.redhat.com/en/blog/expanding-management-operational-and-security-risks-new-red-hat-insights -[3]: https://www.networkworld.com/blog/itaas-and-the-corporate-storage-technology/?utm_source=IDG&utm_medium=promotions&utm_campaign=HPE22140&utm_content=sidebar (ITAAS and Corporate Storage Strategy) -[4]: https://www.redhat.com/en/blog/convert2rhel-how-update-rhel-systems-place-subscribe-rhel -[5]: https://www.facebook.com/NetworkWorld/ -[6]: https://www.linkedin.com/company/network-world diff --git a/sources/talk/20200427 Comparing subscription, pay-per-bug, and consulting software business models.md b/sources/talk/20200427 Comparing subscription, pay-per-bug, and consulting software business models.md deleted file mode 100644 index c7d76c5590..0000000000 --- a/sources/talk/20200427 Comparing subscription, pay-per-bug, and consulting software business models.md +++ /dev/null @@ -1,81 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Comparing subscription, pay-per-bug, and consulting software business models) -[#]: via: (https://opensource.com/article/20/4/open-source-business) -[#]: author: (Jos Poortvliet https://opensource.com/users/jospoortvliet) - -Comparing subscription, pay-per-bug, and consulting software business models -====== -Learn how NextCloud achieves business revenue that is one-third -consulting and two-thirds subscription. -![A chair in a field.][1] - -At FOSS Backstage this year, I hosted a discussion on open source models and shared why I think subscriptions are a great way to support open source products. - -### Picking a business model - -The company I co-founded, Nextcloud, only offers its services to customers on a (per user) subscription model. Some customers ask us during the sales conversation why they cannot just get access to our engineers on an hourly basis as they get from third party consultants: pay for the bug fix or support case, and be done? - -When we discussed how to build our new company in 2016 during our very first "[hackweek][2]," our business model was an important conversation. The team discussed different approaches, and we decided to go for a subscription model. Such a model felt more in line with our mission and principles to [create a great product and run a trustworthy company.][3] - -Why? While hourly rates seem like an easy way to get a quick fix for a problem, getting paid for fixing issues creates an incentive to create more buggy software, which of course, was not how we want to run our business. - -Let's look a bit deeper at the choices. - -### Subscription - -As a customer, you want the most reliable software. And when (not if, when) things go wrong, you want them fixed as quickly as possible. Our company offers customers a subscription to our services. Such a subscription includes direct and unlimited access to our engineers the moment you run into a problem. These two points are very important. It means that a customer has the certainty of having the very best resources at their fingertips at the moment they need them, and as much as they need them, in a way that only the original software vendor can deliver. - -For that, they pay a fee that scales with the number of users. - -### Pay-per-bug - -What if, instead, you could pay per issue fixed? In a way, this choice is similar to insurance. Indeed, when you need cold medicine once a year, the cost of a health insurance policy with a monthly premium seems prohibitive. But when a car accident crushes your spine and your medical costs skyrocket, not having to sell your house makes up for that premium and then some. - -There is also the bigger picture: The incentives potentially created by a pay-per-bug model. It is a simple, albeit cynical calculation: If we got paid per bug we fix for customers, leaving more bugs in our product would increase our income. Now we're not saying every company offering product consulting by the hour is extorting their customers, merely that this backward incentive exists, even when most moral businesses would not give in to it. - -Conversely, now that we offer insurance, we lower our support costs by building a better product, just like art insurance providers do what they can to ensure the art kept at their customers' exhibition is secure to keep their costs low. Our support team deeply cares about how our customers use our product: a better setup and good security practices not only make happier customers; it saves them time. - -Or, in other words, it helps maximize the ROI or TEI the customer gains from deploying Nextcloud. - -That is what we'd call a win-win and a business model an open source company can be proud of. - -### Consulting - -Now I discuss this business model regularly with others, and I invariably get told: "You might be right, but most of my customers only want to pay for the bugs we fix, or for features. Consulting is our main source of income! And I have no illusions about changing that." - -Yes, that's an issue. We open source folk honestly have a sales and marketing issue. And yes, you might think that, as a marketing guy, I just see everything as a nail I can hit with my communications hammer. But really, communication is core to the issue—how you communicate your value—which, in turn, requires you to be aware of your value. - -Recently, I had some challenging discussions with users on our forums who were upset that our engineers had not fixed their issues quickly enough. These users were clearly business users, and giving free support on GitHub obviously isn't exactly a great advertisement for the need for a subscription. So some abuse was thrown our way, and I took the hit. When complaining about it all to a fellow entrepreneurial friend of mine, he remarked: "Isn't that good news? They were frustrated and angry because clearly, you have something to offer, they need it, and are annoyed that they are forced to pay you for it. A good place to be in if you want to sell something!" Right he was, of course. - -The lesson I want to share with this anecdote is: You have something to offer. Your current customers will certainly be upset if you tell them that, going forward, they can only get your services under a subscription. But the angrier they are, the more you know they _need_ you, and you should persist! - -But moving to subscription from consulting requires a great deal of discipline, including saying "no" often. We have hard, internal rules, and one of these is that sales can only sell consulting valued at up to 50% of the subscription value, and only for deals greater than $10,000. - -But it has worked. The breakdown of our business revenue is now about one-third consulting and two-thirds subscription. Engineering hours for consulting work are not the limiting factor for expanding our customer base; sales and sales engineering is. We doubled our order intake last year and plan to do the same this year. - -### Bottomline: Sustainability - -For us, a better product and more sustainable business follows from the subscription model. It also benefits software engineers, who prefer to build a better product and spend less time on debugging issues with customers. A pay-by-the-hour model, with all the time tracking and incentive to keep customers dependent, does not work for us. - -What has your experience been? Tell us in the comments. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/4/open-source-business - -作者:[Jos Poortvliet][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/jospoortvliet -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/BIZ_WorkInPublic_4618517_1110_CS_A.png?itok=RwVrWArk (A chair in a field.) -[2]: https://nextcloud.com/blog/invitation-to-our-hackweek-in-stuttgart/ -[3]: https://nextcloud.com/blog/the-nextcloud-mission-and-principles/ diff --git a/sources/talk/20200427 DevOps vs. Agile- Do they have anything in common.md b/sources/talk/20200427 DevOps vs. Agile- Do they have anything in common.md deleted file mode 100644 index a8fcf422c6..0000000000 --- a/sources/talk/20200427 DevOps vs. Agile- Do they have anything in common.md +++ /dev/null @@ -1,85 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (DevOps vs. Agile: Do they have anything in common?) -[#]: via: (https://opensource.com/article/20/4/devops-vs-agile-common) -[#]: author: (Taz Brown https://opensource.com/users/heronthecli) - -DevOps vs. Agile: Do they have anything in common? -====== -Agile and DevOps have many differences, yet they both seek to address -complexity, improve quality, and innovate around software design. -![Women in tech boardroom][1] - -The topic of DevOps vs. Agile is almost like debating iPhone vs. Android—everyone has an opinion, and emotions can become heated, especially if people disagree. - -After writing _[DevOps v. Agile: What's the difference?][2]_ and reading the comments on the article, I wanted to add some more thoughts—including how some of my thinking has changed on the topic. - -My perspective comes from where I am now but also where I have been. I used to be a systems administrator and infrastructure engineer, and now I am a senior scrum master with a major utility company in Missouri. (I actually was a scrum master before I was an admin or engineer, but I digress.) - -My team consists of six frontend software engineers and IT programmer analysts, a business analyst, two product owners, and me. Recently, we learned that management wants our team to become a [DevSecOps][3] team, so our core scrum team is working with a DevSecOps team that is helping us make the transition. No one is naive to the fact that this will not be easy, but the DevSecOps team's experience gives us confidence that we can succeed. - -Our team's manager recently hired a senior software engineer who will drive the DevSecOps goal. As a scrum master, I will continue to focus on continuous improvement. The team is fairly young, so they don't have expansive work experience, but they are smart and driven, and there is much room for greatness. In addition, our entire organization is going through an Agile transformation, so most people are new to all things Agile, including the [Agile Manifesto][4] and the [Five Scrum Values][5]. - -![Spray paint on a container][6] - -Kyle Glenn on Unsplash - -### Agile, Scrum, DevOps, and more - -There is a clear relationship between DevOps and Agile. Agile is the methodology, Scrum is the framework, and DevOps falls under the agile [umbrella][7] along with kanban, lean, large-scale Scrum, Extreme Programming, Crystal, and more. For example, our Scrum team is an Agile team that will operate as a DevSecOps team. - -Neither DevOps nor Agile is about the tools. Rather, both are about the [mindset and culture][8]. When it is done right, teams think and act differently and achieve greater results, including faster software delivery, continuous integration (CI), continuous delivery (CD), continuous improvement, working software, faster solutions, more collaboration, and fewer silos. Additional results are seen in quality testing, better automation, and improved systems, processes, and practices. - -#### Common concepts - -Some of the Agile concepts they have in common are associated with the Agile Manifesto; the most familiar of the 12 principles are the first four: - - * Individual and interactions over processes and tools - * Working software over comprehensive documentation - * Customer collaboration over contract negotiations - * Responding to change over following a plan - - - -Some of the DevOps concepts they have in common are the CI/CD pipeline, optimizing software delivery and quality, a culture of innovation, service-level objectives and indicators (SLOs and SLIs), collaboration across teams, and automation. - -#### DevOps and Agile benefits - -DevOps speeds up things between developers and operations. Furthermore, even though DevOps isn't about the tools, the fact that the dev and ops teams use the same tech stack creates a shared language and empathy between the two. Our Scrum team uses Jira to track all bugs, enhancements, and team performance. Common DevOps tools are Jenkins, AWS, SonarQube, GitHub, Splunk, and Ansible. While the tools differ from team to team, the mindset and culture should be common across all. - -DevOps also creates less division between dev and ops and a sense of understanding of what it's like to walk in each other's shoes because now they function as one. - -Agile teams continuously deliver often and fast, adapting incrementally along the way. Working in two-week sprints appears to be the sweet spot for most software- or product-delivery teams. Agile teams may utilize DevOps principles in their work (e.g., implementing a CI/CD pipeline), and dev teams that work with ops are likely to work in the same two-week increments. - -DevOps traditionally leads to continuous deployment, delivery, and integration. Teamwork is integrated; problems and failures are jointly owned by development, operations, and other entities, such as quality assurance (QA), testing, automation, etc. - -### Summing up - -I believe that Agile and DevOps breathe the same air, with many concepts and theories crossing between them. - -While I have no doubts that there will be counter opinions and even some sharply worded disagreements with my opinions, I think we would all agree that Agile and DevOps seek to address complexity, improve quality, and innovate around software design. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/4/devops-vs-agile-common - -作者:[Taz Brown][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/heronthecli -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/christina-wocintechchat-com-rg1y72ekw6o-unsplash_1.jpg?itok=MoIv8HlK (Women in tech boardroom) -[2]: https://opensource.com/article/20/2/devops-vs-agile -[3]: https://opensource.com/article/19/1/what-devsecops -[4]: https://agilemanifesto.org/ -[5]: https://www.scrumalliance.org/about-scrum/values -[6]: https://opensource.com/sites/default/files/uploads/roomtogrow_kyleglenn.jpg (Spray paint on a container) -[7]: https://opensource.com/article/20/4/kanban-devops -[8]: https://opensource.com/article/19/5/values-devops-mindset diff --git a/sources/talk/20200428 How I empower and reach millions through open source.md b/sources/talk/20200428 How I empower and reach millions through open source.md deleted file mode 100644 index a3c23dd073..0000000000 --- a/sources/talk/20200428 How I empower and reach millions through open source.md +++ /dev/null @@ -1,78 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (How I empower and reach millions through open source) -[#]: via: (https://opensource.com/article/20/4/interview-Netha-Hussain) -[#]: author: (Jay Barber https://opensource.com/users/jaybarber) - -How I empower and reach millions through open source -====== -Learn how Netha Hussain, winner of the 2020 Women in Open Source -Academic Award, shares knowledge and inspires people. -![Lightbulb][1] - -"I wanted to link to a particular Wikipedia article on my blog, but I found there wasn't one on that topic, so I wrote it myself," says Netha Hussain, 2020 [Women in Open Source Academic Award][2] winner. "That's the beauty of open source; anyone can contribute." - -![Photo by Lvova Anastasiya \(Львова Анастасия, Lvova\), CC BY-SA][3] - -Practicality drove Netha's entry into open source culture, and it has continued to be at the center of her work in the ten years since. - -She received her first computer in high school, but it did not immediately spark her passion. She says she mostly used it for games and other diversions, as many teenagers do. It wasn't until she entered medical school and realized that technology could be a powerful tool to help her achieve her goals that Netha truly found her path. Taking stock of her many contributions to [Wikimedia][4], [Mozilla][5], and [TED][6], it's fair to say that once she engaged with open source culture, she never looked back. - -### Finding ways to help - -Growing up in India, Netha was initially drawn to mathematics but soon found herself pulled in other directions. "At the time, I would have expected to continue down that path, mathematics or maybe writing, but the thing that I've always most wanted to do is help people," Netha says. "Medicine seemed to be the most direct path to providing real, tangible assistance to those around me, so I became a doctor." - -That drive to help continues to guide her now as she prepares to defend her doctoral thesis in clinical neuroscience at the University of Gothenburg in Sweden. - -"At a certain point, I decided that rather than limiting myself to what I could do through treating patients, I could also contribute in a research capacity, working to discover new, better ways to help others. I came to all of this via an unexpected route, but I love the idea of exploring and finding my own ways to help. I'm so satisfied and fulfilled by the work I'm doing now. It has been a wonderful journey." - -As she nears the completion of her degree, Netha reflects upon what she's looking forward to next. An infectious smile appears as she remarks, "I'm really excited to have more time to contribute to projects in the open source community." - -Why is she so enamored with open source? It comes back to utility. "In open source practices, I found a philosophy that closely matched my own ideals and a way of doing things that allowed me to help more people. Open source is fueled by collaboration. I've seen the things that can be accomplished by people working together, and it makes me very excited to think where it will take us in the future." - -### Reaching millions, one edit at a time - -Her first article, written to help an international audience understand her blog post, was only the first of many. Netha has now written 300 articles (200 in English and 100 in Malayalam), contributed 13,000 edits for [Wikipedia][7], added 9,000 images to [Wikimedia Commons][8], and provided 120,000 edits to [Wikidata][9]. Her commitment to bringing useful information to others can also be seen in her five years spent volunteering to translate Mozilla projects and TED talks into the Malayalam language. - -Such prolific output was born out of a simple realization. "I had shared so much on my blog but was only reaching a select audience. On Wikipedia and elsewhere, I had access to a potential audience of millions. There's a lot of power in that." - -Many of the articles Netha has written center on issues relevant to women, and that is very much by design. "I find myself writing on topics that are important to women because I feel they are an underserved community, and it is important to me that Wikipedia, as such a vital repository of information, be reflective of all users, all voices. I care deeply about the visibility of women on Wikipedia." - -Netha's commitment to women's issues led her to organize edit-a-thon initiatives and other activities with women's groups. She was also able to leverage similar strategies to assist the LGBTQ+ community in India during the campaign to legalize gay marriage. - -"In India, there are a lot of taboos around homosexuality, and I saw an opportunity to utilize my experience to help another segment of the population. Together, we were able to generate a lot of awareness, whether through raising up biographical articles on famous members of the LGBTQ+ community or shining a spotlight on anti-LGBTQ+ laws. I'm very proud of the opportunities I've had to support such efforts." - -### A path to the future - -It's clear that Netha believes strongly in empowering people, especially other women who may wish to explore open source methodologies as she has. Her advice is simple, but powerful. "Believe in yourself, and know that you have the skills and talent to do whatever you'd like to do," she finds the words easily, as if she's been waiting to be asked the question. "Follow your passion, and do what you want. There will be times of uncertainty but always move forward. Keep studying. Keep learning new things. That's how you grow, both in your field and as a person." - -Having achieved so much already, it's no surprise that Netha is enthusiastic about new challenges on the horizon. "I've put in a lot of effort to get here, but as you learn new strategies and new ways of collaborating, the work gets easier. Now, I don't consider it work at all. It's mostly fun to me." - -_Also read Jay Barber's [interview with Megan Byrd-Sanicki][10], who won the 2020 Women in Open Source Community Award._ - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/4/interview-Netha-Hussain - -作者:[Jay Barber][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/jaybarber -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/lightbulb-idea-think-yearbook-lead.png?itok=5ZpCm0Jh (Lightbulb) -[2]: https://www.redhat.com/en/about/women-in-open-source -[3]: https://opensource.com/sites/default/files/uploads/netha_headshot.png (Photo by Lvova Anastasiya (Львова Анастасия, Lvova), CC BY-SA) -[4]: https://www.wikimedia.org/ -[5]: https://www.mozilla.org/en-US/ -[6]: https://www.ted.com/ -[7]: https://www.wikipedia.org/ -[8]: https://commons.wikimedia.org/wiki/Main_Page -[9]: https://www.wikidata.org/wiki/Wikidata:Main_Page -[10]: https://opensource.com/article/20/4/interview-Megan-Byrd-Sanicki diff --git a/sources/talk/20200430 Industrial robots could -eat metal- to power themselves.md b/sources/talk/20200430 Industrial robots could -eat metal- to power themselves.md deleted file mode 100644 index 45995a9660..0000000000 --- a/sources/talk/20200430 Industrial robots could -eat metal- to power themselves.md +++ /dev/null @@ -1,67 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Industrial robots could 'eat metal' to power themselves) -[#]: via: (https://www.networkworld.com/article/3540194/industrial-robots-could-eat-metal-to-power-themselves.html) -[#]: author: (Patrick Nelson https://www.networkworld.com/author/Patrick-Nelson/) - -Industrial robots could 'eat metal' to power themselves -====== -Scavenging energy by foraging for metal could power Internet of Things electronics and robots, suggest researchers at University of Pennsylvania. -Jiraroj Praditcharoenkul / Getty Images - -A fundamental manufacturing shift is on the horizon, some say. It's where robots run all elements of our future factories. The machines will operate using brain-copying artificial intelligence and handle not only manufacturing processes, but also supply-chain logistics, planning, and other roles formerly performed by humans. - -This vision of the future anticipates an industrial workplace where Internet-connected machines will mimic humans, yet do the jobs more precisely, faster and cheaper than humans. - -And the human-copying element may not end there. Researchers at the University of Pennsylvania are suggesting that robots could end up eating like humans, too. - -Robots will "eat metal for energy," according to a [news article][1] published in Medium. The researchers' vision for a "metal-air scavenger" could solve one of the quandaries of future IoT-enabled factories. That quandary is how to power a device that moves without adding mass and weight, as one does by adding bulky batteries. - -The answer, according to the University of Pennsylvania researchers, is to try to electromechanically forage for energy from the metal surfaces that a robot or IoT device traverses, thus converting material garnered, using a chemical reaction, into power. - -"Robots and electronics [would] extract energy from large volumes of energy dense material without having to carry the material on-board," the researchers say in a paper they've published in [ACS Energy Letters][2]. - -It would be like "eating metal, breaking down its chemical bonds for energy like humans do with food." Batteries work by repeatedly breaking and creating chemical bonds. - -The research references the dichotomy between computing and power storage. Computing is well suited to miniaturization, and processers have been progressively reduced in size while performance has increased, but battery storage hasn't. You need a bigger battery for more energy. - -Even if swarming, industrial robots became the size of insects (I've [written about][3] the possibility), there's an issue powering the nano devices – the required size of the power source would defeat the object of the miniaturization. The battery alone could crush the device, and even if it didn't, the machine would need excessive amounts of energy to move, because of the battery mass. This conundrum is one of the reasons there's an emphasis in IoT development to find ways to harvest energy ambiently. - -However, with ambient power – such as is found in [solar or potentially magnetism][4], for example – power density comes into play. That's where the harvesting technology can't pull enough energy out of the environment, or it does it so slowly that it's not as power-effective as traditional batteries. - -Enter the metal-eating robot. The University of Pennsylvania researchers' form of harvesting efficiently replicates a power-dense battery. Metal is more dense than the battery chemistry. - -The group performs their foraging energy production with a hydrogel electrolyte sponge towed by the robot. It uses a cathode, dragged over the surface, to extract amperages from the metal fuel source, such as steel or aluminum. - -"Our [metal-air scavenger] has a power density that's ten times better than the best harvesters, to the point that we can compete against batteries," said James Pikul, an assistant professor in the University of Pennsylvania's Department of Mechanical Engineering and Applied Mechanics and one of the paper authors, in the Medium post. "It's using battery chemistry, but doesn't have the associated weight, because it's taking those chemicals from the environment." - -This method is also potentially better than existing lithium-ion battery chemistry, according to Pikul. - -"One day, a robot that needs to recharge its batteries will just need to find some aluminum to 'eat,'" Pikul said. - -The robot, although ultimately likely to be a better worker than the human, is a messy eater. As it oxidizes the metal it passes over, it leaves a "microscopic layer of rust in its wake," according to the article. - -Join the Network World communities on [Facebook][5] and [LinkedIn][6] to comment on topics that are top of mind. - --------------------------------------------------------------------------------- - -via: https://www.networkworld.com/article/3540194/industrial-robots-could-eat-metal-to-power-themselves.html - -作者:[Patrick Nelson][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://www.networkworld.com/author/Patrick-Nelson/ -[b]: https://github.com/lujun9972 -[1]: https://medium.com/penn-engineering/penn-engineerings-new-scavenger-technology-allows-robots-to-eat-metal-for-energy-bd12f3b83893 -[2]: https://pubs.acs.org/doi/10.1021/acsenergylett.9b02661 -[3]: https://www.networkworld.com/article/3429200/self-organizing-micro-robots-may-soon-swarm-the-industrial-iot.html -[4]: https://www.networkworld.com/article/3536697/harvesting-ambient-energy-will-power-iot-scientists-say.html -[5]: https://www.facebook.com/NetworkWorld/ -[6]: https://www.linkedin.com/company/network-world diff --git a/sources/talk/20200501 Red Hat Summit 2020 virtual experience.md b/sources/talk/20200501 Red Hat Summit 2020 virtual experience.md deleted file mode 100644 index 334c52c1f9..0000000000 --- a/sources/talk/20200501 Red Hat Summit 2020 virtual experience.md +++ /dev/null @@ -1,64 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Red Hat Summit 2020 virtual experience) -[#]: via: (https://www.networkworld.com/article/3541289/red-hat-summit-2020-virtual-experience.html) -[#]: author: (Sandra Henry-Stocker https://www.networkworld.com/author/Sandra-Henry_Stocker/) - -Red Hat Summit 2020 virtual experience -====== - -[Virginiambe][1] [(CC BY-SA 3.0)][2] - -In the last couple days, Red Hat was able to demonstrate that an online technical conference can succeed. The Summit, normally held in Boston or San Francisco, was held online thanks to the Covid-19 pandemic still gripping the world. - -The fact that 80,000 people attended the online event warrants a huge applause. By comparison, last year’s in-person conference broke the record with only 8,900 attendees. - -[[Get regularly scheduled insights by signing up for Network World newsletters.]][3] - -### **Being “there”** - -The experience of attending the conference was in many ways what you would expect when attending a large conference in person. There were keynotes, general sessions and breakout sessions. There were many opportunities to ask questions. And it was often difficult but necessary to choose between parallel sessions. I attended both days and was very impressed. - -I also enjoyed some nostalgia about how we’ve all arrived at the places we are today with respect to Linux. It was clear that many attendees were overwhelmed by the progress that has been made just since last year. Linux, and [RHEL][4] in particular, is becoming more innovative, more clever in the ways that it can detect and respond to problems and yet in some important ways easier to manage because of the way the tools have evolved. - -Announcements at the conference included Red Hat OpenShift 4.4, OpenShift virtualization and Red Hat Advanced Container Management for Kubernetes. - -What was novel about attending a technical conference online was that we didn’t have to leave our home or office and that we could review sessions that we missed by selecting them later from the session layout pages. In fact, the sessions are still online and may well be for the coming year. If you didn’t participate in Red Hat Summit 2020, you can still sign up and you can still watch the sessions at your convenience. Just go to the [summit site][5]. And, did I mention, that it's free? - -### Catching up - -Once you’re signed up, you can click on the Watch and Learn at the top of the page and choose General Sessions or Sessions and Labs. The presentations will now all be labeled On Demand though they once displayed upcoming time slots. The individuals presenting information are excellent and the material is exciting. Even if you’re not working with Red Hat Enterprise Linux, you will learn a lot about Linux in general and how open source has evolved over the decades and is still evolving in important and critical ways. - -Topics covered at the conference include OpenShift, open hybrid cloud, future technologies, robotics and automation, advances on the edge and the power of open source. Red Hat Summit also includes joint sessions with both Red Hat and technology collaborators such as Ford, Verizon, Intel, Microsoft and Credit Suisse. - -### What’s next? - -Watching the conference online at a time when I can't leave my home was informative, but also encouraging and comforting. Linux has been an important part of my life for decades. It felt good to be connected to the larger community and to sense the currents of progress through my desktop system. - -While there’s no way to know at this point whether future Red Hat Summits or other Linux conferences will be held or made available online, the fact that Red Hat Summit 2020 was available online when so many of us are still huddled up at home wondering when our world will reopen was a testament not just to great technology but to the deep-seated conviction that it is critical that we work together and that open source can make that happen in ways that nothing else can. - -Join the Network World communities on [Facebook][6] and [LinkedIn][7] to comment on topics that are top of mind. - --------------------------------------------------------------------------------- - -via: https://www.networkworld.com/article/3541289/red-hat-summit-2020-virtual-experience.html - -作者:[Sandra Henry-Stocker][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://www.networkworld.com/author/Sandra-Henry_Stocker/ -[b]: https://github.com/lujun9972 -[1]: https://commons.wikimedia.org/wiki/File:Red_hat_with_bow2.JPG -[2]: https://creativecommons.org/licenses/by-sa/3.0/legalcode -[3]: https://www.networkworld.com/newsletters/signup.html -[4]: https://www.networkworld.com/article/3540189/red-hat-enterprise-linux-82-hits-the-stage.html -[5]: https://www.redhat.com/summit -[6]: https://www.facebook.com/NetworkWorld/ -[7]: https://www.linkedin.com/company/network-world diff --git a/sources/talk/20200502 The real impact of canceling PyCon due to COVID-19.md b/sources/talk/20200502 The real impact of canceling PyCon due to COVID-19.md deleted file mode 100644 index aebbbf28c4..0000000000 --- a/sources/talk/20200502 The real impact of canceling PyCon due to COVID-19.md +++ /dev/null @@ -1,129 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (The real impact of canceling PyCon due to COVID-19) -[#]: via: (https://opensource.com/article/20/5/pycon-covid-19) -[#]: author: (Matthew Broberg https://opensource.com/users/mbbroberg) - -The real impact of canceling PyCon due to COVID-19 -====== -An interview with Ewa Jodlowska on how the Python Software Foundation is -responding to the cancelation of in-person events. -![A dollar sign in a network][1] - -The Python Software Foundation (PSF) had to [cancel its popular PyCon US][2] event in response to COVID-19. I interviewed [Ewa Jodlowska][3], Executive Director of the PSF, to talk about the experience and see what we all can learn, and how we can be supportive of the non-profit that supports one of my favorite programming languages. - -### The impact on PSF employees - -I asked Jodlowska "how have you had to adjust your work in light of COVID-19?" - -In her response, the day-to-day didn't sound like much of a change. PSF staff "have always worked remotely." The organization practices a [fully remote work][4] culture and doesn’t have an office. The small staff of seven employees is well versed in collaborating outside of an office. - -Familiarity aside, the emotional impact of needing to cancel an event they put a year’s worth of planning into hurt. - -> **"We all believe in what we do. Which is particularly why we’re such a great small team. So it really impacted us emotionally and mentally. And it continues to."** - -We spoke about how the team is reliving what the days would have looked like if PyCon wasn't interrupted by COVID-19–keynotes would start _now_, the sponsor booths would be in full motion right _now_–and just how emotionally taxing it all was. Throughout the discussion, Jodlowska always came back to recognizing the staff for their resiliency and energy to pivot the event online. - -### The cascading impact of event cancellation - -Jodlowska has been incredibly transparent about the experience. In her March 31st [article on the financial outcome][5], she outlines it clearly: the Python Software Foundation would take a hit from the event cancelation.  - -Jodlowska notes that part of the challenge is that PyCon accounts for too much of the organization’s financial health. About 63% of the 2020 revenue was projected to come from the show. While that number is down from the [2017 estimate of 80%][6], it’s still a concern when in-person events will remain limited to keep attendees safe during the COVID-19 outbreak. - -> **"We don’t want to rely on one event**–**or events in general**–**to operate and provide community support."** - -The PSF board of directors is hard at work to look into the diversification of funding. In the meantime, PyCon remains essential to sustainability running the organization. - -### Community support makes all the difference - -It's at this point that Jodlowska again recognizes the incredible work of the PSF staff. They quickly pivoted the vision of the event, and the community of attendees, sponsors, and speakers were all supportive of the move. - -> **"[We] have been brought to tears many times by the generosity of our sponsors and our individual donors."** - -Jodlowska noted that the generosity of so many resulted in reducing the financial impact on the PSF. An incredible amount of Individual attendees are donating their registration costs to the PSF. They are also showing up across social media sites to participate in their own distributed virtual experience of PyCon.  - -Another important part of the community, the corporate sponsors of the show, are also showing up to support the non-profit. Many sponsors had already canceled physical presence at the show before the event was officially moved online. Some of them were kind enough, as Jodlowska noted, to donate the cost of sponsorship to the PSF. In a huge turn of events, the list of sponsors **grew** as the online event came together. - -> **[M]any sponsors have opted into participating in PyCon 2020 online. Because of this we have decreased the amount needed from our reserve by 77%! The PSF will now only need $141,713 from its financial reserve to get through 2020.** - -For more on the data side, see Jodlowska’s article _[Thank you to donors & sponsors][7]_. - -Support in all its forms led to the conference feeling like it is well on its way. Some sponsors are even moving to a virtual booth experience. - -> Since our sponsors can’t be with you in person, we’ve created a place to provide their content online - . [#PyCon2020][8] Gold Sponsor Weekly Python Exercise shared this video to introduce you to their offerings: . -> -> — PyCon US (@pycon) [April 18, 2020][9] - -Maybe most impressively, many speakers and tutorial instructors made the effort of recording their sessions. That’s helped PyCon to [gradually unfold online][10] with incredible educational content. The audience is still able to interact as well: YouTube comments are open for moderation so speakers can interact with their audience. - -Lastly, there remains an army of volunteers who shifted their in-person plans online and continue to help in any way possible. - -### Some of the surprising positives from this difficult change - -While it is without a doubt a challenging time for the organization, Jodlowska noted a number of positives that are unfolding due to this move to virtual. - -To start, the staff of the PSF “have never been closer,” as they bond over the experience and spend more time getting to know each other through weekly video calls and baking competitions. - -Jodlowska was inspired to get involved in another open source effort, [FOSS responders][11], who are helping organizations respond to the cancelation of events due to COVID-19. (If you’ve been affected as well, they are there to help.) - -The generosity mentioned above is a silver lining to the experience and encouraging to the hardworking team that uplifts the popular Python programming language. - -There is also a broader impact on participation in PyCon. While the final numbers are not in yet, an international audience has access to all of PyCon as it unfolds, which gives the entire world a chance to be part of an excellent event [I got to attend][12] last year. On the development side, Jodlowska mentioned that the [core-dev team][13] that maintains Python, who would normally meet in person, shifted to a virtual meeting. As a result of that shift, some participants got to attend that otherwise would not have had the opportunity to join in person. - -### How you can help the Python Software Foundation - -I reached out to Jodlowska because I am impressed with and supportive of their mission to support the Python community. If you want to support them as well, you have options: - - * Become a [free or supporting member][14] of the PSF to get involved in our future. - * [Sign up for the PSF’s free newsletter][15] to stay up to date. - * [Donate][16] directly to the PSF (and thank you to those that already have). - * Ask your employer to [sponsor the PSF][17]. - * Ask your employer if they match donations to 501(c)(3) non-profits, and ask for your donations to the PSF to be matched. - - - -Last but not least, participate in PyCon over the next few weeks. You can learn from all kinds of smart people on a range of topics like [Matt Harrison][18]’s [Hands-on Python for Programmers][19] that guides attendees through analyzing COVID-19 data to [Katie McLaughlin][20]’s thoughtful talk on [What is deployment, anyway?][21] - -Be sure to [review the full][10] list and engage with the amazing lineup of speakers. - -* * * - -_Are you part of a non-profit looking to connect with your open source community at this time of social distancing? Let me know at matt @ opensource.com._ - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/5/pycon-covid-19 - -作者:[Matthew Broberg][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/mbbroberg -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/osdc_whitehurst_money.png?itok=ls-SOzM0 (A dollar sign in a network) -[2]: https://pycon.blogspot.com/2020/03/pycon-us-2020-in-pittsburgh.html -[3]: https://www.python.org/psf/records/staff/ -[4]: https://opensource.com/tags/wfh -[5]: http://pyfound.blogspot.com/2020/03/psfs-projected-2020-financial-outcome.html -[6]: https://www.youtube.com/watch?v=79AIzbjLzdk -[7]: http://pyfound.blogspot.com/2020/04/thank-you-to-donors-sponsors.html -[8]: https://twitter.com/hashtag/PyCon2020?src=hash&ref_src=twsrc%5Etfw -[9]: https://twitter.com/pycon/status/1251563142641000455?ref_src=twsrc%5Etfw -[10]: https://us.pycon.org/2020/online/ -[11]: https://fossresponders.com/ -[12]: https://opensource.com/article/19/5/jupyterlab-python-developers-magic -[13]: https://devguide.python.org/coredev/ -[14]: https://www.python.org/psf/membership/ -[15]: https://www.python.org/psf/newsletter/ -[16]: https://www.python.org/psf/donations/ -[17]: https://www.python.org/psf/sponsorship/ -[18]: https://us.pycon.org/2020/speaker/profile/454/ -[19]: https://youtu.be/fuJcSNUMrW0 -[20]: https://opensource.com/users/glasnt -[21]: https://youtu.be/8vstov3Y7uE diff --git a/sources/talk/20200505 11 DevOps lessons from My Little Pony.md b/sources/talk/20200505 11 DevOps lessons from My Little Pony.md deleted file mode 100644 index f550f871a1..0000000000 --- a/sources/talk/20200505 11 DevOps lessons from My Little Pony.md +++ /dev/null @@ -1,96 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (11 DevOps lessons from My Little Pony) -[#]: via: (https://opensource.com/article/20/5/devops-lessons) -[#]: author: (Moshe Zadka https://opensource.com/users/moshez) - -11 DevOps lessons from My Little Pony -====== -What you never thought you could learn about DevOps for Twilight Sparkle -and her friends. -![My Little Pony][1] - -In 2010, the My Little Pony franchise was rebooted with the animated show _My Little Pony: Friendship is Magic_. The combination of accessibility to children with the sophisticated themes the show tackled garnered a following that cut across ages. I was swept up in the wave and discovered there is a lot to learn about DevOps from the show. - -### Discovering technical debt - -The show begins with Twilight Sparkle reading obscure documentation, only to realize that Equestria, where the show is set, is due to suffer a calamity. Though someone named Nightmare Moon has been imprisoned for a thousand years, there is a prophecy she will return. - -#### Lesson 1: Technical debt matters. - -Nightmare Moon is a perfect stand-in for technical debt. Document it. Pay attention to the signs of risk no matter how infrequently they occur. Have a plan to resolve it. - -Twilight Sparkle goes to her manager with the news, only to be told that it is not a current priority. She is sent to Ponyville to prepare for the coming celebration, instead. - -#### Lesson 2: Communication with management is key. - -Twilight Sparkle communicated her priority (the risk of technical debt) but did not convince her management that it was more important than the celebration (of the next release or a new customer). - -We all need to make clear what the business case is for resolving critical issues. It is also not straightforward to explain technical debt in business terms. If management does not agree on the severity, find new ways to communicate the risk, and team up with others who speak that language. - -### When technical debt becomes an outage - -As the prophecy has foreseen, Nightmare Moon returns and declares eternal night. (In this DevOps story, this marks the beginning of a catastrophic outage.) Twilight quickly understands that she cannot resolve the issue by herself, and she recruits the ponies who will become, with her, the "Mane Six." They each stand for a different element of harmony—Applejack stands for Honesty, Fluttershy for Kindness, Pinkie Pie for Laughter, Rarity for Generosity, Rainbow Dash for Loyalty, and Twilight Sparkle herself for Magic. This team-building is full of lessons: - -#### Lesson 3: Few are the issues that can be resolved by one person. - -When facing an outage, reach out to other people with complementary skills who can help you. It is best if they are different than you: different backgrounds leads to differing perspectives, and that can lead to better problem-solving. - -#### Lesson 4: When resolving an outage, honest communication is key. - -Throughout the struggle against the eternal night, the Mane Six have to speak openly and honestly about what's not working. Their [blameless communication][2] is part of problem-solving. - -#### Lesson 5: When resolving an outage, kindness to yourself and to others is crucial. - -Though tempers flare hot in the land of Equestria, we all benefit from coming back to working together. - -#### Lesson 6: Laughter is important. - -Even when everything comes crashing down, remember to take a break, drink a glass of water, and take a deep breath. Stressing out does not help anything. - -#### Lesson 7: Be generous. - -Even if you are not on-call right now, if your help is needed to resolve a problem, help out as you hope your colleagues will do for you. - -#### Lesson 8: Be loyal. - -An outage is not a time to settle rivalries between teams. Focus on how to collaborate and resolve the outage as a team. - -#### Lesson 9: Though people skills are important, you have to understand the technology on a deep level. - -Keep your skills sharp. Expertise is not only the ability to learn; it is knowing when that information is needed. Part of being an expert is practice. - -### Growing into a culture of continual improvement - -After the issue is resolved, Princess Celestia realizes that the Mane Six are crucial to the long-term survival of Equestria, and tells Twilight Sparkle to stay in Ponyville and keep researching the magic of friendship. - -#### Lesson 10: After an outage is resolved, conduct a review, take concrete lessons, and act on them. - -I could go on, episode by episode, detailing lessons relevant for DevOps, but I will wrap up with one of my favorite ones. In the "Winter Wrap-Up" episode, all the ponies in Ponyville help in preparing for the spring. As per tradition, they do not use magic, leaving Twilight Sparkle to wonder how she can contribute. Eventually, she realizes that she can help by making a checklist to make sure everything is done in the right order. - -#### Lesson 11: When automation is impossible or inadvisable, write a solid checklist, and follow it. Do not depend on your memory. - -Twilight Sparkle and the Mane Six overcome great obstacles as a team, and now have a system to improve as a team. - -### A story of DevOps - -This story reflects how many organizations slowly adopt DevOps. The transition from recognizing a fear of technical debt toward addressing it is not simple. With courageous leadership, teamwork, and a willingness to improve, all organizations can come out on the other side with a similar story to Twilight Sparkle and her friends. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/5/devops-lessons - -作者:[Moshe Zadka][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/moshez -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/my-little-pony.jpg?itok=X-rwAGuE (My Little Pony) -[2]: https://opensource.com/article/19/4/psychology-behind-blameless-retrospective diff --git a/sources/talk/20200506 IBM rolls Red Hat into edge, AI, hybrid-cloud expansion.md b/sources/talk/20200506 IBM rolls Red Hat into edge, AI, hybrid-cloud expansion.md deleted file mode 100644 index ef7d152e55..0000000000 --- a/sources/talk/20200506 IBM rolls Red Hat into edge, AI, hybrid-cloud expansion.md +++ /dev/null @@ -1,78 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (IBM rolls Red Hat into edge, AI, hybrid-cloud expansion) -[#]: via: (https://www.networkworld.com/article/3542409/ibm-rolls-red-hat-into-edge-ai-hybrid-cloud-expansion.html) -[#]: author: (Michael Cooney https://www.networkworld.com/author/Michael-Cooney/) - -IBM rolls Red Hat into edge, AI, hybrid-cloud expansion -====== -Every company will be an AI company new IBM CEO Krishna tells Think! virtual gathering -Getty - -Deeply assimilating its Red Hat technology, IBM this week rolled out a set of new platforms and services designed to help customers manage edge-based application workloads and exploit artificial intelligence for infrastructure resiliency. - -The announcements came at IBM’s virtualized Think! 2020 event that also featured the first Big Blue keynote by [the company's new CEO Arvind Krishna][1], during which he told the online audience about challenges of COVID-19: "History will look back on this as the moment when the digital transformation of business and society suddenly accelerated,” but also that [hybrid cloud and AI][2] are the two dominant forces driving digital transformation. - -[Now see how AI can boost data-center availability and efficiency][3] - -“More than 20 years ago, experts predicted every company would become an internet company. I am predicting today that every company will become an AI company, not because they can, but because they must,” he said. - -With that idea in mind the company rolled out [IBM Watson AIOps][4], an application that uses AI to automate how enterprises detect, diagnose and respond to IT anomalies in real time. Watson AIOps works by grouping log anomalies and alerts based on spatial and temporal reasoning as well as similarity to past situations, IBM said. It uses IBM’s natural language processing technology to understand the content in trouble tickets to identify and extract resolution actions automatically. - -Then it provides a pointer to where the problem is and identifies other services that might be affected.  “It does this by showing details of the problem based on data from existing tools in the environment, all in the context of the application topology, distilling multiple signals into a succinct report” and eliminating the need for multiple dashboards, IBM stated. - -AI can automate tasks like shifting traffic from one router to another, freeing up space on a drive, or restarting an application. AI systems can also be trained to self-correct, IBM stated. - -“The problem is that many businesses are consumed with fixing problems after they occur, instead of preventing them before they happen. Watson AIOps relies on AI to solve and automate how enterprises self-detect, diagnose and respond to anomalies in real time,” Krishna said. - -AIOps is built on the latest release of Red Hat OpenShift, supports Slack and Box, and can be integrated with IT-monitoring packages from Mattermost and ServiceNow, IBM stated.  - -The Kubernetes-based OpenShift Container Platform lets enterprise customers deploy and manage containers on their infrastructure of choice, be it private or public clouds, including AWS, Microsoft Azure, Google Cloud Platform, Alibaba and IBM Cloud.  It also integrates with IBM prepackaged Cloud Paks, which include a secured Kubernetes container and containerized IBM middleware designed to let customers quickly spin-up enterprise-ready containers. - -OpenShift is also the underlying package for a new version of its [edge network][5] management application called IBM Edge Application Manager. Based on the open source project [Open Horizon][6], the Edge Application Manager can use AI and analytics to help deploy and manage up to 10,000 edge nodes simultaneously by a single administrator. With the platform customers can remotely add new capabilities to a single-purpose device or automatically direct a device to use a variety of cloud-based resources depending on what resources it needs.   - -Cisco said it was working with the IBM Edge Application Manager to deploy apps and analytics models that run on a broad range of Cisco products, such as servers, its industrial portfolio of gateways, routers, switches, SD-WAN, and wireless-connectivity offerings for edge computing.  - -“As an example, IBM Edge Application Manager leverages [Cisco HyperFlex Edge][7] and Cisco IC3000 Industrial Compute Gateway servers. The HyperFlex Edge and IC3K platforms are specifically designed to support a number of edge use cases, such as optimizing traffic management, increasing manufacturing productivity, and increasing the safety of oil and gas pipelines,” Cisco [stated][8]. - -In addition, Cisco said it has used the capabilities in IBM Edge Application Manager to build an “Edge in a Box proposal,” where customers can deploy remote edge applications that run entirely disconnected from public or private clouds but are also synchronized and managed remotely in controlled connectivity windows. For instance, client edge locations may need to operate in disconnected mode but have the ability to synch up for automated application updates and data exchanges, Cisco stated. - -Other edge-related announcements include: - - * IBM [Edge Ecosystem][9], a group of industry players who will target open technology developments to let customers move data and applications between private data centers, hybrid multicloud environments and the edge. The group includes Cisco, Juniper, Samsung and NVIDIA among others. IBM said a Telco Network Cloud Ecosystem will serve a similar function for their network cloud platforms. - * A preview of an upcoming service, called IBM Cloud Satellite. This will extend IBM’s public-cloud service to give customers the ability to use IBM Cloud anywhere – on-premises, in data centers or at the edge – delivered as a service that can be managed from a single pane of glass controlled through the public cloud. It lets customers run applications where it makes sense while utilizing cloud security and ops benefits, IBM stated. Satellite runs on Red Hat OpenShift. - * Telco Network Cloud Manager – a telco/service provider offering that runs  on Red Hat OpenShift to deliver intelligent automation capabilities to orchestrate virtual and container network functions in minutes. Service providers will have the ability to manage workloads on both Red Hat OpenShift and Red Hat OpenStack platforms, which will be critical as telcos increasingly look to modernize their networks for greater agility and efficiency, and to provide new services as 5G adoption expands, IBM stated. - * New capabilities for some of its Cloud Paks including extending the Cloud Pak for Data to include the ability to better automate planning, budgeting and forecasting in [hybrid-cloud][10] environments. IBM upgraded tools for business routing and data capture to the Cloud Pak for Automation as well. - - - -Join the Network World communities on [Facebook][11] and [LinkedIn][12] to comment on topics that are top of mind. - --------------------------------------------------------------------------------- - -via: https://www.networkworld.com/article/3542409/ibm-rolls-red-hat-into-edge-ai-hybrid-cloud-expansion.html - -作者:[Michael Cooney][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://www.networkworld.com/author/Michael-Cooney/ -[b]: https://github.com/lujun9972 -[1]: https://www.networkworld.com/article/3536654/ibm-taps-new-leaders-for-hybrid-cloud-battles-ahead.html -[2]: https://www.infoworld.com/article/3541825/ibms-new-ceo-lays-out-his-roadmap.html -[3]: https://www.networkworld.com/article/3274654/ai-boosts-data-center-availability-efficiency.html -[4]: https://www.ibm.com/watson/assets/duo/pdf/WDDE814_IBM_Watson_AIOps_Web.pdf -[5]: https://www.networkworld.com/article/3224893/what-is-edge-computing-and-how-it-s-changing-the-network.html -[6]: https://developer.ibm.com/blogs/open-horizon-joins-linux-foundation-grow-open-edge-computing-platform/ -[7]: https://www.cisco.com/c/en/us/products/hyperconverged-infrastructure/index.html?dtid=oblgzzz001087 -[8]: https://blogs.cisco.com/partner/cisco-and-ibm-teaming-at-the-edge -[9]: https://www.ibm.com/blogs/business-partners/join-the-edge-ecosystem/ -[10]: https://www.networkworld.com/article/3268448/what-is-hybrid-cloud-really-and-whats-the-best-strategy.html -[11]: https://www.facebook.com/NetworkWorld/ -[12]: https://www.linkedin.com/company/network-world diff --git a/sources/talk/20200514 Ethernet Alliance study finds Power over Ethernet issues.md b/sources/talk/20200514 Ethernet Alliance study finds Power over Ethernet issues.md deleted file mode 100644 index 983c11dac6..0000000000 --- a/sources/talk/20200514 Ethernet Alliance study finds Power over Ethernet issues.md +++ /dev/null @@ -1,67 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Ethernet Alliance study finds Power over Ethernet issues) -[#]: via: (https://www.networkworld.com/article/3543258/ethernet-alliance-study-finds-power-over-ethernet-issues.html) -[#]: author: (Michael Cooney https://www.networkworld.com/author/Michael-Cooney/) - -Ethernet Alliance study finds Power over Ethernet issues -====== -Reliability, connection issues, failure to deliver power traced to interoperability issues with Power over Ethernet. -Martyn Williams/IDGNS - -Four out five users experience challenges with power over Ethernet (PoE) deployments, according to a new survey of nearly 800 Ethernet designers, manufacturers, resellers, system integrators, network operators and others. - -Conducted by the Ethernet Alliance in January, the study  found a number of key PoE insights, including: - - * Four out of five users experienced issues, including support, reliability, or connection challenges. - * The top three PoE installations are cameras and phones, as well as computing and storage devices; - * Of customers planning to implement PoE 63% said they would need 30w; 47% would need between 30-60w and 27% need greater than 60w. - - - -**[ Now see [7 free network tools you must have][1]. ]** - -With the global market projected to grow to $2 billion by 2025, PoE remains a wellspring of lucrative opportunities for designers, systems integrators, and solutions providers, David Tremblay, chair of the alliance's PoE Subcommittee, and system architect for Aruba, said in a statement. “Despite this good news, there are significant challenges that could threaten PoE’s growing adoption.” - -According to the survey those chief PoE challenges include, vendor support, unreliable power or operation, long repair times, and first-time connection issues. - -The Alliance reported that while 78% of respondents experienced difficulties with PoE deployments, 72% expect improvement with products certified through the Ethernet Alliance’s [PoE Certification Program][2]. The study found 84% said they expect certified PoE devices would be more likely to work the first time, and 85% expect those devices to be more reliable. - -“Lacking a registered trademark, the use of the term ‘PoE’ is not formally regulated, allowing any vendor to freely describe products and solutions as PoE-enabled. Additionally, terminologies such as ‘PoE+’, as well as non-standard PoE implementations are causing confusion with device interoperability among technicians, designers, and end users,” the Alliance stated. - -[Experts say][3] the single greatest challenge for PoE  is assuring interoperability.  Multivendor interoperability is Ethernet’s hallmark and it's an important consideration for consumers who want to know the gear will just work, while industry players need a way to find new partnership opportunities with companies offering certified equipment, the Dell’Oro Group said. - -“With the diversity of application, come interoperability problems which dictate the need for testing and certification,” said Sameh Boujelbene, Senior Research Director for Ethernet Switch market research at Dell’Oro. - -Certified Ethernet Alliance products range from component level Ethernet evaluation boards, to power-sourcing equipment, enterprise switches, and adapters. - -Ultimately the Ethernet Alliance’s Power over Ethernet (PoE) Certification Program is the place customers should look to enable faster PoE installations with zero interoperability issues, Tremblay said. - -A number of key Ethernet vendors including Cisco, Hewlett Packard Enterprise, Huawei, Analog Devices, Texas Instruments, Microsemi and others are part of the certification program. - -Details about certified products are available via the [program’s public registry][4]. - -Join the Network World communities on [Facebook][5] and [LinkedIn][6] to comment on topics that are top of mind. - --------------------------------------------------------------------------------- - -via: https://www.networkworld.com/article/3543258/ethernet-alliance-study-finds-power-over-ethernet-issues.html - -作者:[Michael Cooney][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://www.networkworld.com/author/Michael-Cooney/ -[b]: https://github.com/lujun9972 -[1]: https://www.networkworld.com/article/2825879/7-free-open-source-network-monitoring-tools.html -[2]: https://nam05.safelinks.protection.outlook.com/?url=https%3A%2F%2Fbit.ly%2FEA_PoECertification&data=02%7C01%7C%7Ca67fc55074c748affa8408d7f74fc98e%7C3aedb78fc8e04326888a74230d1978ff%7C0%7C0%7C637249794373724526&sdata=2QDd6oO2Yu6EiCj6m7i%2BtbVJD1wHxmNwtDr2oMe9TgQ%3D&reserved=0 -[3]: https://www.networkworld.com/article/2328615/the-power-over-ethernet.html -[4]: https://ea-poe-cert.iol.unh.edu/?utm_source=General%20Distribution&utm_medium=Press%20Release&utm_campaign=October%20PoE%20Certification%20Press%20Release -[5]: https://www.facebook.com/NetworkWorld/ -[6]: https://www.linkedin.com/company/network-world diff --git a/sources/talk/20200525 In Free Software, the Community is the Most Important Ingredient- Jerry Bezencon of Linux Lite -Interview.md b/sources/talk/20200525 In Free Software, the Community is the Most Important Ingredient- Jerry Bezencon of Linux Lite -Interview.md deleted file mode 100644 index b34f3508de..0000000000 --- a/sources/talk/20200525 In Free Software, the Community is the Most Important Ingredient- Jerry Bezencon of Linux Lite -Interview.md +++ /dev/null @@ -1,95 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (In Free Software, the Community is the Most Important Ingredient: Jerry Bezencon of Linux Lite [Interview]) -[#]: via: (https://itsfoss.com/linux-lite-interview/) -[#]: author: (Abhishek Prakash https://itsfoss.com/author/abhishek/) - -In Free Software, the Community is the Most Important Ingredient: Jerry Bezencon of Linux Lite [Interview] -====== - -You are probably aware of [Linux Lite][1]. It is a [lightweight Linux distribution][2] based on Ubuntu. If you have an older system with 1 GB of RAM, Linux Lite becomes an excellent choice for you. - -We have covered Linux Lite releases several times on It’s FOSS and if you are a regular reader, you would have come across it. - -![][3] - -We talked to Jerry Bezencon, the creator of Linux Lite project, to know some background details on this project. - -### Interview with Jerry Bezencon of Linux Lite - -Jerry is based in Auckland, New Zealand, and he devotes a good deal of time and effort on Linux Lite project. Jerry shares his vision of the project in this interview. - -_**Tell us about the origins of Linux Lite. When did you create it first and what made you create it in the first place?**_ - -Linux Lite was started in 2012 for 3 important reasons. One, I wanted to dispel myths that a Linux based operating system was hard to use. Two, at that time, there was a shortage of simple, intuitive desktop experiences on Linux that offered long-term support. Three, I had used Linux for over 10 years before starting Linux Lite. - -I felt I needed to give back to a community that had given so much to me. A community that taught me that by sharing code and knowledge, one could have a dramatically positive impact over peoples computing experiences. - -_**How is Linux Lite different from so many other Ubuntu-based distributions?**_ - -Our approach to problem solving and our support. The first sits within the system itself. Lite Tweaks is a good example of this. We try to think of all the things that could possibly go wrong with a computer system, then write applications that fix those problems as easily as possible, should they occur. There is a lot of foresight in the team. - -The second is our approach to support. This mainly comes in 2 forms. Our massive built-in and online Help Manual and [our large forum community][4] full of some of the nicest people I’ve ever dealt with in the free software and open source community. - -_**How do you and your team work on developing Linux Lite?**_ - -There are 24 hours in a day. With 6 – 8 hours for sleep and another 6 – 8 hours for my other job, that’s more than enough time to put towards any project, hobby or job, or all 3. - -I take a more professional approach to code writing. I’ll come up with an idea, mock-up the UI then write the base code, or the whole application myself. If I need help, I prefer to hire and pay via our generous donators, freelancers. - -That way I can set a budget, the user gets a solid, well-written application by a qualified professional who is fluent in that language, and get I exactly what I ask for on time and without the usual flame wars and egos that can exist in some teams. - -By using professional, paid programmers, I avoid all the negativity completely. Application writing has become an extremely peaceful and rewarding exercise. - -_**What are you most proud of about this project?**_ - -![Linux Lite Interview][5] - -I’m most proud of the community that has stayed loyal to us throughout the years. In a business, your staff are your most valuable asset, in free software, the community is the most important ingredient. - -_**What are your future plans with Linux Lite?**_ - -To always strive to look for ways to make a person’s computing experience simpler, faster and trouble free. Our target audience shouldn’t have to dive into the terminal to try and fix things. To continue to build a feature-complete operating system that is light on resources. - -_**What new features can we expect in Linux Lite in upcoming versions?**_ - -Due to tradition, we like to keep those as surprises. I never run out of ideas. Some nights I get no sleep because my mind is buzzing with ideas for our next application, or how to solve an ongoing, difficult bug. - -_**Are there any features that you really want to implement but haven’t been able to do so far?**_ - -You can always do more to enhance an operating system. I’m currently working on our most ambitious application to date. One that doesn’t need a GUI and that sits within the system, anticipates problems and solves them before they are seen by the user. It will have a Reports feature so that those who like to know what is going on, can see for themselves what the code is doing. It will, of course, be free software. My first foray into A.I. that I hope other Linux systems can benefit from in the future. - -_**Have you achieved the goal for which you started the project?**_ - -Goal setting is ongoing. There’s no such thing as the perfect operating system. But there is no harm in aiming for that. - -_**How can the users and readers help the project?**_ - -In the usual ways. Documentation, coding, volunteering on the Forums, buying merchandise, writing blogs, donating, making videos, starting websites like yours – the list goes on. - -* * * - -We hope you like reading about the background of open source projects. You may [read more interviews with various project leaders][6]. - --------------------------------------------------------------------------------- - -via: https://itsfoss.com/linux-lite-interview/ - -作者:[Abhishek Prakash][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://itsfoss.com/author/abhishek/ -[b]: https://github.com/lujun9972 -[1]: https://www.linuxliteos.com/ -[2]: https://itsfoss.com/lightweight-linux-beginners/ -[3]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/05/Linux_Lite.jpg?ssl=1 -[4]: https://www.linuxliteos.com/forums/ -[5]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/05/linux-lite-interview.png?ssl=1 -[6]: https://itsfoss.com/interviews/ diff --git a/sources/talk/20200530 How open standards guide us in a world of change.md b/sources/talk/20200530 How open standards guide us in a world of change.md deleted file mode 100644 index 3ee87d50ef..0000000000 --- a/sources/talk/20200530 How open standards guide us in a world of change.md +++ /dev/null @@ -1,59 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (How open standards guide us in a world of change) -[#]: via: (https://opensource.com/article/20/5/oasis-open) -[#]: author: (Guy Martin https://opensource.com/users/guyma) - -How open standards guide us in a world of change -====== -OASIS Open brings open source and standards communities together during -this time of crisis to help define a new, collaborative future to -benefit all. -![Globe up in the clouds][1] - -As I write this article in my home office in Beaverton, Oregon, a Portland suburb, I'm relying (and reflecting) on years of work that went into standards like TCP/IP, HTTP, NTP, XMPP, SAML, and many others, as well as open source implementations of these standards from organizations such as the [Apache Software Foundation][2]. The combination of these standards and technologies is literally saving lives, as many of us are able to work from home while "flattening the curve." - -Nothing has dominated the news more in 2020 than COVID-19. Yet, in the midst of challenging time, I've found opportunities for personal and industrial renewal. By fortunate (some may say unfortunate) timing, I found myself switching roles in the middle of this crisis from helping to build and run Open Source Program Offices (OSPOs) to becoming the executive director at [OASIS Open][3], a standards development organization that is helping bring standards and open source together in practical and productive ways. - -Looking through the many articles on Opensource.com related to [standards][4] (and there are [quite a few][5]), I went on an interesting journey through the different thought processes—and sometimes biases—that people involved in each community have. What stood out most was this: both standards professionals and open source advocates want the same thing—better technology that we all can rely on. - -As I was transitioning to this new role at OASIS, some colleagues and friends in the open source world that I've been a part of for many years questioned my motivations for making this move. In explaining why I took this job, I reflected on the larger role I think the intersection of standards and open source can play, especially in the current crisis we all face. - -### 4 reflections on open source and standards - -First, I've seen efforts like the [Open Connectivity Foundation][6], which I was fortunate to help start, get this right in balancing a standard with multiple reference implementations. Early in that effort, the standard was actively driven by the open source project, and the project took cues from the work of the standards teams. The result is both working code and a standard that can help shield IoT developers from having to worry about the many underlying network protocols in use in this ecosystem. - -Second, I'm extremely energized by the opportunity to work with some of the best minds in the open source community, many of whom I'm fortunate enough to call friends. One of the first steps OASIS took when developing its [Open Projects][7] program was to assemble an advisory council of open source all-stars. Chris Ferris, Jim Jagielski, Nithya Ruff, Deb Bryant, and many others regularly come together, with support from OASIS staffer Jory Burson, to hash out best practices with a path to standardization and recognition in international standards bodies like ISO, ITU, W3C, and others. - -This group, along with our staff, is rethinking everything from governance to IP to community building to funding and process, taking the best from both worlds to create something new. We're bridging the agile, collaborative excellence that is open source with the trusted, interoperable reliability that is open standards, and helping to demystify open source for heavily regulated procurement processes (government, financial, NGO, etc.). The possibility of getting open source into supply chains that have traditionally relied on standards is very exciting. - -Third, I see the huge potential for what the response to this pandemic represents. This is arguably a once-in-a-generation opportunity for standards and open source communities to help define and build the future of emergency management, e-learning, medical technologies, and many other aspects of our daily lives. Determining how these elements work together effectively will be paramount to our shared future. - -Finally, I'm excited to see the role that OASIS and other standards and open source bodies can play as we tackle some of our biggest challenges in the coming months and years together. COVID-19 is changing our world and our way of life forever; how we adapt and thrive will, in large part, be determined by how well we all collaborate, and I can think of no better time for the open source and standards communities to unite to chart a course forward for all of us. - -I'm proud to be part of the movement to build a stronger bridge between open source and open standards, and I invite you all to join us. If you have thoughts to share or a project you'd like to advance, I'd love to hear from you. You can [visit us][8] or use the comments section below. Let's write the next chapter together. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/5/oasis-open - -作者:[Guy Martin][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/guyma -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/cloud-globe.png?itok=_drXt4Tn (Globe up in the clouds) -[2]: https://apache.org -[3]: https://oasis-open.org -[4]: https://opensource.com/resources/what-are-open-standards -[5]: https://opensource.com/tags/open-standards -[6]: https://openconnectivity.org -[7]: https://oasis-open-projects.org/ -[8]: https://oasis-open-projects.org/get-involved diff --git a/sources/talk/20200531 Red Hat- Holding Its Own and Fueling Open Source Innovation.md b/sources/talk/20200531 Red Hat- Holding Its Own and Fueling Open Source Innovation.md deleted file mode 100644 index b2879802f2..0000000000 --- a/sources/talk/20200531 Red Hat- Holding Its Own and Fueling Open Source Innovation.md +++ /dev/null @@ -1,59 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Red Hat: Holding Its Own and Fueling Open Source Innovation) -[#]: via: (https://www.linux.com/articles/red-hat-holding-its-own-and-fueling-open-source-innovation/) -[#]: author: (Swapnil Bhartiya https://www.linux.com/author/swapnil/) - -Red Hat: Holding Its Own and Fueling Open Source Innovation -====== - -When IBM acquired Red Hat for $34 billion in 2019, it was considered the industry’s largest software acquisition. The synergy between the two companies led them to become one of the leading hybrid multi-cloud providers globally. - -In most acquisitions, the acquired entity sometimes loses momentum and sheds some of its original luster. This does not seem to be the case with Red Hat. - -**Distinct Identity** -“I would define it as a separate company and that’s how we run it,” affirms Paul Cormier, President & CEO of Red Hat, who is credited with conceptualizing the company’s open hybrid cloud platform. - -“We set our own strategy, we set our own road maps. It’s completely up to us. We have stayed as a self-contained company. Red Hat still has all the pieces to be a separate company: its own Engineering, product lines, back office, HR, Legal, and Finance. It’s very much like VMware is to Dell, or LinkedIn is to Microsoft,” he explains. - -Cormier believes it’s important to have separate identities for partner ecosystems to thrive. - -“We are talking about integrating Arc with OpenShift. IBM didn’t even know this was happening as we had kept it confidential,” he says. - -Microsoft’s Azure Arc is a management tool for hybrid cloud application infrastructures, while OpenShift is a family of containerization software developed by Red Hat. - -“We’re big on Intel platforms. We’re also big on IBM Z, IBM I, IBM P. Since we support Intel in Red Hat Enterprise Linux (REL), we know their road maps long before they’re implemented.  However, we have to show Intel that we would not give away their secrets to IBM. This is the most important reason that we must remain separate so that those partner ecosystems remain,” he says. - -**Linux: The Innovation Engine** -Cormier points out that what makes Red Hat very unique is its completely open-source software development model. - -“That’s our development model. Open source is not a thing — it’s an action,” he says. - -Underlining the importance of Linux, he explains that “Linux went by Unix a long time ago in terms of features, function, and performance. However, Linux was so available that eventually, it became the innovation engine. All the technologies today — on the infrastructure and the development side, on the tools side — they are all built-in and around Linux. OpenShift is still a Linux platform. Its containers are Linux. All the innovation is now around that.” - -Cormier is also confident of meeting the demand of customers adopting hybrid cloud. - -“For us, it doesn’t matter whether it’s 20% on-premise, 20% in the cloud and 80% on-premise, or 60/40 or 50/50 — it’s still a hybrid world. I can’t predict if the COVID thing is going to push people to the cloud more quickly or more slowly, but we don’t care. It doesn’t matter. For us, it’s the same value proposition,” he avers. - -**Virtualization meets Kubernetes ** -Red Hat is now working on bringing VMs into the Kubernetes architecture. - -“As opposed to some of our competitors that are trying to bring containers back to their world, we’re moving in the other direction. We are working on advanced cluster management on Kubernetes. As customers increasingly go hybrid, having OpenShift with containers running in different places will help them easily manage across clusters,” Cormier says. - -“We’re also focusing on telco 5G use cases on the OpenShift platform. We’re doing a lot of work with Verizon and the other telcos,” he adds. --------------------------------------------------------------------------------- - -via: https://www.linux.com/articles/red-hat-holding-its-own-and-fueling-open-source-innovation/ - -作者:[Swapnil Bhartiya][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://www.linux.com/author/swapnil/ -[b]: https://github.com/lujun9972 diff --git a/sources/talk/20200603 5 common open source testing myths debunked.md b/sources/talk/20200603 5 common open source testing myths debunked.md deleted file mode 100644 index 5ce22be725..0000000000 --- a/sources/talk/20200603 5 common open source testing myths debunked.md +++ /dev/null @@ -1,86 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (5 common open source testing myths debunked) -[#]: via: (https://opensource.com/article/20/6/open-source-testing-myths) -[#]: author: (Kevin Dunne https://opensource.com/users/kdunne916) - -5 common open source testing myths debunked -====== -These survey results paint a picture of the bright future of open source -testing. -![Collaboration on a mobile software design][1] - -Open source tools are constantly changing the landscape of testing, and the community around these tools is bigger and more vocal than ever. - -The first-ever _[State of Open Source Testing Survey][2]_ examines the latest trends and developments across the software development industry. This survey received over 2,000 responses from practitioners across the behavior-driven development, functional testing, and load testing domains. - -The survey reveals a great deal about software testing and how it uses open source, and based on the results, it's reasonable to expect an increased rate of adoption and deployment of open source tools. - -Importantly, the survey results also debunk some of the common myths around open source and software testing. Here's a look at the top five: - -### Myth #1: The biggest impediment to using open source testing tools are the skills required. - -There is undoubtedly a large jump in technical skill sets required to use open source testing tools, and typically a need to brush up on or learn new coding skills. However, while 40% of respondents did cite the lack of technical skills as one of their largest roadblocks, the most common roadblock cited was simply lack of time to learn new tools. - -![OS testing impediments][3] - -### Myth #2: Open source testing happens mostly in English-speaking countries. - -Of all respondents to the survey, 61% are in Asia. While many have believed that Agile and DevOps are making co-located work more essential, the significant number of respondents in countries like India, Vietnam, and the Philippines says otherwise. There's a possibility that the rise of remote work and distributed teams will continue to grow the importance of multilingual support for projects and more adoption of asynchronous communication practices. - -![OS testing offshore][4] - -### Myth 3: Open source tools are only used for cost savings. - -Sure, the largest reason for using open source testing tools stated was cost (39%). However, the overwhelming majority of respondents (61%) cited other primary reasons for leveraging open source tools, including community support, better integration, and more ability to customize to their liking. Simply put, the choice to use open source is not a purely economic one. - -![OS testing benefits][5] - -### Myth #4: Quality Assurance Engineering is no longer a career because developers write their own tests. - -An overwhelming majority (84%) of organizations surveyed still had dedicated testing and QA personnel contributing to the creation of functional automated tests against their applications. Only a small percentage (8%) left those tasks completely up to developers to handle. - -![functional testing roles][6] - -When looking at other types of testing, such as load and performance testing, there seemed to be a wider variety of titles/roles that were involved (performance engineering, operations, etc.). Still, the role of a dedicated tester, whether technically focused or otherwise, seems to be one that won't be eliminated anytime soon. - -![performance/load testing roles][7] - -### Myth #5: Behavior-driven development means you don't have to plan ahead. - -[Behavior-driven development][8] (BDD) is a hot topic in industry discussions these days, with anywhere between 15-40% of companies using it (depending on your source). While many have implemented the tools that support BDD (Cucumber, SpecFlow, and so on), few have implemented the true foundation of the approach: specification-by-example using scenarios. Teams have often managed to get by with suboptimal requirement definitions due to their frequent, in-person collaboration; requirements are defined along the way, as things develop. If only 20% of companies provide documentation in the required format, it's likely we'll see struggles now that teams are increasingly remote. - -![BDD usage][9] - -### Open source and the future - -The future of open source testing is bright, but it's changing. Few industries are as well-equipped to adapt to rapid change as open source development. - -Want to dig a little deeper? Head over to Tricentis' [infographic][10] to explore the detailed results and sign up to participate in the _2021 State of Open Source Testing Survey_. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/6/open-source-testing-myths - -作者:[Kevin Dunne][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/kdunne916 -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/mobile-device-phone-team-collaboration-demo.png?itok=q96f2Eao (Collaboration on a mobile software design) -[2]: https://www.tricentis.com/state-of-open-source-2020/ -[3]: https://opensource.com/sites/default/files/uploads/os_testing_1_0.png (OS testing impediments) -[4]: https://opensource.com/sites/default/files/uploads/os_testing_2.png (OS testing offshore) -[5]: https://opensource.com/sites/default/files/uploads/os_testing_3.png (OS testing benefits) -[6]: https://opensource.com/sites/default/files/uploads/os_testing_4.png (functional testing roles) -[7]: https://opensource.com/sites/default/files/uploads/os_testing_5.png (performance/load testing roles) -[8]: https://opensource.com/article/19/2/behavior-driven-development-tools -[9]: https://opensource.com/sites/default/files/uploads/os_testing_6.png (BDD usage) -[10]: https://www.tricentis.com/state-of-open-source-2020 diff --git a/sources/talk/20200604 Airbus tells quantum-computing developers what it needs from the the technology.md b/sources/talk/20200604 Airbus tells quantum-computing developers what it needs from the the technology.md deleted file mode 100644 index b078a5287d..0000000000 --- a/sources/talk/20200604 Airbus tells quantum-computing developers what it needs from the the technology.md +++ /dev/null @@ -1,77 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Airbus tells quantum-computing developers what it needs from the the technology) -[#]: via: (https://www.networkworld.com/article/3561228/airbus-tells-quantum-computing-developers-what-it-needs-from-the-the-technology.html) -[#]: author: (Michael Cooney https://www.networkworld.com/author/Michael-Cooney/) - -Airbus tells quantum-computing developers what it needs from the the technology -====== -Aerospace multinational Airbus says it is 'quantum-ready' and helping to shape the future capabilities of quantum computing. -[Glosser.ca / Pete Linforth][1] [(CC BY-SA 3.0)][2] - -Airbus expects quantum computing to have major production, performance and efficiency benefits as the technology plays a role in its cybersecurity, aerospace and communications businesses. - -“We are users of quantum computing and intend to use it to deliver more powerful services and systems,” said [Paolo Bianco][3], global research & technology cooperation manager for Airbus to an online audience at the [Inside Quantum Technology][4] virtual event this week. - -[10 of the world's fastest supercomputers][5] - -“We are not very much interested in developing our own quantum technology but will help others develop quantum technologies so that we can integrate them into what we are doing.  Our aim is to be quantum-ready.  It’s a race, and we want to hit the ground running.” - -The multinational aerospace corporation and world’s largest airline manufacturer is well on its way to utilizing and helping influence the develop the future of quantum computing.  - -For example, Bianco pointed to three key quantum technology areas Airbus is interested in – communication/security, computing and sensing. - -"The field of quantum communications is where we started in 2012 as the company was evaluating the technology’s threat to secure communications," Bianco said. - -According to a recent Airbus [blog][6], "Today’s cryptographic algorithms—such as the widely used encryption via asymmetric keys—will not be able to sustain attacks by the quantum computers of tomorrow. Our goal is to develop a future secure communications infrastructure for our aerospace platforms based on security-enhancing quantum information technologies (algorithms, authentications, keys).”   - -Airbus wants to make quantum computing a significant part of its ongoing high-performance computing (HPC) work.  - -"We are an avid HPC user because we do a lot of simulations and design," the company says, "and we have invested a lot of time and money to understand how quantum computing can be used with HPC to improve our efficiency and performance." - -The third area Airbus is looking to develop is quantum sensors that "are effective at measuring physical quantities such as frequency, acceleration, rotation rates, electric and magnetic fields, and temperature with the highest relative and absolute accuracy," Airbus stated.  - -"We believe this could have direct applications in improving our navigation systems in which precise acceleration measurement is used to achieve position data," Airbus stated. "In addition, quantum sensors could act as payloads for a range of different applications, such as climate dynamics from satellites or underground resources surveying from an aircraft." - -In addition to those three areas, the company 18 months ago began the [Airbus Quantum Computing Challenge][7] (AQCC) to get the quantum community involved in addressing aerospace-flight physics problems. The challenge put forward five distinct  problems, such as saving fuel or designing aircraft wings, with varying degrees of complexity, ranging from a simple mathematical question to a global flight physics problem, Airbus stated.  - -The challenge involved quantum-computing research from Airbus’ team and third parties, and the results were expected earlier this year. But as with many things, the announcement of the winner has been delayed due the COVID-19 pandemic, but Bianco said results are expected soon.  - -Beyond the Challenge, Airbus has taken part in the development of the quantum computing community. For example it provided early funding to quantum-computing-as-a-service vendor QC Ware, which offers a cloud-based service that provides enterprises with access to quantum resources. Other vendors such as [D-Wave][8], Google, [IBM][9] and [Rigetti][10] offer similar cloud-based resource services. - -Airbus has also been involved in developing quantum technologies for use in [space][11], as well as facilitating [university research][12] with the Quantum Technology Application Centre. - -“We need to develop systems that are far away from the everyday experience…we are ready to go the extra mile to understand something we are going to use,” Bianco said.  Aerospace could be one of the technologies that helps everyone learn what quantum can do, particularly in extreme environments, he said. - -Join the Network World communities on [Facebook][13] and [LinkedIn][14] to comment on topics that are top of mind. - --------------------------------------------------------------------------------- - -via: https://www.networkworld.com/article/3561228/airbus-tells-quantum-computing-developers-what-it-needs-from-the-the-technology.html - -作者:[Michael Cooney][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://www.networkworld.com/author/Michael-Cooney/ -[b]: https://github.com/lujun9972 -[1]: https://en.wikipedia.org/wiki/File:Bloch_Sphere.svg -[2]: https://creativecommons.org/licenses/by-sa/3.0/legalcode -[3]: https://www.linkedin.com/in/paolobianco1/?originalSubdomain=uk -[4]: https://www.insidequantumtechnology.com/news/inside-quantum-technology-new-york-online-tuesday-june-2/ -[5]: https://www.networkworld.com/article/3236875/embargo-10-of-the-worlds-fastest-supercomputers.html -[6]: https://www.airbus.com/innovation/future-technology/quantum-technologies.html -[7]: https://www.airbus.com/newsroom/news/en/2019/10/world-leading-experts-Airbus-Quantum-Computing-Challenge.html -[8]: https://www.dwavesys.com/quantum-computing -[9]: https://www.ibm.com/quantum-computing/ -[10]: https://rigetti.com/ -[11]: http://qtspace.eu:8080/sites/testqtspace.eu/files/QTspace_Stretegic_Report_Intermediate.pdf -[12]: http://www.bristol.ac.uk/temple-quarter-campus/research-teaching-and-partnerships/qtic/ -[13]: https://www.facebook.com/NetworkWorld/ -[14]: https://www.linkedin.com/company/network-world diff --git a/sources/talk/20200607 Is your team a -glue team.md b/sources/talk/20200607 Is your team a -glue team.md deleted file mode 100644 index d62fed9525..0000000000 --- a/sources/talk/20200607 Is your team a -glue team.md +++ /dev/null @@ -1,121 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Is your team a "glue team?") -[#]: via: (https://opensource.com/open-organization/20/6/glue-team) -[#]: author: (Lauri Apple https://opensource.com/users/lapple) - -Is your team a "glue team?" -====== -Glue teams help keep an organization running smoothly. Here's how to -help them do their best work and avoid burnout. -![Teamwork starts with communication amongst teams and across silos][1] - -In his book [_How to Win_][2], New York Times senior economic correspondent Neil Irwin championed the role of "glue people" in bringing about better alignment, collaboration, and organizational maturity. "There is particular value in being a 'glue person,'" [Irwin writes][3], "someone who understands how their specialty fits together with other types of technical expertise, who can ensure that teams containing people with diverse skills can work together to create something greater than the sum of its parts." - -In many organizations, "glue people" are identified by their roles—product managers, team leads, program manager, project manager, agile coach, business systems analyst. They're people like me—an agile program manager who's been developing cross-team and cross-organizational initiatives for the past seven years at large- and medium-sized companies. - -In one company, I served as program manager for a company-wide open source initiative—aligning 1,800 developers behind a common strategy and setting development practices. In another, I worked with three teams building out a self-service deployment platform based on Kubernetes and AWS. In these days of Coronavirus, I'm helping 14 delivery teams to launch an MVP offering that augments our core business. - -The subject matter has been different in each role, but the same key activities that I bring to work every day remain consistent: - - * Drive alignment - * Coordinate people, efforts, and teams - * Call out ambiguous language to drive clarity and replace assumptions with facts - * Be the neutral party or "fresh eyes" who distills detailed conversations and plans down into simple questions: "Are you doing this, or that?"; "Are you building two things or one thing?" So often, these basics go overlooked! - * Coach leaders on delegation, prioritization and strategic thinking - * Facilitate informed decision-making - * Forecast dependencies and other risks and help mitigate them - * Visualize complex packages of work in simple, clear diagrams and language to improve transparency and accountability - - - -The glue people in your organization might also be program managers, or agile coaches, scrum masters, or engineering managers. Some organizations rely on their savviest product managers and engineering managers to provide the glue; in other organizations, the CEO doubles as Chief Glue Officer. In any case, we glue people spend much of our workdays connecting the dots between people, topics, and themes, to paint the whole picture instead of little corners. - -Maybe you are a glue person. Have you ever considered the specific ways you may fulfill this role? - -### Understanding the need for coherent storytelling - -Do you ever think of yourself as a storyteller, embracing or asserting a narrative as a means of keeping your organization aligned? If so, you're fulfilling a valuable glue-person responsibility. - -Coherent storytelling essentially amounts to connecting the dots. In your average tech organization, there is lots of activity moving forward; maybe this is even documented. But does it all add up to a story anyone can follow? For example: - - * Have you ever seen a roadmap that was formatted as a to-do list, and wondered how the different items corresponded to each other? - * Have you ever seen goals stated on a vision document and wondered, "we've never fulfilled that function before, and we don't have a team set up to do it anytime soon. So what are the steps between now and that team forming? How do we get there?" - * Have you or your team ever been asked to drop what you're doing right now, even though last week it was "super-urgent," and start doing this other thing right now because it's suddenly also "super-urgent?" - * Does your product roadmap look more like spinning a bunch of plates to keep different customers happy than building increments of value to serve current and future customers? - * Does your organization try to do too much, making an extreme sport out of context-switching? - - - -I've seen all of the above. They're all pretty failsafe ways to get talented people to burn out, lose motivation, and leave your organization. These frustrated folks see their companies constantly [disrupting themselves][4] and determine that they will never get anything done. They don't know where they're headed, and no one is telling them that story in any clear, purpose-focused way. What's unfortunate is that such problems are usually not difficult to solve—the content and context are there, but no one is assembling it into the narrative or editing out the filler. - -Even the most clear-headed companies struggle to permanently bake common sense fundamentals like prioritization and evidence-based decision-making into their cultures and habits. They're aware of the importance of values like focus, clarity, and prioritization. Maybe the companies even worked hard to attain them through pragmatic-sounding values statements, objective and key results (OKR) strategies, offsites, workshops, and other common tools of the transformation trade. Nevertheless, hierarchies form, and a few teams start getting left out of decisions that affect them. Politics seep in. Inertia creeps. Docs—what are docs? Decision logs—what are decision logs? Meetings get longer and more boring. Time starts to run out, and you end up at the point where you "just have to ship something." The plot gets lost. - -> "We used to be excellent at getting work done. The more people we add, the less we're getting done." - -Some organizations lose the plot of their own story by over-reliance on oral storytelling. They hold a lot of meetings where much is said, but no one takes notes. There's no basic roadmap or vision posted; in fact, there is resistance to the idea of those things. "It takes too much time," is the usual argument. "No one will read them anyway," is another common one. Often, in these organizations, the processes they've developed rely too much on personal connections, and not enough on well-designed communication flow. Their processes are lightweight because they're nonexistent. - -From time to time, I've asked colleagues, "would you rather write this down once, or have three or four meetings where you have to clarify the same point with the same people?" Usually, they decide to write it down. But the habit of oral storytelling and hallway negotiation can take time to break. - -As a former reporter, it's not much of a stretch for me to view my role as that of a storyteller. Much of what I do on a daily basis is similar to when I was reporting: - - * Asking people questions - * Clarifying the responses - * Challenging the responses ("but what about this?") to sharpen their meaning - * Organizing the information into stories, starting with the most important details ("the lede") first - * Constantly asking, "who is going to care about this detail?" and segmenting the content by audience - * Categorizing related types of information to form sub-themes and identify sub-narratives - - - -When I give road-mapping workshops, I cover the 5 Ws—it feels like giving a Journalism 101 class to engineering managers and product teams: - - * WHO is the customer? The team/set of teams about to do the work? - * WHAT are we doing? - * WHY are we doing it? Why are we not doing this other thing instead? - * WHEN do we start? When do we hope to finish something? - * WHERE does this effort reside in the landscape of our other efforts? - * HOW do you want to do it? - - - -In leading these road-mapping sessions, I'm looking for a few key outcomes of success: - - * A story that reflects a very strict work-in-progress limit—i.e., a primary plot, and two to three related sub-plots maximum, but no more - * Stated objectives for whatever the organization is working on that are customer-agnostic and framed in a broader context (i.e., doing X will strengthen or complement Y, in these ways) - * Metrics and data points that clearly show the impact of delivering something - - - -One other similarity between being a "glue person" in a tech organization, and being a journalist, is that it's vital to ask tough questions, to get to the bottom of stories. This is to ensure that the "readers" of those stories—the teams, the departments, the C-level, and anyone else seeking the information—have all the clarity they need to follow the plot. Here some example questions from my real-life experience: - - * To a group of 15 engineering managers who have spent an hour-long meeting prioritizing a bunch of greenfield development initiatives—"How did protecting customer data from known potential leaks end up near the bottom of your list?" - * To a head of engineering, who wanted to create dashboards so he could survey team progress—"Who needs these bug-counting dashboards; the delivery teams, or you? How does this scale? Is 'number of bugs' a reliable metric?" - * To two teams who want to build their own Kubernetes cluster when one is sufficient—"Hey, what's the value of doing that?" - - - -A lot of what I'm suggesting depends on changing habits, which takes time. Unfortunately, you're in the middle of a global pandemic and don't have time to waste on getting the right teams and people assembled and a plan in motion. You probably don't have the bandwidth to do it all yourself. - -So, don't be the sole glue person in your organization. Be one of many glue people, and help other people adapt to playing this role. It's especially crucial during a crisis. - --------------------------------------------------------------------------------- - -via: https://opensource.com/open-organization/20/6/glue-team - -作者:[Lauri Apple][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/lapple -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/fistbump-team-teamwork.png?itok=WuSu8-wE (Teamwork starts with communication amongst teams and across silos) -[2]: https://www.neilirwin.com/how-to-win -[3]: https://www.theatlantic.com/ideas/archive/2019/06/its-a-winner-take-all-world-heres-how-to-get-ahead/591700/ -[4]: https://barryoreilly.com/when-your-startup-cant-stop-disrupting-itself/ diff --git a/sources/talk/20200610 8 steps to make your next meeting more productive.md b/sources/talk/20200610 8 steps to make your next meeting more productive.md deleted file mode 100644 index 8b612dec2c..0000000000 --- a/sources/talk/20200610 8 steps to make your next meeting more productive.md +++ /dev/null @@ -1,87 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (8 steps to make your next meeting more productive) -[#]: via: (https://opensource.com/article/20/6/meeting-productivity) -[#]: author: (Emily Brand https://opensource.com/users/emily-brand) - -8 steps to make your next meeting more productive -====== -Make your meeting a productivity powerhouse—not a time waster—with these -tips. -![interviewing for a job in a conference room][1] - -Many organizations' cultures encourage team meetings, as they can be a valuable time for groups of employees to collaborate and innovate together. However, too often, meetings are unproductive, repetitive, and waste valuable time that employees could use for work. According to a Korn Ferry survey, 67% of employees claim that their job performance is [negatively impacted][2] by spending too much time in meetings. That number is far too high for modern companies interested in growth and productivity. - -Because all types of organizations, including open source communities, depend on effective meetings and communication standards to get things done, many try to instill more effective meeting environments. For example, some carve out time each week when meetings are not allowed, so the company can reach a flow state. While this is helpful during that time, the rest of the week may be wasted by unproductive meetings. - -The following steps can help make meetings more efficient and create a focused, productive workforce. - -### Before the meeting - -#### 1\. Be prepared - -Too many meetings begin with the question, "why are we here?" One way to make a meeting more productive is to ensure every participant understands the meeting's purpose before the meeting. The agenda should include the start and end time, the topics that will be covered, and a short description written by the organizer answering that "why" question. The easiest way to communicate these things is to share the meeting's agenda in the invitation, and certainly enough time before the meeting that participants can familiarize themselves with the documents before starting. This enables everyone to think about the meeting's goal, plan ahead, and arrive prepared to work toward that goal. - -#### 2\. Is this necessary? - -To prevent unnecessary meetings, everyone must understand the intended outcomes in advance. If the organizer is unable to articulate intentional goals and outcomes, then the meeting should be canceled or postponed until that happens. Also, think about whether the meeting's outcomes and decisions could be completed in an asynchronous fashion (with chat or email). - -Thinking critically about the purpose of the meeting and the people who can contribute to that goal helps organizers and participants stay on task during the meeting. As Krystal D'Costa writes in _Scientific American_, "Since spectators aren't grounded in the project or invested in the outcome, they often derail the meeting." If you're an attendee and don't understand the meeting's purpose, don't be afraid to ask the organizer if you need to be there. - -#### 3\. Keep people engaged remotely - -For long-form remote meetings (beyond basic update calls), use videoconferencing to ensure attendance, accountability, and engagement. A full 93% of communication is nonverbal, and video meetings take advantage of that fact for productivity. Also, it is easy to disengage during a phone meeting by staying on mute or participating as little as possible while working on other things. This behavior perpetuates the cycle of unproductive meetings. - -Videoconferencing increases meeting productivity, so using this collaboration method for remote meetings will have a major impact on the success of decisions going forward. Running productive remote meetings is especially important for open source communities with volunteers spread across geography trying to give back to the project. There are several [open source videoconferencing][3] tools.  - -### During the meeting - -#### 1\. Encourage mindfulness - -Most people are running to and from meetings (literally and figuratively), which causes a lack of focus. A proven practice to encourage meeting participants to re-engage and be mindful is to begin every meeting with [at least 90 seconds][4] of technology-free silence. This will allow everybody to switch gears so they can focus on the current meeting. This is a good time to display the meeting agenda and brief on a screen in the meeting room to remind everyone of its goals and purpose. - -#### 2\. Begin with agreement - -Before beginning, verify that everyone understands the meeting's objectives and the reason they are there. You can do this with a verbal yes in a small group or a non-verbal hand raise in a larger group. If there is any disagreement or confusion regarding the purpose of the meeting, one tangent or participant may sidetrack the entire meeting. This can lead to separate conversations later, which further draws everyone away from the larger picture and the original meeting goals. - -#### 3\. Be conscious of time constraints - -Every meeting should have a stated start and end time. Once a meeting reaches (or worse, exceeds) the allotted time, participants will begin to lose focus and start thinking about the next thing on their to-do list. By ending meetings five minutes early, attendees will have time to reflect on their decisions with a sense of calmness, which is key to ending a meeting with purpose. - -#### 4\. Identify action items - -During the meeting, be sure to establish any follow-up that will be needed, including identifying someone to lead each task (or to assign it if no one volunteers). In addition, assign someone in the room to provide status reports on that task going forward to ensure accountability. Reiterate all action items before the end of the meeting to get consensus on each task and so that people claim purposeful responsibility for their assignments. - -### After the meeting - -#### 1\. Verify action items and next steps - -At the end of the meeting, someone should send out the action items and who owns them to all attendees so that everyone knows what their tasks are. Between meetings and official reports, tracking tools like Trello and its [open source alternatives][5] can help everyone track the ongoing status of action items. - -### Some changes are better than none - -Depending on your line of work, who you are meeting with, or the number of people in a meeting, it can be very difficult to implement all these changes. Even so, even implementing a few can dramatically increase productivity. - -It is tempting to banish meetings altogether when the load is overwhelming and the productivity is low, but that is not plausible. Instead, enforcing productivity through these steps is well within your control as a meeting host or attendee. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/6/meeting-productivity - -作者:[Emily Brand][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/emily-brand -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/team-meeting-notebook-conference-brainstorm.png?itok=Rb_rv8-d (interviewing for a job in a conference room) -[2]: https://www.cnbc.com/2019/11/17/67percent-of-workers-say-spending-too-much-time-in-meetings-distracts-them.html -[3]: https://opensource.com/article/20/5/open-source-video-conferencing -[4]: https://www.inc.com/chris-matyszczyk/this-is-astonishing-amount-of-time-it-takes-to-calm-down-when-youre-angry-according-to-a-police-organization.html -[5]: https://opensource.com/alternatives/trello diff --git a/sources/talk/20200612 3 lessons from remote meetings we-re taking back to the office.md b/sources/talk/20200612 3 lessons from remote meetings we-re taking back to the office.md deleted file mode 100644 index a073bda1d1..0000000000 --- a/sources/talk/20200612 3 lessons from remote meetings we-re taking back to the office.md +++ /dev/null @@ -1,92 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (3 lessons from remote meetings we’re taking back to the office) -[#]: via: (https://opensource.com/article/20/6/remote-meetings) -[#]: author: (Abigail Cabunoc Mayes https://opensource.com/users/abbycabs) - -3 lessons from remote meetings we’re taking back to the office -====== -Some of the ways we're accommodating working at home during the pandemic -can make in-real-life meetings better and more inclusive when we get -back to the office. -![Two people chatting via a video conference app][1] - -For those of us fortunate enough to work remotely during this pandemic, we'll likely be camped out in our home offices for a while yet. The transition back to in-person work will [take time and be geographically patchy][2]. - -As I've talked with colleagues who are working remotely, many people say this period is temporary and makeshift: "_Once it's safe to return to the office, we can resume all our old habits and processes_." But in truth, this period of working from home and our eventual return to the office are deeply entwined. The choices and changes we make now will impact the ways we work once we step back into our offices, laboratories, classrooms, and other workspaces. - -Rather than viewing this moment as temporary and makeshift, we should see it as formative. By investing in and improving our online meeting experience _now_, we can build the foundation for a better work environment that persists long after the pandemic. We can use this moment to recalibrate our culture and systems, so they are more robust, resilient, and inclusive. Those of us in scientific fields can use this moment to deliberately shift toward [kinder science][3]. - -Meetings are just one example: Rather than trying to recreate in-person meetings online, let's reimagine what remote meetings can be. With online meetings, you have to be intentional about setting up channels through which participants can contribute and take time to make sure that they know how and feel comfortable doing so. We can take this practice back to the office, providing an opportunity to be more inclusive in-person and break power balances (including leadership hierarchy and majority groups) that can keep folks silent. - -Using this difficult moment to build a better work environment may sound overwhelming. But, there's good news: There's no shortage of resources and experiences to draw from. Working remotely feels new to a lot of us, but folks in the open source software world have been working this way and building community online for a long time: Tim O'Reilly has described this as the [architecture of participation][4]. Mozilla has been empowering cohorts of [Open Leaders][5] around the globe for years. And [rOpenSci][6], [RStudio][7], and the [Carpentries][8] have created and support remote, collaborative communities of scientists and coders. We can learn a lot from these communities that have been building relationships and innovating together from afar. - -Ready to get started? Below, we share three principles for empowering remote interactions that we can also carry forward in real life (IRL). - -### Set an inclusive tone - -Remote meetings can easily feel disconnected or unnatural—especially if you're new to meeting online. Start all meetings with a welcome to earn buy-in and participation. For example, schedule time at the very beginning to welcome everyone, announce the meeting goals, and explain how to participate, like how to unmute microphones, use the chat, or write in a shared document. Starting with a quick roll call and icebreaker question during the meeting makes folks less anonymous and encourages participation. Additionally, outline the shared expectations and culture of the meeting by summarizing the code of conduct or community participation guidelines. - -Create a detailed agenda with specific minutes allotted to different topics, including the welcome. The agenda should be shared ahead of time and contain enough structure to allow for productive conversations, but also enough flexibility to allow for fruitful digressions. Agendas can be designed with [POP][9] to clearly state the _purpose_, _outcomes_, and _process_ of the meeting. - -Providing multiple communication channels during the meeting for folks to "speak up" is important not just for introverts but also for underrepresented minorities, students, and early career people, as well as international or multi-lingual participants. If you're using a shared document, writing feedback instead of verbalizing it can save time and also be used for side and asynchronous conversations. Using multiple channels also provides ways to be in touch and catch up if folks join the call late or drop off due to connectivity issues. - -### Provide robust documentation - -People can walk away (or log off) from meetings with different perceptions and expectations. Robust documentation can dispel this ambiguity and keep everyone on the same page. - -Write meeting notes in a document—preferably in the agenda document mentioned above. Use collaborative document software such as Google Docs or an open source alternative like [Etherpad][10] so that folks can take live notes together. Invite and teach participants how to contribute and have them get into the rhythm early on, for example, with a written roll call that also buffers time as folks arrive at the start. - -Encouraging everyone to participate in the document will result in a record of the meeting that is less brittle than anything produced by a single designated note-taker and will include more voices. Folks can contribute in many ways (including adding links, comments, +1's to affirm others' ideas, and emojis to provide quick emotion and color). Further, people can contribute to shared documents live during a meeting or asynchronously before and afterward. These notes can also be shared in many ways after the meeting (email digest, Slack, Twitter, [Mattermost][11], etc.) with different audiences and become more accessible in "post-production" (e.g., captioning, alt-tags on any images shared, etc.). - -### Choose the right tools - -Choosing the appropriate communication channels for meetings and follow-up is important. It also requires time and empathy to make sure everyone knows how to use the technology. - -For virtual meetings, videoconferencing software like [Jitsi][12] allow participants to engage with "faces on." This is a nice norm to set if participants are comfortable, but it is also important to state that it is fine to participate without enabling video for any reason, including bandwidth or privacy issues. - -Providing the opportunity for participants to have smaller conversations through [Big Blue Button][13]'s breakout rooms can be very fruitful for moving ideas forward and strengthening relationships and trust. Having prompts or tasks to center the conversations helps make the best use of time, and scheduling time for summaries once the whole group has reconvened allows more ideas and insights to be shared. - -Using collaborative software for creating presentations can strengthen engagement while reducing bandwidth issues. Asking participants to open the presentation on their computers and advance the slides themselves eliminates the need for screen-sharing—and the bandwidth issues, multiple windows kerfuffling, and passiveness that can arise as a result. - -Being deliberate about the communication platforms outside of meetings is also important. For example, [GitHub Issues][14] might be better for archiving decision-making conversations. And a messaging platform like [Mattermost][15] might be better for quick contact, co-working, and community-building. Whichever platforms you use, take some time to make sure that they meet your team's needs and provide enough control to make them as safe as possible for your participants. - -### Make meetings work online, offline, or both - -When we're in person again, these principles and tips don't become obsolete. They're relevant and critical to a productive, inclusive workplace, whether we're online, offline, or a hybrid of the two. We have led our [Mozilla Open Leaders][16] and [Openscapes Champions][17] programs this way, and we've learned that these approaches can transcend discipline and organization size. - -And while each principle takes time and practice, they're all attainable. We have a big chance here to redesign the way we interact and collaborate, so let's start with intention and kindness. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/6/remote-meetings - -作者:[Abigail Cabunoc Mayes][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/abbycabs -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/chat_video_conference_talk_team.png?itok=t2_7fEH0 (Two people chatting via a video conference app) -[2]: https://www.theatlantic.com/health/archive/2020/03/how-will-coronavirus-end/608719/ -[3]: https://blogs.scientificamerican.com/observations/open-software-means-kinder-science/ -[4]: http://radar.oreilly.com/2015/03/socialcivics-and-the-architecture-of-participation.html -[5]: https://foundation.mozilla.org/en/opportunity/mozilla-open-leaders/ -[6]: https://ropensci.org/ -[7]: https://community.rstudio.com/ -[8]: http://carpentries.org/ -[9]: https://suzannehawkes.com/2010/04/09/pop-everything/ -[10]: https://opensource.com/business/15/7/five-open-source-alternatives-google-docs -[11]: https://opensource.com/alternatives/slack -[12]: https://opensource.com/alternatives/skype -[13]: https://opensource.com/article/20/5/open-source-video-conferencing#bigbluebutton -[14]: https://openscapes.github.io/series/github-issues.html -[15]: https://mattermost.com/ -[16]: https://foundation.mozilla.org/en/blog/online-meeting-tips/ -[17]: https://www.openscapes.org/blog/2020/03/11/how-to-run-a-remote-workshop/ diff --git a/sources/talk/20200613 Introducing the Open Management Practices.md b/sources/talk/20200613 Introducing the Open Management Practices.md deleted file mode 100644 index df53d52ab4..0000000000 --- a/sources/talk/20200613 Introducing the Open Management Practices.md +++ /dev/null @@ -1,97 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Introducing the Open Management Practices) -[#]: via: (https://opensource.com/open-organization/20/6/open-management-practices) -[#]: author: (Heidi Hess von Ludewig https://opensource.com/users/heidi-hess-von-ludewig) - -Introducing the Open Management Practices -====== -What does great management look like in an open organization? DeLisa -Alexander of Red Hat explains a new, open resource that paints one -vision. -![Media ladder][1] - -For the second article in this series on [Managing with Open Values][2], I spoke with DeLisa Alexander, Executive Vice President and Chief People Officer at Red Hat, specifically about how managing with open values works in that organization. DeLisa's team recently created and open sourced a new resource—[the Open Management Practices][3]—to help Red Hat managers understand their roles in an open organization and to empower Red Hat associates to help those managers practice openness. - -I spoke with DeLisa, a 19-year veteran of Red Hat, about what led to the creation of the practices, how she and her team developed them, and how the organization plans to integrate them into its manager competencies. DeLisa came to Red Hat with a legal background and began her career at the company as inside counsel. The legal field is very hierarchical and not too open in its values (due in part to the confidentiality required of counsel). In our interview, DeLisa explains how, over the course of her career, she's been able to grow and guide the development of Red Hat's "bottom-up" organization. - -I've transcribed parts of our interview below and edited them for readability. - -* * * - -**Heidi:** This interview series is about "managing with open values," and one of the first questions we've been asking interviewees is: What does that mean to you, to "manage according to open values"? As the executive overseeing the People team at Red Hat, why is this issue important to you? - -**DeLisa:** Red Hat started as a movement, in part because of the internet and the connected, democratic nature the technology brought with it. Red Hat hired top contributors of open source communities, which meant that these associates, now hired into decision making roles, were "infused with open"—they lead like community members, not conventional executives. The expectation was that the culture supported collaboration, participation, and community—the values of the open source community. They brought the culture with them, in other words. Upholding and catalyzing this culture via the body of community members into a profitable company is very important, and very different from proprietary software companies. - -**Heidi:** That's so interesting, because as a relatively new Red Hatter I didn't really see that connection as clearly as you explain it. Now I can better understand the passion that a movement started while intersecting with a corporate culture. - -**DeLisa:** Yes. Having come from the law I felt the same way, and it took me a while to realize how it worked and what the expectations were. - -As I navigated my way in the open source community culture, we started to see that those who were not coming from Red Hat communities didn't know how to navigate this new culture. So, we created the [Open Decision Framework][4] (ODF) to help them grow and align to Red Hat values. - -Associates and leaders with decision making responsibilities needed to understand and practice open source practices because our culture is so important. In addition, when you use the ODF, you get better and more creative decisions—that might take longer to get, but then you don't have the change management, like at other companies, after the fact. The transparency offered by the framework aligned with the cultural expectations of the community. When people don't get what they expect, that's when things blow up. So the ODF helps associates and leaders navigate working and decision making in the Red Hat community in ways they expect. - -**Heidi:** So Red Hat is essentially an open source community culture _at scale_. - -**DeLisa:** Yes. Over time, we have had to develop and grow in ways that are consistent with our values. We've created tools and had projects that used open tools to do that. For example, [when we created our "Why,"][5] our shared purpose, the proposed plan was going to take a year before it opened to the associates. The focus of the proposal was on the leaders coming up with it in a closed room—which wouldn't work at Red Hat. But we decide to involve the associates and do the change management synchronously with the activity. The power of participation will create something amazing (when it's important to do) for Red Hat, but you have to take it on faith, and you don't know when it's going to be done. The iterative process means that project plans are less defined and you have to trust: when it's baked, it's baked. You have to lean into the instinct that you will know when it's baked. - -**Heidi:** From my own experience, I can see and feel that, from the associate perspective, there are large gains by being able to participate. But what are the benefits to the managers themselves when they manage with open values? - -**DeLisa:** One of the most important values of open source community members is that they want to contribute right away; there is a meritocracy where title doesn't matter. That's important and that's also what Millennials expect for themselves. Millennials are working this way now. That means that managers at Red Hat had to learn how to manage Millennial-like people 20 years before Millennials came into the workforce! There is a significant advantage in that, because it helps to create a highly engaged workforce where people have a part in making a great team and a great organization. Managers also develop associate capabilities: their skill, their understanding of context, and purpose. Managers are helping "develop these muscles' [in their associates] while creating a learning zone at the same time. - -Listen to DeLisa describe the importance and benefits of managing with open values - -**Heidi:** In this way, managers are creating their own succession plans, because there isn't an us/them context that some conventional organizations have about leadership. In my experience working at conventional organizations, there is a distinct disjointedness between leaders and associates—either you are In the club, or you are not. Where there are open values, leaders and associates are one and the same, or at least the boundary is less distinct. - -**DeLisa:** When I took this job, everyone was a leader. You might be a manager, a _role_ that manages people, but everyone was expected to be a leader. We have tried to carefully define "leader" so that we don't lose the concept and impact the meritocracy. - -**Heidi:** We've talked a little bit about the growth of Red Hat, and I wonder how you and your team have scaled the role of manager, and managing with open values, across the large and growing organization. What does it look like and what strategies are you working on? - -**DeLisa:** As you know, things always look and work a little differently at Red Hat. [Our competency model][6], for instance, helps people know what good looks like in their roles, and then we created the Open Decision Framework to help leaders make decisions in an open way. But we found that managers didn't understand what was expected of them in an open organization. Some brought with them ways of working from their former companies. And yet, as a people manager, they are a key leverage point for Red Hat, essentially responsible for supporting talent. The experience of the associate is greatly influenced by their manager and when you don't have managers who don't manage with open values, then the associates are not getting the full experience of working at an open organization. - -We started at the beginning, asking ourselves ["If everyone is a leader, do we even need people managers?"][7] And we decided we needed the manager role. There are too many operationalization points regarding hiring, development, performance, etc. Our next step was the practices (do's and don'ts) and mindsets for managers. The Do's and Don'ts were communicated to Red Hat as a whole to get feedback, including all the geos, using a global face-to-face tour. These became the six Open Management Practices. - -**Heidi:** Of the six Open Management Practices, which do you feel is most important? - -**DeLIsa:** Probably the one that is most important to us today is "Creating an environment of respect, belonging, and mutual support." It is foundational for meritocracy and the idea that people can contribute even if their style of thinking, language, or remote work are differences. People need to feel like they belong because every associate has to feel comfortable contributing at our very, very best. This is on my mind all the time because there is a lot of research about it, one book for instance is _The Fearless Organization_ by [Amy C. Edmonson][8]. Meritocracy is not just "being nice." It is linked to the learning organization—fail fast and often— and this is how the world's problems are getting solved these days. - -**Heidi:** So we've talked about how the Open Management Practices benefit both associates and managers, and I'm curious about the topic of accountability. How is Red Hat helping to make managers and associates accountable for using these practices? - -**DeLisa:** That's a great question and a hotly debated topic within my team. Part of the genesis for the Open Management Practices was to create accountability between associates and managers. We asked ourselves "how can we help people to want to be accountable?" We can't legislate this. These practices can't be done "because the People team told me to." We need to inspire ownership, so we made the idea of ownership part of the workshop conversation. The tool helps build a competence—"what good looks like"—by defining the practice. So, the People team asked managers, "Once you are enabled, would you be committed to these practices?" and 97% said "yes"! Therefore, we focused on enabling them knowing that the ownership and accountability would follow. - -Listen to DeLisa describe how managers and associates co-created the Open Management Practices - -In addition, the No. 1 request in the workshop was for a 360-degree feedback mechanism. We are excited to partner with TILT365 [Red Hat's vendor for personality style testing] to create a multi-factor survey that helped identify a questionnaire for management feedback. This makes the whole model and process very transparent. Associates know what the do's and don'ts for management practices are, and managers have feedback; leaders can support development plans for their managers. All this creates a full, virtuous cycle because the Open Management Practices created a path for managers to commit to their own development. - -Listen to DeLisa describe how managing openly can increase commitment and accountability - -**Heidi:** That's really interesting! I can see how the definition of the practices helped people understand what they were committing to, and the workshops and using the Open Decision Framework to get feedback from Red Hatters at all levels, helped to create the commitment needed in a natural way, as an obvious extension of the activity. - -DeLisa, thank you for your time! I appreciate your taking the time to speak with me today. - -**DeLisa:** I appreciate it, your time, and your interest in this! Thank you for having me. - --------------------------------------------------------------------------------- - -via: https://opensource.com/open-organization/20/6/open-management-practices - -作者:[Heidi Hess von Ludewig][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/heidi-hess-von-ludewig -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/BUSINESS_meritladder.png?itok=eWIDxnh2 (Media ladder) -[2]: https://opensource.com/open-organization/20/5/commitment-engagement-org-psychology -[3]: https://github.com/red-hat-people-team/open-management-practices -[4]: https://opensource.com/open-organization/resources/open-decision-framework -[5]: https://opensource.com/open-organization/17/9/rediscovering-your-why -[6]: https://github.com/red-hat-people-team/red-hat-multiplier -[7]: https://opensource.com/open-organization/18/10/understanding-engagement-empowerment -[8]: https://www.hbs.edu/faculty/Pages/profile.aspx?facId=6451 diff --git a/sources/talk/20200614 Who is the glue person on your team.md b/sources/talk/20200614 Who is the glue person on your team.md deleted file mode 100644 index 9c855b01e6..0000000000 --- a/sources/talk/20200614 Who is the glue person on your team.md +++ /dev/null @@ -1,113 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Who is the glue person on your team?) -[#]: via: (https://opensource.com/open-organization/20/6/glue-person) -[#]: author: (Lauri Apple https://opensource.com/users/lapple) - -Who is the glue person on your team? -====== -How to identify and utilize the role of a clear-headed, storyteller on -your team. -![Business woman on laptop sitting in front of window][1] - -Here's a test: how long do you think it would take for your organization to kickstart a brand new effort? A few days? A week? - -How ready would your teams be—do they already know how to roadmap, align, prioritize, and coordinate with each other? - -Are your teams successfully ending any wasteful activities? These might include running unused AWS stacks, building the same thing twice, or consistently preferring tactical, localized optimizations over strategically collaborating with other teams. - -If your organization has such activities in motion, you're probably on the right track. If not, that's a warning signal that your team is lacking some core capabilities you'll need for successfully launching any new endeavor, pandemic or not. - -Does your organization allow your [glue people][2] to develop those core capabilities, or are you pressuring them to stay in their boxes? - -### Zombie scrum, velocity counters, clipboard dogmatists, and other occupational hazards - -Not long ago, on a lark, I interviewed for some freelance project management work with a US-based company. The experience was bizarre. The recruiter, who expressed all the enthusiasm of a bowl of cold pea soup, asked me to do tasks that require much more time and context than what was allotted, even to achieve the goals at a mediocre level. I was penalized for stating that I have never seen scrum by the book—aka [zombie scrum][3]—succeed in any organization. And I was somewhat scolded for asking analytical questions that, in my experience, are critical to driving focus and clarity. - -I didn't get passed to the next stage of the process, in part because the recruiter said my zombie scrum comment was a red flag. I took that as a compliment. But I also felt sorry for any project manager—or scrum master, agile coach, or any other creative person—who's made to apply cookie-cutter solutions to situations that require listening, empathy, and creativity. "Follow the book" is a simplistic, anti-intellectual way to crush innovation and generates stereotypes about professionals whose valuable work aims to glue teams, departments, and narratives together. - -Countless books, articles, and tweets from frustrated agile practitioners have been written about the tendency of many companies to pick an agile framework and force it to stick. A well-meaning company picks scrum, then instantly gets dogmatic about it and hires a bunch of scrum masters to hold the required ceremonies. In this environment, it's easy for the scrum masters to tie their competence to existing certifications instead of growing and expanding their skills into areas like psychology or conflict resolution. The company then puts a bunch of additional requirements on top of their framework of choice—checklists, team working agreements that look a certain way, mandatory JIRA fields separating "internal work" from "external work" (whatever that means). - -Maybe this stuff works somewhere? I have never seen it. - -There's never a good time to pressure your people to dumb down process and now is especially not a good time. Your organization needs even more of what makes a highly effective glue-person: - - * Pragmatism - * Objectivity and a habit of identifying assumptions - * Communication skills, which most tech companies struggle with even in calm times - * Good listening skills - * Pattern detection - * Research skills - * Neutrality and diplomacy - * Strategic mindset over tactical, quick-fix, trees-for-the-forest thinking - - - -If you're not supporting your team in valuing and encouraging these attributes in your people—regardless of whether their job title includes "agile" or not—please start now. - -Of course, some people who take on "agile practitioner" roles actually prefer to be dogmatists, by-the-book folks, and bug counters. In that case, you have two options: either see if they're willing to explore different approaches to their work, or, if they're not, explore other people. - -### Know your PMO - -If you hear teams grumble that your project management office (PMO) is a bunch of non-technical clipboard people who block progress, challenge those biases. Maybe your PMO really is ineffective; some are. But maybe there's a different issue at work—either micromanaging on their part or lack of accountability on the rest of the organization's part. - -A friend described to me a situation in which the two engineering executives in their company constantly complained about the PMO, for reasons that were never clear. What was clear was that the engineering executives did not value transparency or accountability. Meanwhile, my friend stated that many people in the company swore that without the PMO, nothing would have gotten done within any reasonable amount of time. After a leadership change, the engineering executives were replaced; the PMO remained. - -If the issue is with the PMO, consider coaching the team to be more effective. This can be done through a retrospective or, if you have time, one-on-ones. I have been lucky enough to work in three organizations with high-performing PMO organizations. They framed conversations with teams to similarly focus on goals and broader developments taking place around them. They were empathetic—trying to understand why programs lagged behind, instead of blaming or nagging. They were focused on producing value—aligning teams, making work transparent, keeping meetings well-organized and constructive, and asking pragmatic questions that averted disasters or surfaced gaps in strategy. - -Instead of checking in to see if people were doing their work, they helped teams find out ways to help each other. In many cases, they helped drive knowledge exchange to cross-pollinate new ideas and solutions either by running effective meetings or hosting dedicated conversations. - -If the issue is with your organization, work with the PMO to see how your leadership team can become better advocates for PMO work. Sometimes the issue for PMOs is a lack of public relations and reputation management. Sadly, PMOs can become the canvases upon which disgruntled parties project everything they're mad about, and this really isn't helpful to anyone. Neither are out-of-the-box expectations that PMOs can solve product strategy problems when product managers abdicate responsibility, or solve your technical architecture, or resolve every conflict between two engineers. Your organization might simply be misapplying your PMO power in ways that reinforce existing biases or misunderstandings of their work. Find ways to stop that. - -As a PMO of one person, I work closely with stakeholders across my organization to break down complexity, clarify outcomes, and track work-in-progress through lightweight visualizations. It's all storytelling. I work closely with our agile coaching team, laying the groundwork with delivery teams to form a coherent vision for what to build, then collaborating with the coaches to work with specific teams to boost performance and ensure better flow on that vision. It's not wizardry, and I've recycled it from what other successful PMOs have shown and taught me over the years. It seems to work. - -### Give your agile coaches and scrum masters meaningful metrics - -"I thought agile coaches just measured velocity and story points, and scrum masters do the same but also keep JIRA updated," more than one person on earth has said. How did they reach this conclusion? Possibly by working in an organization that asked coaches and scrum masters to focus on output instead of value. Maybe those organizations didn't expect or even care if the coaches demonstrated their effectiveness; the coaches and scrum masters were there to serve a purpose, like security blankets of agility. - -Story points and velocity are worthless metrics if the work delivered isn't valuable. So is counting the number of retrospectives, or counting the decline in the number of bugs per team (easily gamed), or the amount of time spent pair programming. These metrics do not necessarily tell a coherent story about your organization, and they do not help the coaches and scrum masters grow. - -I like [this list of agile coach metrics by Andy Sio][4]: measure impact by looking for evidence of efficiency, or reducing meetings, or collecting data points around teams using coaches' suggestions to make improvements. For the scrum masters, Ryan Ripley invites leaders to [rethink the role][5] as one of service, challenging the status quo. Find someone else to update the JIRAs and take the notes. - -Maybe you're cool with empowering coaches and scrum masters, but now you're asking, "we have product managers and business analysts—why do we need coaches to do this?" Because dysfunction in delivery is usually systemic. It's about a confluence of discussions, decisions, communications, and other bits and pieces of work going awry, slowly at first, until it all adds up to become A Bigger Problem. - -A coach can help your product managers, analysts, and devs surface those Bigger Problems, understand the root causes, and find more effective alternatives to right the ship. If urgent enough, this can mean the difference between success and failure. For example: - - * How effective can a scrum master assigned to two or three teams possibly be if those teams are facing a constant barrage of "this is urgent!" work chucked in from the leadership team? - * How can a team align with other teams, if those teams aren't sharing roadmaps? - * How can engineering and product remain aligned if there are two competing roadmaps? - * If you're facing Coronavirus, will your product managers, devs, and analysts have time to unpack all of this systemic dysfunction, or could they use a little help? - - - -Identify the "glue people" in your organization and find ways to leverage them through focused programs dedicated to one or two outcomes at most. Consider forming a "community of practice," an informal setting (Lean Coffee or other formats) for them to share best practices or highlight and resolve process-related needs in the organization. - -If your glue people are already overwhelmed, consider hiring more of them. This might sound counterintuitive if you're laying people off, but what costs more—hiring one program manager to do the job well, or having ten developers and product managers do the job with less focus, while not doing their usual jobs? - -Hopefully, you're able to identify the people in your organization who can connect the dots, tell your story, and bring everyone together. Maybe you've even hired people specifically to mind your processes and haven't laid them off yet. Please don't! They might save you and everyone else in your company. But only if you empower them. - -If you're starting something from scratch, support your glue people in keeping everyone else from losing the plot. Then you build a culture of maintaining the plot. It's easier to iterate and improve upon such a culture when it's the foundation of your new initiative or product than to force it after developing lots of antipatterns and worst-practice habits. Sure, incremental change can bring teams and organizations back on track—but why tolerate being off-track in the first place? "Going faster at the beginning" isn't a good reason; you can go super-fast and be experimental and still hold your team together. - -Process can be simple and lightweight—in fact, it should be. But it can't be solved simply by putting some meetings in a calendar and writing everything down in Confluence. It has to be customized and curated, created to achieve and sustain flow, and designed to be adapted depending on what's necessary. Otherwise, it will be an obstacle and a waste of time instead of an aid, and people will hate it. And it probably won't come from following scrum by the book, or anything by the book. - --------------------------------------------------------------------------------- - -via: https://opensource.com/open-organization/20/6/glue-person - -作者:[Lauri Apple][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/lapple -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/lenovo-thinkpad-laptop-concentration-focus-windows-office.png?itok=-8E2ihcF (Woman using laptop concentrating) -[2]: https://opensource.com/open-organization/20/6/glue-team -[3]: https://www.scrum.org/resources/blog/zombie-scrum-symptoms-causes-and-treatment?gclid=EAIaIQobChMI97Cr6v-96QIVFO3tCh25RgrWEAAYASAAEgIgYfD_BwE -[4]: https://www.strategicquadrant.com/blog/how-to-measure-your-successas-an-agile-coach/ -[5]: https://enterprisersproject.com/article/2020/4/scrum-master-role-how-rethink diff --git a/sources/talk/20200616 Changing the world with open source- GNOME president shares her story.md b/sources/talk/20200616 Changing the world with open source- GNOME president shares her story.md deleted file mode 100644 index 98ddcd364c..0000000000 --- a/sources/talk/20200616 Changing the world with open source- GNOME president shares her story.md +++ /dev/null @@ -1,164 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Changing the world with open source: GNOME president shares her story) -[#]: via: (https://opensource.com/article/20/6/nuritzi-sanchez-interview) -[#]: author: (Don Watkins https://opensource.com/users/don-watkins) - -Changing the world with open source: GNOME president shares her story -====== -GitLab's new senior open source program manager and founding team member -of Endless OS shares her vision for using open source to improve -society. -![Globe up in the clouds][1] - -Growing up in Silicon Valley, [Nuritzi Sanchez][2] saw the powerful impact software can make on the world. Yet, unlike many others who were also steeped in the tech industry, her journey has taken her into the world of open source, where she is contributing to that impact. - -After graduating from Stanford University with a degree in International Relations, she ****became a founding team member of open source computing company [Endless OS][3], served three terms as president and chair of GNOME's board of directors, and in February 2020 was hired as the senior open source program manager (OSPM) at GitLab. - -I am impressed by this talented woman, and I reached out to her to learn more about her and her work. I believe you will also be fascinated with her journey after reading our interview, which has been lightly edited for clarity. - -**Don Watkins:** How did you get started with open source? - -**Nuritzi Sanchez**: My first experience with open source software was using an Ubuntu-based computer at an immigration law clinic when I was interning there as an undergrad. I remember being really surprised that something other than Macs and Windows existed. I had a good experience using the Ubuntu machine. - -Later, in 2012, I helped start a company called [Endless][4] that aimed to make computing universally accessible. By leveraging the power of open source software, we wanted to create computers that were great for users that had little to no access to the internet or were new to computers. - -As I deep-dived into that world, I was amazed by how vast the open source application ecosystem is. In my college years, I had become an Apple fangirl, and I immediately noticed the difference in user experience and design. Thanks to the CEO and founder's strong interest in great design, Endless was created from the beginning to delight users. Our team hoped to bring more user-centered design to the Linux desktop world. - -![GUADEC 2015 newcomers' event][5] - -GUADEC 2015 newcomers' event (Nuritzi Sanchez, [CC BY-SA 4.0][6]) - -In 2015, I gave my first talk at [GUADEC][7] (the GNOME community's largest conference) about [adapting GNOME for the developing world][8]. I didn't know what to expect going into the conference since that was the first time I'd attended an open source software event, and I was incredibly impressed with how friendly and welcoming the GNOME community was. The newcomers' and social events helped me bond with the existing community, and when I attended a Birds of a Feather (BoF) session, I noticed that my project management and leadership skillset was immediately useful. Even though I was new to the community and was not an engineer, I felt like I could immediately contribute. I wished I had known about GNOME and the open source world years before! - -**DW:** What is the power of open source for you? - -**NS**: Open source software helps democratize the world and enables us to solve the challenges we know best. You can build on top of the work that others have done in order to solve unique challenges around you instead of having to recreate something completely from scratch. It thus spurs innovation. - -Since a lot of open source software is not only free as in philosophy but also free as in price, it also gives people who may not otherwise be able to afford it access to tools that are essential to be part of the modern workforce. - -**DW:** How did your family background drive your interest in open source? - -**NS**: My parents are from Mexico, and when we visited family there, I was struck by the differences between where I was growing up, in the Silicon Valley, and where my parents were from. Sometimes we would visit towns where people had cardboard instead of windows, elderly people were sitting in the heat trying to sell artisanal goods they made, and poverty was visible in every corner. I heard heartbreaking stories about the struggles that people were facing, and as an empathetic kid, that all greatly impacted me. I wanted to do something to help. - -During my undergraduate years at Stanford, I really struggled to find just one thing that I was interested in. I was drawn to social impact initiatives, but I wanted to help people be healthier, have access to great education, find jobs, and feel fulfilled. I basically wanted to do _all the things_. This led me to explore many potential career paths through internships. - -Unsurprisingly for someone who grew up in the Valley, I ended up believing that getting involved with software was the best way for me to make a huge impact. I saw how just a small team could create software that was used by millions of people and could impact their lives. It seemed like a superpower. I then became enamored with open source software because of all the reasons I've mentioned above. As a bonus, open source software usually already has an international community, and as I've gotten more involved, I've been keen on helping to expand its reach. - -**DW: How has your involvement with Endless shaped your vision and direction?** - -**NS:** One of the things that I loved about Endless is how much the team valued getting to know its users. Every employee was able to go to one of Endless' target markets and do in-field research. We were able to meet people whose lives we were actually being impacted by our work. - -My time at Endless allowed me to travel and become immersed in different cultures to an extent that I wouldn't have had otherwise. I sometimes spent several months in a target market when I was helping with special initiatives. I met people from the international open source community who are extremely dedicated to the open source philosophy—and I also learned more about the challenges they face when contributing. - -![Endless OS user testing in Guatemala][9] - -Endless OS user testing in Guatemala (Nuritzi Sanchez, [CC BY-SA 4.0][6]) - -The other theme is the importance of user-centered design. I'm very grateful to have been part of a team with extremely talented designers and executives that believed that great design was essential. Our COO attended the [Stanford d.school][10] and helped infuse the company with an appreciation for design thinking. Similarly, our CEO had a sharp eye for things being pixel-perfect and always challenged our designers to create beautiful software. I developed a certain aesthetic and a deep appreciation of the design process. My time at Endless helped me appreciate some of the unique challenges that designers face when trying to contribute to open source software. - -**DW:** Diversity and inclusion are really important to you. How does diversity improve products and communities? - -**NS**: Diversity of thought is something incredibly important when solving any kind of challenge. In order to do that, you need to bring in people from diverse backgrounds. New perspectives often bring new insights or new ideas into the mix. - -One of the tangible examples I have from my time at Endless is when we were working in Indonesia and wanted to do user research there to better understand the market. One of our Endless Ambassadors, Siska, belonged to a group of housewives that met regularly, and she introduced Endless at one of their meetings. Many of the housewives who attended got really excited about Endless and told their partners and children about it. Being great networkers, some of them helped us find people for our user research studies and became evangelists of our product in their communities. It was something that, at least to me, wasn't a normal path to take, and it was something that was hugely beneficial. - -![Meeting with open source community members in Indonesia][11] - -Meeting with open source community members in Indonesia (Nuritzi Sanchez, [CC BY-SA 4.0][6]) - -**DW:** What led you to leave Endless and move to GNOME? - -**NS**: Endless did a lot of things right, and it still faced a lot of the challenges that all open source desktops face in a world that is [dominated][12] by Microsoft. Endless had to make some hard choices about how to evolve its strategy and also started to explore some new ideas—like how to make Endless a great platform to teach children how to code. It was during this time that we parted ways, but I continue to be a huge fan and still use Endless OS on my personal computer. - -I ended up taking some time off after Endless to travel and to continue my third term as the president and chairperson of the board of directors at GNOME. - -![Women Who Code Taipei event][13] - -Meeting with Women Who Code Taipei (Nuritzi Sanchez, [CC BY-SA 4.0][6]) - -**DW:** GNOME experienced tremendous growth during your tenure. What do you attribute that to? - -**NS**: There were many things that factored into the growth we saw during my tenure. Here are the most important ones: - - * **Improving the newcomer's story:** Carlos Soriano, Bastian Ilso, and Christian Hergert, in particular, really helped set GNOME's momentum in motion by working on a newcomer's guide for code contributors. They developed the workflows and tools that made an immediate impact on our community's growth. Later, Carlos led an evaluation of tooling and helped GNOME find GitLab as the solution to further simplifying the contribution process. - - * **Broadcasting our story and promoting our brand:** As part of the Engagement team, I helped to amplify our work on the newcomers initiatives and helped to build our brand and online presence. GNOME's work on improving the newcomers' story gained a lot of interest within the wider community and brought about new interest in the GNOME project, and we used that to help build the sense that GNOME was in forward momentum. Marketing, brand, and dedicated community-building are really important for open source organizations. - - * [**Flatpak**][14]**,** [**Flathub**][15]**, and** [**Builder**][16]**!** There were several technological innovations that helped propel GNOME forward. For example, Flatpak and Builder helped to make creating a GNOME app easier than ever, and users were able to find and install apps directly from Flathub. These innovations were _huge_ because they made it possible for anyone to create and enjoy great Linux desktops. Furthermore, it helped unify the Linux desktop community a bit since any distribution that enabled Flatpak apps could benefit from easier distribution and management of apps. - - * **Hiring an** **executive** **director (ED):** GNOME had been without an ED for several years before I joined. With the help of a hiring committee, the board soon interviewed several highly qualified candidates for the ED position. Leveraging my startup experience in hiring, I worked with our vice president at the time to figure out all the logistics behind hiring our first-ever non-US employee and closing the loop. We soon announced that Neil McGovern would join as the GNOME executive director. This was an important step for us since the board had absorbed the ED's responsibilities while the position was unfilled. Since the board was elected annually, that meant that planning long-term, strategic initiatives was rather difficult because of turnover. - - * **Dreaming new dreams:** While I'm biased, I do think that Endless' new perspective helped the GNOME community to dream a new dream and start creating GNOME for a user beyond the "typical Linux desktop user." This meant working on features that enabled a less tech-savvy, more design-sensitive, and less-connected user. Since Endless worked heavily upstream, GNOME experienced an influx of contributors from Endless' employees and Endless' ecosystem. This, combined with the newcomers' story, helped propel GNOME into an era of being more accessible to more people around the world. This also helped attract donations from organizations, including a $1 million pledge that helped GNOME dream new dreams. As part of that, the board decided that expanding the GNOME Foundation would help sustain GNOME's momentum and that employees would be hired for the first time ever to work directly on aspects of the project, like on GTK and event planning. - - * **Restructuring the** **GNOME** **Foundation:** One of my short-term goals upon hiring our executive director was leading the board of directors to be more of a strategic entity and allowing the day-to-day work to be handled by employees. I proposed having a board hackathon so that we could set aside time to do some strategic planning, reassess how we did budgeting, and also work on important initiatives that often got pushed to the side. The first hackathon was a success, and it's now an annually recurring event. Once the employees had been hired, we worked on transferring responsibilities to them and helping to integrate them into the larger community. There were some challenges we faced along the way, but overall, this went smoothly, and the community was excited about seeing the Foundation grow to support its needs. - - * ![Linux App Summit 2019][17] - -Linux App Summit 2019 (Nuritzi Sanchez, [CC BY-SA 4.0][6]) - -**New policies to enable growth:** While on the board, I helped with some initiatives that also helped us build momentum. Two such policies were our [Code of Conduct][18] and our [Travel Policy][19]. These two helped make the GNOME community more inclusive and helped show that GNOME cares about continuing to build a great and diverse community. - - * **Linux App Summit:** Finally, another thing I think helped was the work we did around creating a new conference, the [Linux App Summit][20]. While the conference started in 2016, in 2019, we joined forces with KDE. This doubled attendance and showed the world that KDE and GNOME could work together towards a greater purpose. As part of the founding team of that conference, I'm very proud of our work there. - - - - -**DW:** You've recently moved to GitLab as senior open source program manager (OPSM). What are you doing there? What are your short-term and long-term goals there? - -**NS**: I am thrilled to be at GitLab! My main focus right now is on the [GitLab for Open Source][21] program, which offers our top tiers for free to qualifying open source projects. As part of that program, we also help large open source organizations with their migrations (GNOME, KDE, Drupal, etc.). I'm working on formalizing aspects of the program and streamlining processes that will allow us to scale the program. - -![GitLab's community relations team][22] - -GitLab's community relations team (Nuritzi Sanchez, [CC BY-SA 4.0][6]) - -As I work on this program, I'm being exposed to new open source communities, and I'm learning more about the DevOps world. It's been incredibly rewarding already! My hope is to help make GitLab the best place for open source organizations to thrive at scale, and in order to do so, there are many pieces involved. I see myself advocating for features that are important to open source projects, facilitating communication between our community and our internal team, and working with the community relations team to help make it a great experience to be part of our community. Apart from that, one thing that I've been interested in is how to help make open source more sustainable, so I'm keen on continuing to learn about and explore that topic. Last but not least, I’m also very excited about the work that the CHAOSS community is doing on creating metrics to measure the health of open source communities. I recently joined a new working group there to create a set of metrics that foundations like GNOME and KDE can use to measure their community’s health. - -**DW:** Would you recommend other open source companies have OSPMs? What about non-open source companies? - -**NS**: Since software is eating the world, and open source software is eating the software world, I absolutely would encourage companies to devote more resources into understanding their dependency on and growing their involvement in open source software. - -If a company is just starting off or isn't able to have an open source program office (OSPO) right away, having an open source program manager is a great entry point. These early hires can help lay down some initial structure and work on high-priority initiatives relating to the open source work that the company is doing or wants to participate in. This can later turn into a larger program office if and when the company is ready for that. - -* * * - -I appreciate the time Nuritizi took to share her journey with me and the work she's doing to support open source and the communities that build up around open source projects. If you'd like to learn more about her, I recommend you join me in following her on [Twitter][2]. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/6/nuritzi-sanchez-interview - -作者:[Don Watkins][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/don-watkins -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/cloud-globe.png?itok=_drXt4Tn (Globe up in the clouds) -[2]: https://twitter.com/1nuritzi -[3]: https://opensource.com/article/18/2/meet-endless-os-lightweight-linux -[4]: https://endlessos.com/home/ -[5]: https://opensource.com/sites/default/files/uploads/guadec_2015.jpg (GUADEC 2015 newcomers' event) -[6]: https://creativecommons.org/licenses/by-sa/4.0/ -[7]: https://events.gnome.org/event/1/ -[8]: https://www.youtube.com/watch?v=qs5J_IWSmiE -[9]: https://opensource.com/sites/default/files/uploads/endless_usertestingguatemala.jpg (Endless OS user testing in Guatemala) -[10]: https://dschool.stanford.edu/ -[11]: https://opensource.com/sites/default/files/uploads/indonesiacommunitygathering.jpg (Meeting with open source community members in Indonesia) -[12]: https://en.wikipedia.org/wiki/Usage_share_of_operating_systems -[13]: https://opensource.com/sites/default/files/uploads/womenwhocodetaipei.jpg (Women Who Code Taipei event) -[14]: https://flatpak.org/ -[15]: https://flathub.org/home -[16]: https://wiki.gnome.org/Apps/Builder -[17]: https://opensource.com/sites/default/files/uploads/linuxappsummit2019.jpg (Linux App Summit 2019) -[18]: https://wiki.gnome.org/Foundation/CodeOfConduct -[19]: https://wiki.gnome.org/Travel -[20]: https://linuxappsummit.org/ -[21]: https://about.gitlab.com/solutions/open-source/ -[22]: https://opensource.com/sites/default/files/uploads/gitlab_cr-team.jpg (GitLab's community relations team) diff --git a/sources/talk/20200619 What do Paketo Buildpacks Mean for Developers and Operators.md b/sources/talk/20200619 What do Paketo Buildpacks Mean for Developers and Operators.md deleted file mode 100644 index 77ed828a9d..0000000000 --- a/sources/talk/20200619 What do Paketo Buildpacks Mean for Developers and Operators.md +++ /dev/null @@ -1,83 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (What do Paketo Buildpacks Mean for Developers and Operators) -[#]: via: (https://www.linux.com/audience/developers/what-do-paketo-buildpacks-mean-for-developers-and-operators/) -[#]: author: (Swapnil Bhartiya https://www.linux.com/author/swapnil/) - -What do Paketo Buildpacks Mean for Developers and Operators -====== - -Cloud Foundry Foundation recently announced the launch of [Paketo Buildpacks][1] for cloud native developers and operators. But what’s the difference between Cloud Foundry’s Packet and the Buildpacks announced by CNCF? What does it mean for developers who are already using buildpacks? What kind of community is Cloud Foundry look at building around Paketo? What does the roadmap look like? - -To get answers to these questions and deep dive into Paketo Buildpacks, [Swapnil Bhartiya][2], Founder of TFiR.io spoke with Chip Childers, Executive Director, Cloud Foundry Foundation and Kashyap Vedurmudi, Product Manager at VMware. - -_Here is a lightly edited transcript of the interview:_ - -**Swapnil Bhartiya: Today we have two guests, Kashyap Vidurmudi, product manager at VMware, and Chip Childers, executive director of Cloud Foundry. Today we are going to talk about the recently announced Paketo Buildpacks. I don’t want to get into that old debate about Docker files versus Buildpacks, but there are two things that I do want to talk about before we talk about Paketo in specific – compliance and security. How does Paketo Buildpacks solve these two problems?** - -Kashyap Vidurmudi: So, we have a couple of things. We are constantly shipping Buildpacks just whenever upstream security vulnerability comes out, a new language family version, things like that. So Buildpacks make it much easier especially for enterprise users just to continuously make sure that their apps stay up to date, and secure, and compliant. So this is I think a huge value proposition of what Buildpacks offer versus using Docker files to run your apps and to build your apps and production. - -Chip Childers: The history of the Cloud Foundry project is, it’s been using Buildpack since nearly the beginning of its inception, originally at VMware, right, before it took it to journey to pivotal and then the CFF. So Buildpacks have demonstrated their value when used with a platform that’s able to implement them effectively, a few times, right? In particular, I’m thinking about the OpenSSL Heartbleed vulnerability. I found that to be a great example of when languages and runtimes don’t embed too many things in their distribution statically, then you’re able to use the Buildpack process to roll out security patches to these really important underlying libraries very quickly. - -Chip Childers: As an example, Kashyap said that the buildpack project with Paketo Buildpacks, they’ve always been keeping up to date with all their critical vulnerabilities or high vulnerabilities from all the languages and frameworks that get pulled together. We had the OpenSSL update rolled out to the whole ecosystem and it managed to percolate through all the platforms that had the CF Buildpacks embedded in them very quickly, like in a matter of days. And it was really smooth. The only hiccup back then was that no JS actually included the OpenSSL library in its own distribution. So I think it was about a month or so after Heartbleed that they split that out and then Buildpacks could be more effective at helping to support some of these underlying libraries. - -**Swapnil Bhartiya: Thanks for explaining that. If I’m not wrong, last year, CNCF also announced a Buildpack project. What is the difference between what CNCF is doing there versus what you guys are trying to do?** - -Kashyap Vidurmudi: That’s a great question and probably the biggest question we’ve been getting asked with this whole launch. So the CNCF Cloud Native Buildpacks project, they built the underlying specification and tooling needed to build a Cloud Native compliant Buildpack. Or the Paketo Buildpacks project is just a set of language family implementations on top of these Cloud Native Buildpack specifications. So we build implementations when we launched the other day, we have Java, node.js, PHP, .NET Core, and probably a couple of others that I’m missing, Buildpack implementations on top of that spec. - -**Swapnil Bhartiya: And why do you call it Paketo Buildpacks, the specific reasons for this naming?** - -Kashyap Vidurmudi: That’s a great question as well. To be completely honest with you, our whole engineering team went through about two different naming exercises just to generate different names for Buildpacks. At a team lunch, a couple of months ago, someone came up with the Paketo, which translates to Greek and… Sorry, it translates to package in Greek. What we really liked about it was Kubernetes translates to pilot and Greek, and we liked that with Paketo translating a package in Greek. We can come off with the association that Paketo packages your apps as container images that any Cloud Native platforms similar to Kubernetes can work as straight. So the name stuck at the end. - -**Swapnil Bhartiya: Talk a bit about the collaboration between Cloud Foundry and VMware for this project.** - -Chip Childers: I want to start probably by saying, the kind of Buildpack project is a Cloud Foundry Foundation project, right? And so what that means is it’s the same engineers and contributors that are working on the traditional Cloud Foundry. Buildpacks are building the Paketo Buildpacks collection, right? So you get all their past experience as a community building and maintaining, and keeping up to date these new Cloud Native Buildpack compliant things. One of the goals of the project team, which I’m sure Kashyap could share a little bit more about as well, is that traditionally the Cloud Foundry Buildpack collection has seen the majority of the effort that was put into maintaining it coming from pivotal. - -There were certainly a lot of casual contributors, but it was something, that pivotal bore the full burden on. And we think that it’s incredibly important that now that the Cloud Native Buildpacks spec can be used in many different platforms. That a lot of participants rally around this because it’s an opportunity to get really high-quality Buildpack code brought into whichever platform you’re using, whether it’s Tecton, or it’s Google Cloud run, or whether it’s the CF [inaudible 00:07:06] distribution of Cloud Foundry. There are going to be a lot of end-users that should be able to amplify the feedback loop back to the project team. And we’re very open to new contributors there. - -**Swapnil Bhartiya: What kind of community are you planning to build around these Paketo Buildpacks and what will be the resources available for the community to build and consume these Buildpacks?** - -Kashyap Vidurmudi: I think just to add on a little bit to what Chip said, the community is super important for us with this whole Paketo Buildpacks launch. I think what we’re looking for ideally is a mix of vendors helping us out similar to what Cloud Foundry Foundation has had in the past, as well as individual contributors. And what’s super exciting to see is we just launched a couple of days ago and we’re already seeing a bunch of people reaching out, and trying out Paketo Buildpacks, and interested in contributing. We’re seeing that maybe people might be interested in helping us develop a Python, Paketo Buildpacks, which is really cool to see. To answer the second part of your question around a marketplace or some ecosystem, I think in the future, that would be super cool to have something like that. In the short term, what we’re doing is we have with this concept of builder images where a builder is effectively a set of Buildpacks, Paketo Buildpacks that are packaged in there. So we ship our builders onto a GCR registry that users can then use to consume our Buildpacks. - -**Swapnil Bhartiya: Is there any specific Buildpacks that will be available or you’ll be focusing on to start with?** - -Kashyap Vidurmudi: Yeah. When we launched the other day, we officially have Java, node.js, .NET Core, PHP, and Nginx Paketo Buildpacks available at the moment. We’re currently just getting started around a Ruby Paketo Buildpacks and looking into publishing some official project-wide roadmap in the future to show what’s coming next. - -Chip Childers: I think that’s another really good opportunity for people to get involved. As you said, there’s been interest organically in helping to add Python as a Buildpack. There’s a very long tail of different languages and frameworks that are used in the enterprise context. And so Paketo Buildpacks was going out the door with a set of Buildpacks that basically solved the majority of enterprise development use cases, right? Python is used very heavily, but it’s a little bit less than Java, right? And so the tail starts to drop a little bit. But there’s a lot of opportunity in those languages and frameworks that the Paketo Buildpacks project team hasn’t created on their own. But those same patterns can be followed for languages that might be maybe less used. - -As the community grows around, not just the Cloud Native Buildpacks spec, right, because anyone can build a Buildpack to that spec. But I think the practices of the Paketo Buildpacks project lend themselves to quality distribution of a Buildpack, right? If you search and get up for Buildpacks, even if you’re just looking at the past version of the way Buildpacks work, you find thousands of them, right? But some of them are stale, some of them are, they have work. And I think the more important than exactly which Buildpacks are offered today is that the Paketo Buildpacks project is an opportunity for people to come together around the discipline of building quality Buildpacks and then maintaining them over time. - -Kashyap Vidurmudi: Yeah, exactly. That’s a really good point. And I think that over the next coming weeks to months, we’re really focused on improving a lot of our documentation to help enable things like this. We have a couple of tutorials right now just to help users create a Paketo style Buildpack and lots of tools and things like that out there. So my end goal and just sure Chip agrees with this, which is, I’d love to see a user just coming in with very little Buildpack experience and be able to build, say, a Rust Cloud Native Buildpack or something like that very simply and easily and support that. And that’s the end goal of where we want to go in terms of enabling the community to build Buildpacks easily. - -**Swapnil Bhartiya: So what happens to the existing Buildpacks that people are already using?** - -Kashyap Vidurmudi: For Cloud Foundry Buildpacks, we’re going to continue providing support for CF workloads into the foreseeable future. So what we did is we built a concept of a compatibility layer on top of every one of our Paketo Buildpacks, which allow us to ship a Cloud Foundry compatible Cloud Native Buildpack. And that enables your CF workflows to continue to work with Paketo Buildpacks. - -Chip Childers: I think one of the things to understand, and this is where it gets a little bit confusing, right? Buildpacks as a concept has a fairly long history. So it started at Heroku. CF was emulating Heroku, right? It was the open source alternative to Heroku and it implemented Buildpacks in order to have that support. And for a while, they were largely compatible, right? You could take a Heroku Buildpack and you could use that in a Cloud Foundry context or you could do the reverse. And so that worked for a while. The two platforms, right, Cloud Foundry and opensource community. And then Heroku as a product or a platform as a service, that’s all proprietary, they started to diverge, right? So the compatibility within the ecosystem started to break down. - -When the CNCF Cloud Native Buildpacks project kicked off, to me that was actually one of the most important moments in the platform as a service space in a number of years. Because it represented a reconvergence of streams of work and sets of experiences with different end-users that made a ton of sense for everyone. But what that means though, is that the CMB spec is, it’s a new way to build Buildpacks, right? So all that historical work for the CF community building that shim is important, but it’s really critical to understand that a Cloud Native Buildpack, compliant Buildpack is different from a traditional Heroku or Cloud Foundry, older version Buildpack. They’re implemented differently. And so it’s a new generation of them. And that’s where a new ecosystem because there are multiple platforms that don’t support their use, is really going to kick in here. - -**Swapnil Bhartiya: Kashyap, you mentioned there’ll be a lot of resources documentation that would be coming up. What are the resources that are available at this moment that people can either read or go to that to get more aware of the project at the same time, how they can get involved with the project?** - -Kashyap Vidurmudi: Yeah. So right now we have a couple of tutorials out there just around how to get started with Paketo Buildpacks as well as how to go ahead and create your own Paketo Buildpacks. In terms of getting started and helping out and getting involved, I think the best way to get started right now is to join us on Slack, our Slack is Slack.paketo, P-A-K-E-T-O.io, or visit our website and go through the content. The website is P-A-K-E-T-O.io. - -**Swapnil Bhartiya: Chip and Kashyap, thank you so much for taking time out of your schedule and talking to us today about this project. Good luck with that project and thank you once again.** - --------------------------------------------------------------------------------- - -via: https://www.linux.com/audience/developers/what-do-paketo-buildpacks-mean-for-developers-and-operators/ - -作者:[Swapnil Bhartiya][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://www.linux.com/author/swapnil/ -[b]: https://github.com/lujun9972 -[1]: https://paketo.io/ -[2]: https://www.tfir.io/author/arnieswap/ diff --git a/sources/talk/20200628 Roy Fielding-s Misappropriated REST Dissertation.md b/sources/talk/20200628 Roy Fielding-s Misappropriated REST Dissertation.md deleted file mode 100644 index 5906fd1d92..0000000000 --- a/sources/talk/20200628 Roy Fielding-s Misappropriated REST Dissertation.md +++ /dev/null @@ -1,125 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Roy Fielding's Misappropriated REST Dissertation) -[#]: via: (https://twobithistory.org/2020/06/28/rest.html) -[#]: author: (Two-Bit History https://twobithistory.org) - -Roy Fielding's Misappropriated REST Dissertation -====== - -RESTful APIs are everywhere. This is funny, because how many people really know what “RESTful” is supposed to mean? - -I think most of us can empathize with [this Hacker News poster][1]: - -> I’ve read several articles about REST, even a bit of the original paper. But I still have quite a vague idea about what it is. I’m beginning to think that nobody knows, that it’s simply a very poorly defined concept. - -I had planned to write a blog post exploring how REST came to be such a dominant paradigm for communication across the internet. I started my research by reading [Roy Fielding’s 2000 dissertation][2], which introduced REST to the world. After reading Fielding’s dissertation, I realized that the much more interesting story here is how Fielding’s ideas came to be so widely misunderstood. - -Many more people know that Fielding’s dissertation is where REST came from than have read the dissertation (fair enough), so misconceptions about what the dissertation actually contains are pervasive. - -The biggest of these misconceptions is that the dissertation directly addresses the problem of building APIs. I had always assumed, as I imagine many people do, that REST was intended from the get-go as an architectural model for web APIs built on top of HTTP. I thought perhaps that there had been some chaotic experimental period where people were building APIs on top of HTTP all wrong, and then Fielding came along and presented REST as the sane way to do things. But the timeline doesn’t make sense here: APIs for web services, in the sense that we know them today, weren’t a thing until a few years after Fielding published his dissertation. - -Fielding’s dissertation (titled “Architectural Styles and the Design of Network-based Software Architectures”) is not about how to build APIs on top of HTTP but rather about HTTP itself. Fielding contributed to the HTTP/1.0 specification and co-authored the HTTP/1.1 specification, which was published in 1999. He was interested in the architectural lessons that could be drawn from the design of the HTTP protocol; his dissertation presents REST as a distillation of the architectural principles that guided the standardization process for HTTP/1.1. Fielding used these principles to make decisions about which proposals to incorporate into HTTP/1.1. For example, he rejected a proposal to batch requests using new `MGET` and `MHEAD` methods because he felt the proposal violated the constraints prescribed by REST, especially the constraint that messages in a REST system should be easy to proxy and cache.[1][3] So HTTP/1.1 was instead designed around persistent connections over which multiple HTTP requests can be sent. (Fielding also felt that cookies are not RESTful because they add state to what should be a stateless system, but their usage was already entrenched.[2][4]) REST, for Fielding, was not a guide to building HTTP-based systems but a guide to extending HTTP. - -This isn’t to say that Fielding doesn’t think REST could be used to build other systems. It’s just that he assumes these other systems will also be “distributed hypermedia systems.” This is another misconception people have about REST: that it is a general architecture you can use for any kind of networked application. But you could sum up the part of the dissertation where Fielding introduces REST as, essentially, “Listen, we just designed HTTP, so if you also find yourself designing a _distributed hypermedia system_ you should use this cool architecture we worked out called REST to make things easier.” It’s not obvious why Fielding thinks anyone would ever attempt to build such a thing given that the web already exists; perhaps in 2000 it seemed like there was room for more than one distributed hypermedia system in the world. Anyway, Fielding makes clear that REST is intended as a solution for the scalability and consistency problems that arise when trying to connect hypermedia across the internet, _not_ as an architectural model for distributed applications in general. - -We remember Fielding’s dissertation now as the dissertation that introduced REST, but really the dissertation is about how much one-size-fits-all software architectures suck, and how you can better pick a software architecture appropriate for your needs. Only a single chapter of the dissertation is devoted to REST itself; much of the word count is spent on a taxonomy of alternative architectural styles[3][5] that one could use for networked applications. Among these is the Pipe-and-Filter (PF) style, inspired by Unix pipes, along with various refinements of the Client-Server style (CS), such as Layered-Client-Server (LCS), Client-Cache-Stateless-Server (C$SS), and Layered-Client-Cache-Stateless-Server (LC$SS). The acronyms get unwieldy but Fielding’s point is that you can mix and match constraints imposed by existing styles to derive new styles. REST gets derived this way and could instead have been called—but for obvious reasons was not—Uniform-Layered-Code-on-Demand-Client-Cache-Stateless-Server (ULCODC$SS). Fielding establishes this taxonomy to emphasize that different constraints are appropriate for different applications and that this last group of constraints were the ones he felt worked best for HTTP. - -This is the deep, deep irony of REST’s ubiquity today. REST gets blindly used for all sorts of networked applications now, but Fielding originally offered REST as an illustration of how to derive a software architecture tailored to an individual application’s particular needs. - -I struggle to understand how this happened, because Fielding is so explicit about the pitfalls of not letting form follow function. He warns, almost at the very beginning of the dissertation, that “design-by-buzzword is a common occurrence” brought on by a failure to properly appreciate software architecture.[4][6] He picks up this theme again several pages later: - -> Some architectural styles are often portrayed as “silver bullet” solutions for all forms of software. However, a good designer should select a style that matches the needs of a particular problem being solved.[5][7] - -REST itself is an especially poor “silver bullet” solution, because, as Fielding later points out, it incorporates trade-offs that may not be appropriate unless you are building a distributed hypermedia application: - -> REST is designed to be efficient for large-grain hypermedia data transfer, optimizing for the common case of the Web, but resulting in an interface that is not optimal for other forms of architectural interaction.[6][8] - -Fielding came up with REST because the web posed a thorny problem of “anarchic scalability,” by which Fielding means the need to connect documents in a performant way across organizational and national boundaries. The constraints that REST imposes were carefully chosen to solve this anarchic scalability problem. Web service APIs that are _public-facing_ have to deal with a similar problem, so one can see why REST is relevant there. Yet today it would not be at all surprising to find that an engineering team has built a backend using REST even though the backend only talks to clients that the engineering team has full control over. We have all become the architect in [this Monty Python sketch][9], who designs an apartment building in the style of a slaughterhouse because slaughterhouses are the only thing he has experience building. (Fielding uses a line from this sketch as an epigraph for his dissertation: “Excuse me… did you say ‘knives’?”) - -So, given that Fielding’s dissertation was all about avoiding silver bullet software architectures, how did REST become a de facto standard for web services of every kind? - -My theory is that, in the mid-2000s, the people who were sick of SOAP and wanted to do something else needed their own four-letter acronym. - -I’m only half-joking here. SOAP, or the Simple Object Access Protocol, is a verbose and complicated protocol that you cannot use without first understanding a bunch of interrelated XML specifications. Early web services offered APIs based on SOAP, but, as more and more APIs started being offered in the mid-2000s, software developers burned by SOAP’s complexity migrated away en masse. - -Among this crowd, SOAP inspired contempt. Ruby-on-Rails dropped SOAP support in 2007, leading to this emblematic comment from Rails creator David Heinemeier Hansson: “We feel that SOAP is overly complicated. It’s been taken over by the enterprise people, and when that happens, usually nothing good comes of it.”[7][10] The “enterprise people” wanted everything to be formally specified, but the get-shit-done crowd saw that as a waste of time. - -If the get-shit-done crowd wasn’t going to use SOAP, they still needed some standard way of doing things. Since everyone was using HTTP, and since everyone would keep using HTTP at least as a transport layer because of all the proxying and caching support, the simplest possible thing to do was just rely on HTTP’s existing semantics. So that’s what they did. They could have called their approach Fuck It, Overload HTTP (FIOH), and that would have been an accurate name, as anyone who has ever tried to decide what HTTP status code to return for a business logic error can attest. But that would have seemed recklessly blasé next to all the formal specification work that went into SOAP. - -Luckily, there was this dissertation out there, written by a co-author of the HTTP/1.1 specification, that had something vaguely to do with extending HTTP and could offer FIOH a veneer of academic respectability. So REST was appropriated to give cover for what was really just FIOH. - -I’m not saying that this is exactly how things happened, or that there was an actual conspiracy among irreverent startup types to misappropriate REST, but this story helps me understand how REST became a model for web service APIs when Fielding’s dissertation isn’t about web service APIs at all. Adopting REST’s constraints makes some sense, especially for public-facing APIs that do cross organizational boundaries and thus benefit from REST’s “uniform interface.” That link must have been the kernel of why REST first got mentioned in connection with building APIs on the web. But imagining a separate approach called “FIOH,” that borrowed the “REST” name partly just for marketing reasons, helps me account for the many disparities between what today we know as RESTful APIs and the REST architectural style that Fielding originally described. - -REST purists often complain, for example, that so-called REST APIs aren’t actually REST APIs because they do not use Hypermedia as The Engine of Application State (HATEOAS). Fielding himself [has made this criticism][11]. According to him, a real REST API is supposed to allow you to navigate all its endpoints from a base endpoint by following links. If you think that people are actually out there trying to build REST APIs, then this is a glaring omission—HATEOAS really is fundamental to Fielding’s original conception of REST, especially considering that the “state transfer” in “Representational State Transfer” refers to navigating a state machine using hyperlinks between resources (and not, as many people seem to believe, to transferring resource state over the wire).[8][12] But if you imagine that everyone is just building FIOH APIs and advertising them, with a nudge and a wink, as REST APIs, or slightly more honestly as “RESTful” APIs, then of course HATEOAS is unimportant. - -Similarly, you might be surprised to know that there is nothing in Fielding’s dissertation about which HTTP verb should map to which CRUD action, even though software developers like to argue endlessly about whether using PUT or PATCH to update a resource is more RESTful. Having a standard mapping of HTTP verbs to CRUD actions is a useful thing, but this standard mapping is part of FIOH and not part of REST. - -This is why, rather than saying that nobody understands REST, we should just think of the term “REST” as having been misappropriated. The modern notion of a REST API has historical links to Fielding’s REST architecture, but really the two things are separate. The historical link is good to keep in mind as a guide for when to build a RESTful API. Does your API cross organizational and national boundaries the same way that HTTP needs to? Then building a RESTful API with a predictable, uniform interface might be the right approach. If not, it’s good to remember that Fielding favored having form follow function. Maybe something like GraphQL or even just JSON-RPC would be a better fit for what you are trying to accomplish. - -_If you enjoyed this post, more like it come out every four weeks! Follow [@TwoBitHistory][13] on Twitter or subscribe to the [RSS feed][14] to make sure you know when a new post is out._ - -_Previously on TwoBitHistory…_ - -> New post is up! I wrote about how to solve differential equations using an analog computer from the '30s mostly made out of gears. As a bonus there's even some stuff in here about how to aim very large artillery pieces. -> -> — TwoBitHistory (@TwoBitHistory) [April 6, 2020][15] - - 1. Roy Fielding. “Architectural Styles and the Design of Network-based Software Architectures,” 128. 2000. University of California, Irvine, PhD Dissertation, accessed June 28, 2020, . [↩︎][16] - - 2. Fielding, 130. [↩︎][17] - - 3. Fielding distinguishes between software architectures and software architecture “styles.” REST is an architectural style that has an instantiation in the architecture of HTTP. [↩︎][18] - - 4. Fielding, 2. [↩︎][19] - - 5. Fielding, 15. [↩︎][20] - - 6. Fielding, 82. [↩︎][21] - - 7. Paul Krill. “Ruby on Rails 2.0 released for Web Apps,” InfoWorld. Dec 7, 2007, accessed June 28, 2020,  [↩︎][22] - - 8. Fielding, 109. [↩︎][23] - - - - --------------------------------------------------------------------------------- - -via: https://twobithistory.org/2020/06/28/rest.html - -作者:[Two-Bit History][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://twobithistory.org -[b]: https://github.com/lujun9972 -[1]: https://news.ycombinator.com/item?id=7201871 -[2]: https://www.ics.uci.edu/~fielding/pubs/dissertation/fielding_dissertation_2up.pdf -[3]: tmp.o6JUcKs91D#fn:1 -[4]: tmp.o6JUcKs91D#fn:2 -[5]: tmp.o6JUcKs91D#fn:3 -[6]: tmp.o6JUcKs91D#fn:4 -[7]: tmp.o6JUcKs91D#fn:5 -[8]: tmp.o6JUcKs91D#fn:6 -[9]: https://www.youtube.com/watch?v=vNoPJqm3DAY -[10]: tmp.o6JUcKs91D#fn:7 -[11]: https://roy.gbiv.com/untangled/2008/rest-apis-must-be-hypertext-driven -[12]: tmp.o6JUcKs91D#fn:8 -[13]: https://twitter.com/TwoBitHistory -[14]: https://twobithistory.org/feed.xml -[15]: https://twitter.com/TwoBitHistory/status/1247187881946275841?ref_src=twsrc%5Etfw -[16]: tmp.o6JUcKs91D#fnref:1 -[17]: tmp.o6JUcKs91D#fnref:2 -[18]: tmp.o6JUcKs91D#fnref:3 -[19]: tmp.o6JUcKs91D#fnref:4 -[20]: tmp.o6JUcKs91D#fnref:5 -[21]: tmp.o6JUcKs91D#fnref:6 -[22]: tmp.o6JUcKs91D#fnref:7 -[23]: tmp.o6JUcKs91D#fnref:8 diff --git a/sources/talk/20200630 Should API-restricting licenses qualify as open source.md b/sources/talk/20200630 Should API-restricting licenses qualify as open source.md deleted file mode 100644 index 54b18eaed6..0000000000 --- a/sources/talk/20200630 Should API-restricting licenses qualify as open source.md +++ /dev/null @@ -1,79 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Should API-restricting licenses qualify as open source?) -[#]: via: (https://opensource.com/article/20/6/api-copyright) -[#]: author: (Richard Fontana https://opensource.com/users/fontana) - -Should API-restricting licenses qualify as open source? -====== -A look at how a closely-watched legal case about copyright and APIs -might affect open source licensing -![Two government buildings][1] - -In its 2014 _[Oracle v. Google][2]_ decision, the United States Court of Appeals for the Federal Circuit held that the method declarations and "structure, sequence, and organization" (SSO) of the Java SE API were protected by copyright. This much-criticized result contradicted a decades-old industry and professional consensus assumption that APIs were in the public domain, reflected in an ongoing common practice of successive reimplementation of APIs, and persisting even after the general copyrightability of software was settled by statute. Unsurprisingly, that consensus shaped the view of APIs from within open source. Open source licenses, in particular, do not address APIs, and their conditions have not customarily been understood to apply to APIs. - -If the copyrightability ruling survives its current [review][3] by the United States Supreme Court, there is reason to worry that _Oracle v. Google_ will eventually have some detrimental impact on open source licensing. License authors might draft new licenses that would explicitly extend familiar kinds of open source license conditions to activities merely involving APIs. There could also be comparable efforts to advance _Oracle v. Google_-influenced reinterpretations of existing open source licenses. - -We've already seen an example of a new open source-like license that restricts APIs. Last year, Holochain, through its lawyer [Van Lindberg][4], submitted the [Cryptographic Autonomy License][5] (CAL) for approval by the Open Source Initiative (OSI). The [1.0-Beta][6] draft included source availability and licensing requirements placed on works merely containing or derivative of interfaces included in or derived from the licensed work. (CAL 1.0-Beta was [rejected][7] by the OSI for reasons other than the interface copyleft feature. Subsequent revisions of CAL removed explicit references to interfaces, and the OSI approved CAL 1.0 earlier this year.) Licenses like CAL 1.0-Beta would extend copyleft to reimplementations of APIs having no code in common with the original. Though less likely, new permissive licenses might similarly extend notice preservation requirements to mere copies of APIs. - -In my view, API-restricting licenses, though otherwise FOSS-like, would not qualify for the open source label. To simplify what is actually a complicated and contentious issue, let's accept the view that the license approval decisions of the OSI, interpreting the [Open Source Definition][8] (OSD), are the authoritative basis for determining whether a license is open source. The OSD makes no mention of software interfaces. Some advocates of a relaxation of standards for approving open source licenses have argued that if a type of restriction is not explicitly prohibited by the OSD, it should be considered acceptable in an open source license. To guard against this tactic, which amounts to ["gaming" the OSD][9], the OSI [clarified][10] in 2019 that the purpose of the approval process is to ensure that approved licenses not only conform to the OSD but also provide software freedom. - -Though [Luis Villa has raised concerns][11] that it gives rise to a "[no true Scotsman][12]" problem, I believe the emphasis on software freedom as a grounding principle will enable the OSI to deal effectively and in a well-reasoned, predictable way with cases where license submissions expose unforeseen gaps or vagueness in the OSD, which is politically difficult for the OSI to revise. (Disclosure: I was on the OSI board when this change to the license review process was made.) It is also an honest acknowledgment that the OSD, like the [Free Software Definition][13] maintained by the Free Software Foundation, is an unavoidably imperfect and incomplete attempt to distill the underlying community norms and expectations surrounding what FOSS is. - -Software freedom is the outgrowth of a long-lived culture. Judging whether a license that extends FOSS-normative conditions to APIs provides software freedom should begin with an examination of tradition. This leads to a straightforward conclusion. As noted above, from nearly the earliest days of programming and continuing without interruption through the rise of the modern open source commons, software developers have shared and acted on a belief in an unconditional right to reimplement software interfaces. From a historical perspective, it is difficult to think of anything as core to software freedom as this right to reimplement. - -The inquiry cannot be entirely backward-looking, however, since the understanding of software freedom necessarily changes in response to new societal or technological developments. It is worth asking whether a departure from the traditional expectation of unrestricted APIs would advance the broader goals of open source licensing. At first glance, this might seem to be true for copyleft licensing, since, in theory, compliant adoption of API copyleft licenses could expand the open source software commons. But expanding the scope of copyleft to API reimplementations—software traditionally seen as unrelated to the original work—would violate another open source norm, the limited reach of open source licenses, which is partially captured in [OSD 9][14]. - -Another observation is that software freedom is endangered by licensing arrangements that are excessively complex and unpredictable and that make compliance too difficult. This would likely be true of API-restricting FOSS-like licenses, especially on the copyleft side. For example, copyleft licenses typically place conditions on the grant of permission to prepare derivative works. Trying to figure out what is a derivative work of a Java method declaration, or the SSO of a set of APIs, could become a compliance nightmare. Would it include reimplementations of APIs? Code merely invoking APIs? The fundamental vagueness of _Oracle v. Google_-style API copyright bears some resemblance to certain kinds of software patent claims. It is not difficult to imagine acquirers of copyrights covered by API-restrictive licenses adopting the litigation strategies of patent trolls. In addition to this risk, accepting API-restrictive licenses as open source would further legitimize API copyrightability in jurisdictions like the United States, where the legal issue is currently unsettled. - -_Oracle v. Google_-influenced interpretations of existing open source licenses would similarly extend familiar open source license conditions to activities merely involving APIs. Such reinterpretations would transform these licenses into ones that fail to provide software freedom and advance the goals of open source, for the same reasons that apply to the new license case. In addition, they would upend the intentions and expectations of the authors of those licenses, as well as nearly all of their licensors and licensees. - -It might be argued that because open source licenses are principally ([though not exclusively][15]) copyright licenses, it is necessary, if not beneficial, for their conditions to closely track the expansion of copyright to APIs. This is not so for new open source licenses, which can be drafted explicitly to nullify the impact of _Oracle v. Google_. As for reinterpretations of existing open source licenses, while the issue of API copyrightability remains unsettled, it would not be appropriate to abandon traditional interpretations in favor of anticipating what an _Oracle v. Google_-influenced court, unfamiliar with open source culture, would decide. Litigation over open source licenses continues to be uncommon, and influential open source license interpretations have emerged in the technical community with little regard to how courts might act. In any event, courts engaged in interpreting commonly-used open source licenses may well be persuaded to treat APIs as unconstrained. - -Some have suggested that interpretation of the GPL should take full advantage of the scope of underlying copyright rights. This is related to a view of copyleft as a "[hack on copyright][16]" or a "[judo move][17]" that "[return[s] the violent force of the oppressor against the oppressor itself][18]." It can be detected in the [copyleft tutorial][19] sponsored by the Software Freedom Conservancy and the FSF, which [says][20]: "The strongest copylefts strive to [use] the exclusive rights that copyright grants to authors as extensively as possible to maximize software freedom." It might seem logical for someone with this perspective to specifically promote an API copyright interpretation of the GPL. But I know of no advocate of strong copyleft who has done so, and the text and interpretive history of the GPL do not support such a reading. - -A somewhat different view of API copyright and GPL interpretation, occasionally voiced, is that _Oracle v. Google_ may put the doctrine of strong copyleft on a surer legal foundation. Similarly, it has sometimes been asserted that strong copyleft rested on some notion of API copyrightability all along, which suggests that _Oracle v. Google_ provides some retroactive legal legitimacy. The latter view is not held by the FSF, which in an earlier era had [opposed the expansion of copyright][21] to user interfaces. This stance made its way into GPLv2, which has a [largely overlooked provision][22] authorizing the original licensor to exclude countries that would restrict "distribution and/or use … either by patents or by copyrighted interfaces." The FSF also [severely criticized][23] Oracle's claim of copyright ownership of Java APIs. And the FSF has never questioned the right to reimplement APIs of GPL-licensed software under non-GPL licenses (as has happened, for example, with the FSF-copyrighted [GNU Readline][24] and the BSD-licensed [libedit][25]). If there were shown to be some legal deficiency in strong copyleft theory that API copyrightability could somehow fix, I believe it would be better either to live with a weaker understanding of GPL copyleft or to pursue revisions to the GPL that would reformulate strong copyleft without relying on API copyright. - -If API copyrightability survives Supreme Court review, it would then be appropriate for license stewards, licensors of existing open source licenses, and drafters of new open source licenses to take constructive steps to minimize the impact on open source. Stewards of widely used open source licenses, where they exist, could publish interpretive guidance clarifying that APIs are not restricted by the license. Updates to existing open source licenses and entirely new licenses could make unrestricted APIs an explicit policy. Licensors of existing open source licenses could make clear, in standardized license notices or through external commitments, that they will not treat open source license conditions as imposing any restriction on activities merely involving APIs. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/6/api-copyright - -作者:[Richard Fontana][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/fontana -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/LAW_lawdotgov2.png?itok=n36__lZj (Two government buildings) -[2]: http://www.cafc.uscourts.gov/sites/default/files/opinions-orders/13-1021.Opinion.5-7-2014.1.PDF -[3]: https://www.scotusblog.com/case-files/cases/google-llc-v-oracle-america-inc/ -[4]: https://twitter.com/vanl?lang=en -[5]: https://github.com/holochain/cryptographic-autonomy-license -[6]: http://lists.opensource.org/pipermail/license-review_lists.opensource.org/2019-April/004028.html -[7]: http://lists.opensource.org/pipermail/license-review_lists.opensource.org/2019-June/004248.html -[8]: https://opensource.org/osd -[9]: https://twitter.com/webmink/status/1121873263125118977?s=20 -[10]: https://opensource.org/approval -[11]: https://twitter.com/luis_in_brief/status/1143884765654687744 -[12]: https://en.wikipedia.org/wiki/No_true_Scotsman -[13]: https://www.gnu.org/philosophy/free-sw.en.html -[14]: https://opensource.org/osd#not-restrict-other-software -[15]: https://opensource.com/article/18/3/patent-grant-mit-license -[16]: https://sfconservancy.org/blog/2012/feb/01/gpl-enforcement/ -[17]: https://gondwanaland.com/mlog/2014/12/01/copyleft-org/#gpl-and-cc-by-sa-differences -[18]: https://dustycloud.org/blog/field-guide-to-copyleft/#sec-2-2 -[19]: https://copyleft.org/guide/ -[20]: https://copyleft.org/guide/comprehensive-gpl-guidech2.html#x5-120001.2.2 -[21]: https://www.gnu.org/bulletins/bull21.html -[22]: https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html#section8 -[23]: https://www.fsf.org/blogs/licensing/fsf-statement-on-court-of-appeals-ruling-in-oracle-v-google -[24]: https://tiswww.case.edu/php/chet/readline/rltop.html -[25]: http://cvsweb.netbsd.org/bsdweb.cgi/src/lib/libedit/ diff --git a/sources/talk/20200630 The open organization everyone deserves.md b/sources/talk/20200630 The open organization everyone deserves.md deleted file mode 100644 index 8fa93e6ec3..0000000000 --- a/sources/talk/20200630 The open organization everyone deserves.md +++ /dev/null @@ -1,70 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (The open organization everyone deserves) -[#]: via: (https://opensource.com/open-organization/20/6/organization-everyone-deserves) -[#]: author: (Jos Groen https://opensource.com/users/jos-groen) - -The open organization everyone deserves -====== -Want to build a sustainably successful organization? Then openness is -the way. -![Two different business organization charts][1] - -Let me share an email I recently received. It meant the world to me: - -> Hi Jos, just a quick message to thank you for the past six months. I really appreciate how I've been welcomed into the company and I feel like I've genuinely found my place here. There's a great vibe among the entire staff of working hard, lots of learning, having fun, and personal responsibility. Although everyone contributes to this atmosphere, it could only have come about with the support of management. So I just want to thank you for creating such an enjoyable work environment! - -A work environment that encourages the collaborative utilization of everyone's combined skillset, one in which contributors are intrinsically motivated to do their best work, is something I would wish for everyone. That's why, over the past year especially, I've been cultivating an open organizational culture on my team and across my organization, Axians. Openness is the future, and it begins with individuals. In this article, I'll explain the mindset shifts I believe any _individual_ leader must make in order to pave the way for an organizational culture of openness. - -### The technological is social - -Social and technological changes are occurring faster than ever. These often seem like two separate movements—but are they really? The effect of the open source movement on the development of both innovative technologies and organizational cultures is many times greater than we may think. The open source community (as the name suggests) is shouldered by people—people who apply their skills to make the world a little better through new technologies, who realize the value of sharing both knowledge and material goods in both their work as well as their personal lives. - -This means that in order to get the most out of new technologies, you need to have an open organizational culture in which employees contribute from [a place of intrinsic motivation][2]. The current generation of tech employees isn't drawn to organizations with a strong hierarchical culture. They're looking for _open_ organizations that encourage and inspire them to excel every single day. They're looking for the kind of leadership that leaves ample room for individual input and ownership. A successful and future-proof organization demands an open culture and open leadership. - -At its core, a sustainably successful organization revolves around a balance between a focus on people and a focus on the business. In my experience, for the majority of organizations, this balance leans too heavily towards the business. There is an urgent need for a greater focus on people. The open organization is the answer to restoring this balance. That's why establishing and leading an open organization should be the [ultimate goal for contemporary managers][3]. But doing this requires leaders capable of restoring the balance [between business and the humans that work in it][4]—and maintaining that balance. - -A work environment that encourages the collaborative utilization of everyone's combined skillset, one in which contributors are intrinsically motivated to do their best work, is something I would wish for everyone. - -At the same time, a successful organization today is one that enables intelligent collaboration and effective coordination. This will increase the collective intelligence and offer employees the space they need to develop and grow. Unlocking and utilizing the available potential helps shape the kind of organization in which everyone participates and contributes, and this can produce some truly remarkable results. It’s no small task for a leader to establish and lead an organization of this kind. - -### Authentic leadership - -The human dimension present in an organization will in part determine the employers people choose to join, making it vital for managers to establish and lead an open organization. Part of openness is to be clear and honest about your intentions at all times. - -This isn't just a gimmick, nor is it a skill you can easily "acquire." When you're working with people, they will immediately sense if your intentions aren't genuine. Because this process takes place on a subconscious level, it is unlikely people will articulate this feeling. Instead, it'll be reflected in their behavior: you might find people less involved and not opening up to you. In turn, you could experience their behavioras frustrating, even opposition. Sound familiar? - -This is all about your credibility, which takes time to build. You'll be challenged, either consciously or subconsciously, to stick with your intentions. Be prepared to have to overcome mistrust and cynicism at times. - -Are you up for that? Are you willing to examine the cause, to really invest your time and energy in trying to understand the other person? And will you stick to your principles? - -### What about you? - -An open organization is about placing your trust in people and creating a culture of equality. At the end of the day, it's not about you; it's about the collective. _Everyone_ is involved. _Everyone_ gets to make mistakes or ask for help. Even you. As long as you can be open and honest about it. - -So have you put "openness" on the agenda? And what about your organization? Is your management ready to open up—or are they clinging to "command and control"? - -I hope you'll [join me][5] as I explore these issues further [in an upcoming webinar][6]. - --------------------------------------------------------------------------------- - -via: https://opensource.com/open-organization/20/6/organization-everyone-deserves - -作者:[Jos Groen][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/jos-groen -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/BUSINESS_crowdvsopen.png?itok=AFjno_8v (Two different business organization charts) -[2]: https://opensource.com/open-organization/18/5/rethink-motivation-engagement -[3]: https://opensource.com/open-organization/20/6/open-management-practices -[4]: https://opensource.com/open-organization/17/7/digital-transformation-people-1 -[5]: https://www.linkedin.com/in/josgroen/ -[6]: https://www.redhat.com/en/events/webinar/how-to-drive-the-transformation-journey-through-an-open-organization-approach-2020 diff --git a/sources/talk/20200702 How an open project-s governance model evolves.md b/sources/talk/20200702 How an open project-s governance model evolves.md deleted file mode 100644 index 4ca74dd3b1..0000000000 --- a/sources/talk/20200702 How an open project-s governance model evolves.md +++ /dev/null @@ -1,97 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (How an open project's governance model evolves) -[#]: via: (https://opensource.com/open-organization/20/7/evolving-project-governance) -[#]: author: (Bryan Behrenshausen https://opensource.com/users/bbehrens) - -How an open project's governance model evolves -====== -As open projects mature, their governance models inevitably change. -Here's how we're evolving ours. -![A two way street sign][1] - -As we continue renovating the Open Organization community, we've been asking hard questions about how we want [that community][2] to function. What do we expect of one another, and of the new contributors yet to join us? How will we work best together? And how will we keep one another accountable for achieving our shared goals? - -When open projects and communities discuss expectations like these, they're talking about "governance." In this case, "governance" refers to the [various processes by which rights and responsibilities get distributed][3] throughout a group. As community member [Jen Kelchner puts it][4], "it's the framework that creates the structure of the organizational system and the rules by which the parts of that structure can and do interact with one another." - -A community's governance model explains _how_ that community functions. Maintaining a system of governance often helps a community _define_ and _describe_ the roles people play in that community. - -Those shared definitions and descriptions are important. First, they allow community members to speak a common language about values and ambitions. They also advance community members' ability to contribute, because [they _make explicit_ the rules][5] everyone is playing by. And they ensure community members receive the various types of status and social capital they need and deserve. - -The best governance models are flexible and adaptable. They grow with their communities. As the Open Organization community grows, so does its governance model. We've needed to revisit how we describe our community and the opportunities for contribution it affords people. ([We also fix typos][6].) - -Let us describe what we're doing. - -### New commitments - -Through this conversation, we've been able to update the Open Organization [project][7] description and vision. - -That vision initially took shape nearly five years ago, when the Open Organization Ambassador team first formed. At the time, Red Hat community architects [Jason Hibbets][8] and [Bryan Behrenshausen][9] drafted a document describing what a community of passionate advocates for [open organizational principles][10] _might_ look like. The vision was entirely aspirational, describing what could be—rather than what _was_. It served as a beacon to attract passionate contributors to a still-nascent project. - -As soon as the community _did_ attract new members, however, those members promptly wrote their _own_ mission and vision for the Open Organization project, articulating their identity and purpose. And as we've grown, we've realized that we're all committed to even more than we originally described. Our community is adept at translating [open organization principles][10] for various audiences and contexts, and at helping different communities connect to our language and culture through _their_ own languages and cultures. - -The best governance models are flexible and adaptable. They grow with their communities. - -For example, [Laura Hilliger][11] has long seen an overlap between openness and cooperatives ([as have others in the community][12]). She's spoken about that overlap and lived it through her career—serving as a translator between two "radical" economic and communal ideas that use different terminology but are seeking the same kind of fair-mindedness in their activities and collaborations. Other Open Org community members have written about [Agile methodologies][13] and their association with open principles, open principles at work [in educational organizations][14], and more. - -Our commitment to this sort of "translation work" wasn't highlighted in our working project description, so we [updated the description to include it][15]. - -### Role playing - -Another hole we wanted to fill was a better description of the types of contributions one can make to this community. We wanted to talk about our contributors in a slightly more nuanced way, which we indicated in the initial project vision and then extrapolated into a fully fledged "[Community Roles][16]" wiki page. - -Being specific about community roles helps us make the project more inclusive. It also gives us a method to _codify_ policies and procedures because we can associate them with individual roles people can play in the Open Org community. - -So we've made some decisions about how contributors get read/write [access to community repositories][17], and how certain kinds of contributors can nominate people to "level up" in the community. - -Just as people join communities, they also leave. Everyone's interests and passions change over time, and sometimes what brought them to your community is no longer meaningful to them. And that's okay. - -We've also established a new kind of contributor, the "Maintainer," which gives Ambassadors expressing interest in leading and maintaining community-driven projects a way to show ownership and initiative around a particular project the community is working on. In short: It opens an important new contribution pathway and helps existing community members play an even more influential role in the Open Organization project. - -And we're also recognizing the regular flux and flow that marks an open community like ours. Just as people join communities, they also leave. Everyone's interests and passions change over time, and sometimes what brought them to your community is no longer meaningful to them. And that's okay. - -Sometimes, people will stay involved in a community because they feel a sense of belonging or status, even if they're not interested in doing the work anymore. And they carry with them important project history and context, which no one wants to see evaporate. So we're also adding another community role, the Open Organization Ambassador Emeritus. By giving community members emeritus status, we give Ambassadors the freedom to move on to something else without "kicking them out" of the project altogether. - -All in all, defining and documenting roles and responsibilities will help our community attract contribution because it clearly explains _what getting involved means_ and the _benefits of doing so_. - -### Next steps - -We've come a long way. But there's more to be done. - -The next bit of work we'd like to tackle is [developing a code of conduct][18]. Want to share your experience in this area? [Why not join us and help out?][19] - --------------------------------------------------------------------------------- - -via: https://opensource.com/open-organization/20/7/evolving-project-governance - -作者:[Bryan Behrenshausen][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/bbehrens -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/govt_two%20way.png?itok=8dlG2Dpl (A two way street sign) -[2]: http://theopenorganization.org -[3]: https://opensource.com/article/20/5/open-source-governance -[4]: https://opensource.com/open-organization/17/2/5-elements-teams-organized -[5]: https://opensource.com/open-organization/18/4/new-governance-model-research -[6]: https://github.com/open-organization/governance/commits/master -[7]: https://github.com/open-organization/governance/blob/master/project-and-community-description.md -[8]: https://opensource.com/users/jhibbets -[9]: https://opensource.com/users/bbehrens -[10]: https://github.com/open-organization/open-org-definition -[11]: https://opensource.com/users/laurahilliger -[12]: https://opensource.com/open-organization/15/9/learn-from-co-ops -[13]: https://opensource.com/open-organization/17/11/transparency-collaboration-basefarm -[14]: https://opensource.com/open-organization/19/4/education-culture-agile -[15]: https://github.com/open-organization/governance/wiki -[16]: https://github.com/open-organization/governance/wiki/Community-Roles -[17]: https://github.com/open-organization -[18]: https://opensource.com/life/14/5/codes-of-conduct-open-source-communities -[19]: https://github.com/open-organization/governance/issues/9 diff --git a/sources/talk/20200708 How wireless networks can battle COVID-19.md b/sources/talk/20200708 How wireless networks can battle COVID-19.md deleted file mode 100644 index 3c3276c55a..0000000000 --- a/sources/talk/20200708 How wireless networks can battle COVID-19.md +++ /dev/null @@ -1,52 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: (sunwenquan ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (How wireless networks can battle COVID-19) -[#]: via: (https://www.networkworld.com/article/3565389/how-wireless-networks-can-battle-covid-19.html) -[#]: author: (Patrick Nelson https://www.networkworld.com/author/Patrick-Nelson/) - -How wireless networks can battle COVID-19 -====== -Wireless network devices maintain a connection by handing off from one cell tower to another. The data created should be used to fight coronavirus, say researchers. -Sasha85ru / Getty Images - -Routinely collected cellphone-location data could be used to alert health official about crowded areas where novel coronavirus could spread rapidly, which they could then use to disperse people in order to lower the risk, according to researchers at Colorado State University. - -Mobile phones maintain connections as their users move around by continually handing off from one cell tower to another. Analyzing logs of these handoffs is a way to gauge how many people are in an area, the researchers say, and that information could flag potential virus-spreading hotspots. “Crowded regions with actively moving people are susceptible to spreading the disease,” the team say in [an abstract of their paper][1] in _IEEE Open Journal of Engineering in Medicine and Biology_. - -[[Get regularly scheduled insights by signing up for Network World newsletters.]][2] - -“Our findings could help risk managers with planning and mitigation,” says Edwin Chong, Professor of Electrical and Computer Engineering and interim department head at the school [in an article on the university’s website][3]. - -The data that would be used doesn’t identify individuals who own the phones, which should alleviate privacy concerns, he says. “All we have to do is perform the measurements using anonymous data that is already being collected for other reasons. We are not tracking individuals,” he says - -Cellphone applications that have been developed to trace near encounters between individuals are different. They necessarily gather personal information so health officials can determine who might have come in proximity with an infected person. The goal is to alert those who have had such encounters so they can quarantine themselves for 14 days to prevent them from potentially spreading the virus further. But that is quite different from the information gathered by cell-tower engineering logs. - -As mobile phones move from one cell to another, a process called handover and reselection keeps the phones constantly connected to the network. The logs of this activity reveal the volume of this activity and tracks the status of phones such as non-active standby, engaged in active calls or whether it’s making data connections. - -The size of cells varies with those in densely populated areas being smaller and therefore able to deliver more granular data about where people are closer together. Indeed, future 5G deployments may have cell antennas in every municipal streetlight, making it possible to make very specific density estimates. - -  - -Join the Network World communities on [Facebook][4] and [LinkedIn][5] to comment on topics that are top of mind. - --------------------------------------------------------------------------------- - -via: https://www.networkworld.com/article/3565389/how-wireless-networks-can-battle-covid-19.html - -作者:[Patrick Nelson][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://www.networkworld.com/author/Patrick-Nelson/ -[b]: https://github.com/lujun9972 -[1]: https://ieeexplore.ieee.org/document/9117073 -[2]: https://www.networkworld.com/newsletters/signup.html -[3]: https://engr.source.colostate.edu/using-cellular-networks-to-detect-at-risk-areas-for-spread-of-covid-19/ -[4]: https://www.facebook.com/NetworkWorld/ -[5]: https://www.linkedin.com/company/network-world diff --git a/sources/talk/20200715 The Impact of COVID-19 on the Global Digital Economy.md b/sources/talk/20200715 The Impact of COVID-19 on the Global Digital Economy.md deleted file mode 100644 index 6d5f05b3ce..0000000000 --- a/sources/talk/20200715 The Impact of COVID-19 on the Global Digital Economy.md +++ /dev/null @@ -1,79 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (The Impact of COVID-19 on the Global Digital Economy) -[#]: via: (https://www.networkworld.com/article/3566911/the-impact-of-covid-19-on-the-global-digital-economy.html) -[#]: author: (QTS https://www.networkworld.com/author/Andy-Patrizio/) - -The Impact of COVID-19 on the Global Digital Economy -====== -Post-Pandemic IT Landscape Demands a New Data Center Paradigm -QTS - -Prior to COVID-19, the world was undergoing massive business transformation illustrated by stunning success of mega-scale Internet businesses such as Amazon Prime, Twitter, Uber, Netflix, Xbox and others that are now an integral part of our lives and exemplify the new global digital economy. - -The ability to apply artificial intelligence (AL), machine learning (ML), speech recognition, location services, speed and identity tracking in real-time enabled new applications and services once thought to be beyond the reach of computing technology. - -Fueling this transformation are exponential increases in digitized data and the ability to apply enormous compute and storage capacity to it. Since 2016, digitization has created 90% of the world’s data. According to IDC, more than 59 zettabytes (ZB) of data are going to be created and consumed globally in 2020 and this is forecast to grow to 175 ZB by 2025. How much is 1 ZB you ask?  It is equivalent to a _trillion gigabytes. Or, 100 million HD movies worth of data._ - -As it turns out, according to IDC, instead of hindering growth, COVID-19 is accelerating data growth, particularly in 2020 and 2021, due to abrupt increases in work from home employees, a changing mix of richer data sets, and a surge in video-based content consumption. - -For the enterprise, an unforeseen byproduct is an even greater urgency for agility, adaptability and transformation. Business models are being disrupted while the digitalization of the economy is accelerating as new technologies and services serve a reshaped workforce. - -The competitive landscape across all market sectors is changing. Now more than ever business is looking to technology to be agile in the face of disruption and create new digitally enabled business models for the post-COVID “new normal.” - -That will require new capabilities and expertise in thousands of data centers and networks behind the scenes. That infrastructure provides the digital infrastructure that powers the critical applications and services keeping the economy afloat -- and all of us connected. The “cloud” lives in data centers and data centers are the commerce platforms of the 21st century. - -**Data centers are essential…the best ones are innovating** - -At the outset of the pandemic, data centers were designated “essential businesses” since virtually all industries and consumers depend on them. The more advanced data centers were quickly recognized for their [ability to provide customers with remote access and management of their systems][1] without operators or enterprise customers having to be there physically. - -[QTS Realty Trust (NYSE: QTS)][2] is at the forefront of providing these services to all their customers. Supporting its commitment to digitize its entire end-to-end systems and processes, QTS is the first and only multi-tenant data center operator with a sophisticated software-defined orchestration platform powered by AI, ML, predictive analytics (PA) and virtual reality (VR) technologies. - -QTS’ API-driven [Service Delivery Platform (SDP)][3] empowers customers to interact with their data, services, and connectivity ecosystem by providing real-time visibility, access and dynamic control of critical metrics across hybrid and hyperscale environments from a single platform and/or mobile device. It is akin to it having a software company within the data center delivering operational savings and business innovation which are central to every IT investment. - -SDP applications leverage next-generation AI, ML and PA to accurately forecast power consumption, automate the service provisioning, perform online ordering and asset management. VR technologies are enabling new virtual collaboration tools and a 3D visualization application that renders an exact replication of a customer’s IT environment in real-time. - -QTS’ SDP was profiled in the Raymond James Industry Brief: _Data Maps and Killer Apps_ (released June 2020) that surveyed the platforms of three global data center operators: - -_“While all three platforms have the ability to track and report common data, the ease of use of the systems was quite different. Only QTS had the entire system wrapped up into an app that was available across multiple desktop, tablet, and mobile platforms, complete with 3D imaging and simple graphics that outlined the situation visually down to an individual rack within a cabinet. QTS' system also has video capability using facial recognition to detect and identify employees and contractors separately, highlight an open cabinet door and other potential hazards inside the customers cage, and it is all either real time or on a recorded basis to highlight potential errors and problems. Live heat maps allow customers to see the areas with potential and existing performance issues and to see outages in real time and track down problems. As far as features and functionality, QTS SDP system was the clear winner.”_ - -**Customer experience is the dealmaker** - -As consumers become more adamant in their demand for quality of experience in their digital lives, businesses must ensure they are providing services, and the data that is generated from them, real-time, on-the-go, via any network, and are personalized. - -Post COVID, the ability of data centers to ensure excellent customer experience will play an even greater role as large numbers of customers continue to work remotely with less on-premises interaction. Enterprises will seek data center operators that can ensure secure, ubiquitous, real time access to services and data backed by superior customer support. - -Given a purchasing decision based on performance and price between two equally qualified data center operators, the first tiebreaker is increasingly coming down to proven and documented customer support. - -In the data center industry, QTS is the undisputed leader in customer service and support boasting an [independent Net Promoter Score of 88][4] \- more than double the average NPS score for data center companies (42). - -Customers rated QTS highly in a range of service areas, including its customer service, service delivery platform, physical facilities, processes, responsiveness, and service of onsite staff and the 24-hour [Operations Service Center][5]. QTS’ score of 88 is its highest yet and exceeds NPS scores of companies well-known for their customer service including Starbucks (71) and Apple (72). - -Enterprise, Hyperscale and government organizations recognize that the post-COVID landscape is going to present an increasing need for innovation in their IT environments. In terms of IT service delivery, this means higher levels of transparency, visibility, compliance and sustainability that are at the foundation of QTS’ Service Delivery Platform. - -With innovation come new technologies and complexity, raising the profile of the best service and support partners for companies looking to re-establish themselves in a new, post-COVID competitive landscape. - -For more information, visit [www.qtsdatacenters.com][6] - --------------------------------------------------------------------------------- - -via: https://www.networkworld.com/article/3566911/the-impact-of-covid-19-on-the-global-digital-economy.html - -作者:[QTS][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://www.networkworld.com/author/Andy-Patrizio/ -[b]: https://github.com/lujun9972 -[1]: https://www.qtsdatacenters.com/company/news/2020/03/26/qts-reports-significant-increase-in-customer-usage-of-sdp -[2]: http://www.qtsdatacenters.com/ -[3]: https://www.qtsdatacenters.com/why-qts/service-delivery-platform -[4]: https://www.qtsdatacenters.com/why-qts/customer-benefits/nps -[5]: https://www.qtsdatacenters.com/why-qts/customer-benefits/operations-support-center -[6]: http://www.qtsdatacenters.com diff --git a/sources/talk/20200716 Options grow for migrating mainframe apps to the cloud.md b/sources/talk/20200716 Options grow for migrating mainframe apps to the cloud.md deleted file mode 100644 index fef1ca55e5..0000000000 --- a/sources/talk/20200716 Options grow for migrating mainframe apps to the cloud.md +++ /dev/null @@ -1,87 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Options grow for migrating mainframe apps to the cloud) -[#]: via: (https://www.networkworld.com/article/3567058/options-grow-for-migrating-mainframe-apps-to-the-cloud.html) -[#]: author: (Michael Cooney https://www.networkworld.com/author/Michael-Cooney/) - -Options grow for migrating mainframe apps to the cloud -====== -Mainframe modernization vendor LzLabs is targeting Big Iron enterprises that want to move legacy applications into public or private cloud environments. -Thinkstock - -Mainframe users looking to bring legacy applications into the public or private cloud world have a new option: [LzLabs][1], a mainframe software migration vendor. - -Founded in 2011 and based in Switzerland, LzLabs this week said it's setting up shop in North America to help mainframe users move legacy applications – think COBOL – into the more modern and flexible cloud application environment. - -**Read also: [How to plan a software-defined data-center network][2]** - -At the heart of LzLabs' service is its Software Defined Mainframe (SDM), an open-source, Eclipse-based system that's designed to let legacy applications, particularly those without typically available source code, such as COBOL, run in the cloud without recompilation. - -The company says it works closely with cloud providers such as Amazon Web Services, and its service can be implemented on [Microsoft Azure][3]. It also works with other technology partners such as Red Hat and Accenture. - -Legacy applications have become locked into mainframe infrastructures, and the lack of available skilled personnel who understand the platform and its development process has revealed the urgent need to move these critical applications to open platforms and the cloud, according to Mark Cresswell, CEO of LzLabs. - -"With SDM, customers can run mainframe workloads on x86 or the cloud without recompilation or data reformatting. This approach significantly reduces the risks associated with mainframe migration, enables incremental modernization and integrates applications with DevOps, open-source and the cloud," the company [stated][4]. - -Cresswell pointed to the news stories around the COVID-19 pandemic that found many mainframe and COBOL-based state government systems were having trouble keeping up with the huge volume of unemployment claims hitting those systems. - -For example, [CNN in April reported][5] that in New Jersey, Gov. Phil Murphy put out a call for volunteers who know how to code COBOL because many of the state's systems still run on older mainframes. Connecticut is also reportedly struggling to process the large volume of unemployment claims with its decades-old mainframe; it's working to develop a new benefits system with Maine, Rhode Island, Mississippi and Oklahoma, but the system won't be finished before next year, according to the CNN story. - -"An estimated 70% of the world's commercial transactions are processed by a mainframe application at some point in their cycle, which means U.S. state governments are merely the canaries in the coal mine. Banks, insurance, telecom and manufacturing companies (to mention a few) should be planning their exit," Cresswell wrote in a [blog][6]. - -LzLabs is part of an ecosystem of mainframe modernization service providers that includes [Astadia][7], [Asysco][8], [GTSoftware][9], [Micro Focus][10] and others. - -Large cloud players are also involved in modernizing mainframe applications. For example, Google Cloud in February [bought mainframe cloud-migration service firm Cornerstone Technology][11] with an eye toward helping Big Iron customers move workloads to the private and public cloud. Google said the Cornerstone technology – found in its [G4 platform][12] – will shape the foundation of its future mainframe-to-Google Cloud offerings and help mainframe customers modernize applications and infrastructure. - -"Through the use of automated processes, Cornerstone's tools can break down your Cobol, PL/1, or Assembler programs into services and then make them cloud native, such as within a managed, containerized environment," wrote Howard Weale, Google's director, transformation practice, in a [blog][13] about the acquisition. - -"As the industry increasingly builds applications as a set of services, many customers want to break their mainframe monolith programs into either Java monoliths or Java microservices," Weale stated.  - -The Cornerstone move is also part of Google's effort stay competitive in the face of mainframe-migration offerings from [Amazon Web Services][14], [IBM/RedHat][15] and [Microsoft][16]. - -While the number of services looking to aid in mainframe modernization might be increasing, the actual migration to those services should be well planned, experts say. - -A _Network World_ article on [mainframe migration options][17] from 2017 still holds true today: "The problem facing enterprises wishing to move away from mainframes has always been the 'all-or-nothing' challenge posed by their own workloads. These workloads are so interdependent and complex that everything has to be moved at once or the enterprise suffers. The suffering typically centers on underperformance, increased complexity caused by bringing functions over piecemeal, or having to add new development or operational staff to support the target environment. In the end, the savings on hardware or software turns out to be less than the increased costs required of a hybrid computing solution." - -Gartner last year also warned that migrating legacy applications should be undertaken very deliberately. - -"The value gained by moving applications from the traditional enterprise platform onto the next 'bright, shiny thing' rarely provides an improvement in the business process or the company's bottom line. A great deal of analysis must be performed and each cost accounted for," Gartner stated in a 2019 report, [Considering Leaving Legacy IBM Platforms? Beware, as Cost Savings May Disappoint, While Risking Quality][18]*. "*Legacy platforms may seem old, outdated and due for replacement. Yet IBM and other vendors are continually integrating open-source tools to appeal to more developers while updating the hardware. Application leaders should reassess the capabilities and quality of these platforms before leaving them." - -Join the Network World communities on [Facebook][19] and [LinkedIn][20] to comment on topics that are top of mind. - --------------------------------------------------------------------------------- - -via: https://www.networkworld.com/article/3567058/options-grow-for-migrating-mainframe-apps-to-the-cloud.html - -作者:[Michael Cooney][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://www.networkworld.com/author/Michael-Cooney/ -[b]: https://github.com/lujun9972 -[1]: https://twitter.com/LzLabsGmbH -[2]: https://www.networkworld.com/article/3284352/data-center/how-to-plan-a-software-defined-data-center-network.html -[3]: https://www.astadia.com/video/mainframe-transformation-azure-is-the-new-mainframe -[4]: https://appsource.microsoft.com/en-us/product/web-apps/lzlabsgmbh-5083555.lzlabs-softwaredefinedmainframe?src=office&tab=Overview -[5]: https://www.cnn.com/2020/04/08/business/coronavirus-cobol-programmers-new-jersey-trnd/index.html -[6]: https://blog.lzlabs.com/cobol-crisis-for-us-state-government-departments-is-the-canary-in-the-coal-mine -[7]: https://www.astadia.com/blog/mainframe-migration-to-azure-in-5-steps -[8]: https://www.asysco.com/code-transformation/ -[9]: https://www.gtsoftware.com/services/migration-services/ -[10]: https://www.microfocus.com/en-us/home -[11]: https://www.networkworld.com/article/3528451/google-cloud-moves-to-aid-mainframe-migration.html -[12]: https://www.cornerstone.nl/solutions/modernization -[13]: https://cloud.google.com/blog/topics/inside-google-cloud/helping-customers-migrate-their-mainframe-workloads-to-google-cloud -[14]: https://aws.amazon.com/blogs/enterprise-strategy/yes-you-should-modernize-your-mainframe-with-the-cloud/ -[15]: https://www.networkworld.com/article/3438542/ibm-z15-mainframe-amps-up-cloud-security-features.html -[16]: https://azure.microsoft.com/en-us/migration/mainframe/ -[17]: https://www.networkworld.com/article/3192652/why-are-mainframes-still-in-the-enterprise-data-center.html -[18]: https://www.gartner.com/doc/3905276 -[19]: https://www.facebook.com/NetworkWorld/ -[20]: https://www.linkedin.com/company/network-world diff --git a/sources/talk/20200717 Open source accounting software developed by accountants.md b/sources/talk/20200717 Open source accounting software developed by accountants.md deleted file mode 100644 index 22ae8e1689..0000000000 --- a/sources/talk/20200717 Open source accounting software developed by accountants.md +++ /dev/null @@ -1,151 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Open source accounting software developed by accountants) -[#]: via: (https://opensource.com/article/20/7/godbledger) -[#]: author: (Sean Darcy https://opensource.com/users/sean-darcy) - -Open source accounting software developed by accountants -====== -GoDBledger is open source accounting software that is both intuitive and -productive. -![Person using a laptop][1] - -Over the last six months, I have been working on [GoDBLedger][2], an open source accounting system that I feel addresses some of the issues that plague current accounting software solutions. Even in my first year as a graduate accountant, the software frustrated me because I have seen what good software can be like and how much it can improve your productivity. - -A great example of "good software" is a software developer's [Editor/IDE][3]. Developers love their editors, and there is a huge range that is highly customizable and allows for seamless coding experience. One of the major influencing factors for the existence of great software in this area is because developers are themselves the end users—they scratch their own itches and have immediate feedback on their designs. - -The relationship between developers and their editor is fascinating because the editor's job is to facilitate the efficient transfer of the developer's ideas into the codebase. - -As an accountant who loves programming in my spare time, I can see parallels between the accounting industry and software development. You can imagine the general ledger (a giant list of financial transactions) as a "codebase" that accountants work with, and it is the accountant's job to navigate and edit the general ledger before compiling it into various reports that an end user consumes—financial statements and tax returns, for example. This is similar to, for instance, the way the Red Hat Enterprise Linux codebase is maintained by developers, and then released officially as RHEL and CentOS to the world. - -Unfortunately, when comparing the software between the two industries, I have found that navigating and editing the general ledger is not seamless, at least not when compared to my experiences when programming. Additionally, the compilation is slow and involves a lot of human labor to achieve; it can ultimately be as difficult as editing the general ledger itself. - -So, given the parallels between accountants' and programmers' processes, why hasn't the accounting industry developed software to make editing the general ledger as efficient as an IDE editing a codebase? And why is compiling a set of financial statements from the general ledger not automated as is pushing code to production? - -There are two influencing factors that I have noticed. - -The first is the profit motive that drives both accountants and accounting software developers. Monetization can lead to inefficiencies in software because the most efficient end user is not always the most profitable. A profit-maximizing entity can extract more value from their users by taking actions to get control of the user's data, create walled gardens, and make it difficult for the user to change their software. - -Accounting software has always existed in the realm of paid software. Because it plays such an important role in a business, it has always been easy to monetize. This is great for software developers who wish to make a profit, but unfortunately, it means that open source principles have had minimal influence on the shape and design of the software. - -The second influencing factor is a lack of understanding of the general ledger as a data structure. The general ledger, in simple terms, is just a way to format a database of financial transactions. This data structure was designed in the 1600s, and it worked quite well within a physical book. At that point in time, working with the general ledger meant changing written text in the book as necessary, and accountants were professionals at maintaining this database. However, when relational databases were created, the structure never really got standardized and digitalized. Software packages implemented the general ledger within their own proprietary database structures, and accountants lost their ability to directly edit the database. Instead of managing the general ledger directly, the software only allowed for accountants to have restricted access. - -### The result - -Before TCP/IP got standardized, companies like AOL were creating their own proprietary environments and locking users into their walled gardens. Fortunately for the internet, they fell away to a free standard communication protocol. Unfortunately, the accounting industry did not do this, and we got stuck with "America Online." - -Imagine that the software industry was ruled by a few big IDE software conglomerates which have decided to maximize their profits rather than maximizing developer efficiency. Your editor no longer saves code as text; instead, it is saved as a proprietary data format. You can not copy a codebase easily into another IDE, and if you do change editors, it's probably safe to assume that the codebase saved in the previous system is lost. - -This is the state of the accounting software available today. - -So what can accounting software developers learn from the open source community? - -Open source means you can stand on the shoulders of giants and use codebases of other projects to influence and directly assist in the growth of your own project. If you are focusing on accountants' efficiency to edit the general ledger, you can review other software and copy the parts that work and ignore the parts that don't. In my case, I have been fortunate to leverage the great codebases of other accounting software such as [GNU Cash][4] and [Ledger-CLI][5], but there is another interesting area that has a lot to contribute—the open source servers that manage cryptocurrency nodes. - -Accounting has struggled with the transition from physical ledgers to computers, but thankfully the cryptocurrency community has already developed a lot of open source software for maintaining a database of transactions. - -The general ledger is a data structure to record financial transactions—just like a blockchain. - -### What this means - -My accounting system has been heavily influenced by [Geth (Go Ethereum)][6] and [Prysmatic Labs][7]—[Prysm][7], as there are a lot of talented developers working on these projects. They have provided the base for a server that manages financial transactions. Combining this with a database schema that was heavily influenced by GNU Cash means the heavy work behind designing an accounting system has already been done. - -The result is [GoDBLedger][2], with source code available on [github.com/darcys22/godbledger][8]. - -It is also written in Golang to leverage the already good code that exists in this area, and because Golang tends to be good for servers of this nature. - -I've talked a lot about how accountants should be able to work with the general ledger as seamlessly as a programmer can work on their codebase. I truly look forward to the day when I can create and edit journal entries with the same efficiency that I navigate and edit code using my text editor of choice. GoDBLedger is my first step toward achieving this. The next steps will be toward developing this "IDE" that communicates with GoDBLedger and its underlying database. Fortunately for me, there are already a lot of good open source database projects that I'll be able to leverage for this. - -### How to use GoDBLedger - -GoDBLedger is usable today! You can fire up a server that maintains a database for your financial transactions, and it will look and feel familiar to anyone who has run a cryptocurrency node before. - -The end goal is for it to act as the central server for receiving financial transactions and storing them in the database. It lives in the background, always running so that other systems can communicate financial data to it as needed. - -![GoDBledger operational flow chart][9] - -Right now, if you are comfortable with a command line and scripts that communicate to systems using RPC, then you can play with GoDBLedger and experience double-entry bookkeeping on a level lower than all other software (and only slightly above directly manipulating the SQL database). - -For instance, with GoDBLedger running, you can add entries in the interactive mode of ledger-cli: - - -``` -$ ~/godbledger/ledger_cli journal -Journal Entry Wizard -\-------------------- -Enter the date (yyyy-mm-dd): 2019-06-30 -Enter the Journal Descripion: Get Money Get Paid! - -Line item #1 -Enter the line Descripion: Income is good yo -Enter the Account: Revenue:Sales -Enter the Amount: -1000 -Would you like to enter more line items? (n to stop): - -Line item #2 -Enter the line Descripion: Cash is better -Enter the Account: Asset:Cash -Enter the Amount: 1000 -Would you like to enter more line items? (n to stop): n - -&{Get Money Get Paid! - 2019-06-30 00:00:00 +0000 UTC [{Revenue:Sales - Income is good yo - -1000/1} {Asset:Cash - Cash is better - 1000/1}] stuff} -``` - -However, the same entry can be made using JSON: - - -``` -`$ ~/godbledger/ledger_cli jsonjournal '{"Payee":"Darcy Financial","Date":"2019-06-30T00:00:00Z","AccountChanges":[{"Name":"Asset:Cash","Description":"Cash is better","Currency":"USD","Balance":"100"},{"Name":"Revenue:Sales","Description":"Income is good yo","Currency":"USD","Balance":"-100"}],"Signature":"anythingHereCurrently"}'` -``` - -You can view a report with the `reporter` command: - - -``` -$ ~/godbledger/reporter trialbalance - -   ACCOUNT    | BALANCE AT 20 FEBRUARY 2020 -\--------------+---------------------------- -Asset:Cash    |                        1000 -              | -Revenue:Sales |                       -1000 -              | -``` - -Read the [quickstart on the Github Wiki][10] for more information. I've also developed a few [example scripts using Python][11] to show how you can send transactions from your own software. Additionally, I have made an [example "trading bot"][12] that saves every trade it does to GoDBLedger. - -if you're interested in a procedural system to keep tracking of your accounts, try GoDBLedger. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/7/godbledger - -作者:[Sean Darcy][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/sean-darcy -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/laptop_screen_desk_work_chat_text.png?itok=UXqIDRDD (Person using a laptop) -[2]: https://godbledger.com/ -[3]: https://www.redhat.com/en/topics/middleware/what-is-ide -[4]: https://www.gnucash.org/ -[5]: https://www.ledger-cli.org/ -[6]: https://github.com/ethereum/go-ethereum -[7]: https://github.com/prysmaticlabs/prysm -[8]: https://github.com/darcys22/godbledger -[9]: https://opensource.com/sites/default/files/uploads/godbledger_flow.png (GoDBledger operational flow chart) -[10]: https://github.com/darcys22/godbledger/wiki/Quickstart -[11]: https://github.com/darcys22/godbledger-pythonclient -[12]: https://github.com/darcys22/Trading-Simulator diff --git a/sources/talk/20200719 Open source development works to improve contact tracing in Europe.md b/sources/talk/20200719 Open source development works to improve contact tracing in Europe.md deleted file mode 100644 index be101bc70f..0000000000 --- a/sources/talk/20200719 Open source development works to improve contact tracing in Europe.md +++ /dev/null @@ -1,201 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Open source development works to improve contact tracing in Europe) -[#]: via: (https://opensource.com/article/20/7/open-source-contact-tracing) -[#]: author: (J. Manrique Lopez de la Fuente https://opensource.com/users/jsmanrique) - -Open source development works to improve contact tracing in Europe -====== -Analyzing data on Corona-Warn-App's development shows how quickly open -source can scale up to help stop disease outbreaks. -![Hands holding a mobile phone with open on the screen][1] - -The [Corona-Warn-App][2] is an awesome example of how governments and public administrations can use open source software development to help citizens while simultaneously advancing the technology ecosystem. The app helps trace infection chains of [SARS-CoV-2][3] (the virus that causes [COVID-19][4]) in Germany. The app uses [a decentralized approach][5] to notify users if they have been exposed to SARS-CoV-2. - -![Corona-Warn-App branding][6] - -(Manrique Lopez, [CC BY-SA 4.0][7]) - -Transparency is essential to protecting the app's end users and encouraging its adoption, and [open source][8] is a key element of achieving transparency. Open source allows anyone to use, study, share, and [improve][9] Covid-Warn-App. This is similar to the tracing apps developed by Italy ([Immuni][10]), Switzerland ([SwissCovid][11]), and partially by France ([StopCovid][12]). In contrast, [Radar Covid][13] is a new non-open source COVID-tracking app being piloted in Spain's Canary Islands; between the non-open nature of the app and the fact that the [website][14] still fails to load in mid-July 2020, it's debatable whether citizens will trust it. - -![radarcovid.covid19.gob.es offline on July, 8th, 2020][15] - -Radar Covid [site][14] offilne on July 8, 2020. (Manrique Lopez, [CC BY-SA 4.0][7]) - -### Why open source transparency matters - -Transparency benefits software development projects in two ways: - - * Internally in the project's community, there's a sense of fair play among all the contributors because everything is in public, so everyone is accountable. - * Externally among third parties, there's a sense of trust in the project because it can be analyzed from multiple perspectives (e.g., legal, technical, project activity, development processes, etc.). - - - -Transparency should be an essential requirement in software developed by governments. Initiatives like [Public Money, Public Code][16] and the [Foundation for Public Code][17] are doing an amazing job of helping public administrators understand why their code (_our_ code as taxpayers) should be open source. - -![Corona-Warn-App's open source approach][18] - -(Manrique Lopez, [CC BY-SA 4.0][7]) - -### About Corona-Warn-App - -In early May 2020, the German government asked software developer SAP and Deutsche Telekom subsidiary T-Systems to deliver the Corona-Warn-App based on open source and decentralized technology. Many other German companies and research centers are supporting the app's development. - -![Corona-Warn-App development partners][19] - -(Manrique Lopez, [CC BY-SA 4.0][7]) - -In addition, the global open source community has been remarkable in helping to build the app, which has already been [downloaded by more than 15 million users][20]. - -### Corona-Warn-App's development - -Inspired by [Andreas Schreiber's][21] tweet, [Jesus M. Gonzalez-Barahona][22] did an [analysis][23] of Corona-Warn-App's development using [Cauldron.io][24], an open source software-as-a-service application built on top of [GrimoireLab][25], and [summarized his findings][26] on Twitter. - -Corona-Warn-App saw robust [software development activity][23] through mid-June: - - * More than 100 people contributed. - * More than 5,300 commits were made, with 1,600+ pull requests and 600+ issues. - - - -![Corona-Warn-App development data][27] - -Data source: [Corona-Warn-App dashboard][23] (Manrique Lopez, [CC BY-SA 4.0][7]) - -#### Quick code reviews - -Code review for pull requests is quick, usually within one day (mean: 0.36 days). - -![Corona-Warn-App pull requests][28] - -Data source: [Corona-Warn-App dashboard][23] (Manrique Lopez, [CC BY-SA 4.0][7]) - -Time to close issues is also quick at about two days. - -![Corona-Warn-App issues][29] - -Data source: [Corona-Warn-App dashboard][23] (Manrique Lopez, [CC BY-SA 4.0][7]) - -This means that most pull requests are already closed, and the gap between open and closed issues is not very large. - -#### Commitment to fighting coronavirus spread - -Contributions are coming from both corporate email accounts and private addresses (such as gmail.com, gmx.de, icloud.com, and outlook.de). - -![Corona-Warn-App contributors' email domains][30] - -Data source: [Corona-Warn-App dashboard][23] (Manrique Lopez, [CC BY-SA 4.0][7]) - -Also, there is no noticeable decline in commits over the weekend, which is unusual for software produced by employees on paid time. - -![Corona-Warn-App commits by date][31] - -Data source: [Corona-Warn-App dashboard][23] (Manrique Lopez, [CC BY-SA 4.0][7]) - -These facts may be signs of contributors' sense of urgency or commitment to fighting the spread of COVID-19, even on their own time. - -There is, however, a different pattern in issue and pull request submissions: they are more common during the week than on weekends, even though commits happen regularly over the week. One possible explanation for this is that developers work uniformly throughout the week but upload and interact with issues mostly during workdays. - -![Corona-Warn-App patches by day][32] - -Data source: [Corona-Warn-App dashboard][23] (Manrique Lopez, [CC BY-SA 4.0][7]) - -![Corona-Warn-App issues by day][33] - -Data source: [Corona-Warn-App dashboard][23] (Manrique Lopez, [CC BY-SA 4.0][7]) - -#### Outstanding developer engagement - -Onboarding of developers has been really quick—currently about 50 people by daily contributions and more than 100 people by weekly contributions. - -These numbers are common for corporate projects, but Corona-Warn-App has assembled a team of more than 100 developers from at least six companies in just 45 days. Is this another lesson corporate software development can learn and apply from open source development? - -![Corona-Warn-App engagement][34] - -Data source: [Corona-Warn-App dashboard][23] (Manrique Lopez, [CC BY-SA 4.0][7]) - -![Corona-Warn-App engagement][35] - -Data source: [Corona-Warn-App dashboard][23] (Manrique Lopez, [CC BY-SA 4.0][7]) - -Engagement differs in different repositories; for example, the iOS app had about eight times the commits as the Android app. Lines per commit and files per commit suggest that this is likely real development, not snapshots masquerading as development. - -![Corona-Warn-App repos][36] - -Data source: [Corona-Warn-App dashboard][23] (Manrique Lopez, [CC BY-SA 4.0][7]) - -#### Time efficiency - -One worrisome piece of data is in the time to close pull requests. The mean is short, but the median is too short. That could either mean a very well-streamlined code review in a tightly coupled team or very little code review. - -![Corona-Warn-App time to merge][37] - -Data source: [Corona-Warn-App dashboard][23] (Manrique Lopez, [CC BY-SA 4.0][7]) - -![Corona-Warn-App open PR time][38] - -Data source: [Corona-Warn-App dashboard][23] (Manrique Lopez, [CC BY-SA 4.0][7]) - -### Closing thoughts - -Corona-Warn-App is a successful example of how governments and public administrations can use open collaboration to scale up to fight a global crisis. Data saves lives, and now more than ever, we need to break silos, be transparent, and work towards a common goal. - -Transparency is not only about making code publicly available. Transparency is about fairness and trust, and software development analysis is a good example of how to take advantage of transparency to better understand the software that matters to you. - -If you liked this analysis, note that you can do your own with Cauldron.io, as it's [free, open source software][39]. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/7/open-source-contact-tracing - -作者:[J. Manrique Lopez de la Fuente][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/jsmanrique -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/rh_003588_01_rd3os.combacktoschoolserieshe_rh_041x_0.png?itok=tfg6_I78 (Hands holding a mobile phone with open on the screen) -[2]: https://www.coronawarn.app -[3]: https://en.wikipedia.org/wiki/Severe_acute_respiratory_syndrome_coronavirus_2 -[4]: https://en.wikipedia.org/wiki/Coronavirus_disease_2019 -[5]: https://en.wikipedia.org/wiki/Exposure_Notification -[6]: https://opensource.com/sites/default/files/uploads/corona-warn.png (Corona-Warn-App branding) -[7]: https://creativecommons.org/licenses/by-sa/4.0/ -[8]: https://opensource.org/osd -[9]: https://github.com/corona-warn-app/cwa-documentation/blob/master/CONTRIBUTING.md -[10]: https://it.wikipedia.org/wiki/Immuni -[11]: https://fr.wikipedia.org/wiki/SwissCovid -[12]: https://fr.wikipedia.org/wiki/StopCovid -[13]: https://english.elpais.com/society/2020-06-29/spain-launches-first-phase-of-coronavirus-tracking-app.html -[14]: https://radarcovid.covid19.gob.es/ -[15]: https://opensource.com/sites/default/files/uploads/radarcovid.jpg (radarcovid.covid19.gob.es offline on July, 8th, 2020) -[16]: https://publiccode.eu/ -[17]: https://publiccode.net/ -[18]: https://opensource.com/sites/default/files/uploads/corona-warn-open-source.jpg (Corona-Warn-App's open source approach) -[19]: https://opensource.com/sites/default/files/uploads/corona-warn-partner.jpg (Corona-Warn-App development partners) -[20]: https://de.statista.com/statistik/daten/studie/1125951/umfrage/downloads-der-corona-warn-app/ -[21]: https://twitter.com/onyame/status/1272505372360785920 -[22]: https://opensource.com/users/jgbarah -[23]: https://cauldron.io/dashboard/1545 -[24]: https://cauldron.io/ -[25]: https://chaoss.github.io/grimoirelab/ -[26]: https://twitter.com/jgbarah/status/1272777800102141957 -[27]: https://opensource.com/sites/default/files/uploads/corona-warn_development.png (Corona-Warn-App development data) -[28]: https://opensource.com/sites/default/files/uploads/corona-warn_prs.png (Corona-Warn-App pull requests) -[29]: https://opensource.com/sites/default/files/uploads/corona-warn_issues.png (Corona-Warn-App issues) -[30]: https://opensource.com/sites/default/files/uploads/corona-warn_users.png (Corona-Warn-App contributors' email domains) -[31]: https://opensource.com/sites/default/files/uploads/corona-warn_commits.png (Corona-Warn-App commits by date) -[32]: https://opensource.com/sites/default/files/uploads/corona-warn_submission1.png (Corona-Warn-App patches by day) -[33]: https://opensource.com/sites/default/files/uploads/corona-warn_submission2.png (Corona-Warn-App issues by day) -[34]: https://opensource.com/sites/default/files/uploads/corona-warn_engagement1.png (Corona-Warn-App engagement) -[35]: https://opensource.com/sites/default/files/uploads/corona-warn_engagement2.png (Corona-Warn-App engagement) -[36]: https://opensource.com/sites/default/files/uploads/corona-warn_repo.png (Corona-Warn-App repos) -[37]: https://opensource.com/sites/default/files/uploads/corona-warn_timetomerge.png (Corona-Warn-App time to merge) -[38]: https://opensource.com/sites/default/files/uploads/corona-warn_opentime.png (Corona-Warn-App open PR time) -[39]: https://gitlab.com/cauldronio/cauldron diff --git a/sources/talk/20200721 Data-center survey- IT seeks faster switches, intelligent computing.md b/sources/talk/20200721 Data-center survey- IT seeks faster switches, intelligent computing.md deleted file mode 100644 index fe915f2a5a..0000000000 --- a/sources/talk/20200721 Data-center survey- IT seeks faster switches, intelligent computing.md +++ /dev/null @@ -1,58 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Data-center survey: IT seeks faster switches, intelligent computing) -[#]: via: (https://www.networkworld.com/article/3566925/data-center-survey-it-seeks-faster-switches-intelligent-computing.html) -[#]: author: (Andy Patrizio https://www.networkworld.com/author/Andy-Patrizio/) - -Data-center survey: IT seeks faster switches, intelligent computing -====== -As data use changes, so do technical needs of the data center operators, who want speed and intelligence. -monsitj / Getty Images - -The growth in data use and consumption means the needs of IT managers are changing, and a survey from Omdia (formerly IHS Markit) found [data-center][1] operators are looking for intelligence of all sorts, not just the artificial kind. - -Omdia analysts recently surveyed IT leaders from 140 North American enterprises with at least 101 employees working in North American offices and data centers and asked them what features they wanted the most in their networking technology. - -The results say respondents expect to more than double their average number of data-center sites between 2019 and 2021, and the average number of servers deployed in data centers is expected to double over the same timeline. - -“The on-premises enterprise data center continues to flourish,” the authors wrote in the report. “We are seeing a continuation of the enterprise DC growth phase signaled by the 2018 respondents and confirmed by the respondents of this study. The transformation of the on-premises DC to a cloud architecture continues, and the enterprise DC will be considered a first-class citizen as enterprises build their multi-clouds and shift compute to the edge.” - -But the emphasis appears to be on networking and not necessarily server gear. From 2019 to 2021, more than 60% of respondents expect to increase their investments in Ethernet switches, Fibre Channel switches, network analytics, and network automation. The installed base of data-center Ethernet-switch ports will grow 27% between 2019 and 2021 with higher speeds (100/200/400GE) making up a larger portion of the deployed base. - -High speeds (65% of respondents), openness and interoperability (65%), and application-awareness (65%) are the top features respondents seek when making data-center Ethernet-switching purchases. Increased port speeds are an obvious upgrade decision, and it remains top-of-mind for enterprises. - -And not just any switches will do. The number of respondents using Open Compute Project (OCP)-certified switches has risen significantly since 2019: 76% of respondents adopted OCP switches in 2019 per the 2019 survey versus 60% of respondents in 2018. Bare-metal switches, like those offered by vendors of OCP-certified equipment, are available from several hardware vendors such as Edgecore, Delta Networks and Mellanox/Nvidia. - -### Smarter software** - -** - -Application awareness and automated virtual machine (VM) movement are becoming more important as more data center traffic gets routed from central data centers to edge locations globally. Omdia says the results show that data-center networks can no longer operate in siloes, and respondents want solutions that are easy to integrate, allowing them to monitor their data across compute and storage, independent of physical data-center location. - -And with all that data and virtual machines to move around, respondents seem to be keen on the benefits that AI promises to bring. Many vendors claim their high-throughput (100G-plus Ethernet) DC switches are designed for use in environments required to handle resource-intense applications like AI and ML. But Omdia says it remains to be seen how AI features will impact the DC networking market and what qualitative and quantitative outcomes will result. - -Omdia also says data-center orchestration software will provide automated coordination and management of resource pools including network equipment, servers, and storage. “Enterprise IT teams are selecting orchestration software, and the choice for physical and virtual switching in the DC will depend on the orchestration software selected,” the report said. - -It flags Red Hat Enterprise OpenStack Platform (celebrating its tenth anniversary this month), VMware vCloud, Cisco Intelligent Automation for Cloud [IAC], and Microsoft System Centerj among the leaders of data center orchestration. - -Join the Network World communities on [Facebook][2] and [LinkedIn][3] to comment on topics that are top of mind. - --------------------------------------------------------------------------------- - -via: https://www.networkworld.com/article/3566925/data-center-survey-it-seeks-faster-switches-intelligent-computing.html - -作者:[Andy Patrizio][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://www.networkworld.com/author/Andy-Patrizio/ -[b]: https://github.com/lujun9972 -[1]: https://www.networkworld.com/article/3223692/what-is-a-data-centerhow-its-changed-and-what-you-need-to-know.html -[2]: https://www.facebook.com/NetworkWorld/ -[3]: https://www.linkedin.com/company/network-world diff --git a/sources/talk/20200722 Student Linux club refurbishes computers to support distance learning.md b/sources/talk/20200722 Student Linux club refurbishes computers to support distance learning.md deleted file mode 100644 index 18f40c2026..0000000000 --- a/sources/talk/20200722 Student Linux club refurbishes computers to support distance learning.md +++ /dev/null @@ -1,70 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Student Linux club refurbishes computers to support distance learning) -[#]: via: (https://opensource.com/article/20/7/donate-linux) -[#]: author: (Cam Citrowske https://opensource.com/users/camcitrowske) - -Student Linux club refurbishes computers to support distance learning -====== -Open source helps bridge the digital divide for families in need of -computers for distance learning during the pandemic. -![][1] - -_This article is co-written by Cam Citrowske, a member of the Penguin Corps._ - -It was March 17, 2020, and I was in my classroom at Aspen Academy. The clock was ticking. This was to be the last day of school before we, along with every other public school in Minnesota, would close due to the outbreak of the new coronavirus. I had students in my room during lunch, advisory periods, and my elective classes all doing the same thing—installing Linux onto old computers so we could give them to students who would use them for school at home during the shelter in place order. I was only going to have the kids' help until dismissal time, but in the end, we had 17 computers ready to go. It was a start. - -Hi, I'm Stu Keroff. I'm a social studies and technology teacher at Aspen Academy in Savage, MN. I am also the director of the Penguin Corps, our school's Linux club. When we started the club back in September of 2019, I wanted the kids at my new school to take on the same type of mission that the kids at my last school had: using Linux to close the "digital divide" (see this [article][2] about the Community School of Excellence Asian Penguins for more information). The Penguin Corps gave away a few computers during the year, but nothing had prepared us for what was coming. - -It was in January that I first heard about COVID-19. At the time, it was making people sick in other countries, and while it was a topic of discussion in my social studies classes, I wasn't concerned because it wasn't in Minnesota. - -![Linux club donating computers][3] - -(Stu Keroff, [CC BY-SA 4.0][4]) - -By March, that had changed. Businesses were talking about how they would respond to the pandemic, and it raised the conversation about how it would affect schools. Fast forward to March 18, when all the schools in Minnesota were closed and converted to distance learning—teachers provide lessons online, and kids attend school in their homes over the internet. It was a huge change for all of us! - -While it was tough for many of my students to go to school from their bedrooms or dining rooms, at least most of them had computers to use. But what about the kids at school who didn't have computers? Or the families who didn't have enough computers for all of the kids in the house? What were they supposed to do? - -Our school's administrators reached out to me and the Penguin Corps to create a solution. We surveyed parents to find out how many families needed a computer and then got to work. We started by putting Linux on computers the school was no longer using, and then we gave those away. More responses started to pour in. We realized that the supply we had would not even be close to enough. This became a serious problem that was in need of a bigger solution. - -Once we realized that, we started to ask for more. With help from the school, we reached out over social media and in the local newspaper, asking people to donate their old computers to us. A number of people and even some businesses like Caribou Coffee and St. Vincent de Paul of the Twin Cities responded. Laptops started to pour in. Most of them worked, but some needed minor repairs, such as new batteries, a charger, or a hard drive. All of the computers needed new software. Linux and open source apps were the solution. We got the computers up and running, tested them, and left them with the school to distribute. - -The school continued to take referrals, and people came in to pick up laptops. The office receptionist eventually joined our team, walking parents through the software before they left with their laptops. Even though she had no previous experience with Linux, she was able to jump right in and contribute. - -Prior to the shutdown, the Penguin Corps gave away six computers. Between March 16 and the first week of May, we gave away 60 computers. This effectively closed our school's digital divide. - -And at what cost? Since we chose to go with used computers instead of buying new ones, the only thing we had to pay for were batteries, chargers, a couple of hard drives, and a keyboard. Total cost: approximately $900.00, or an average of $12.33 per computer, including the computers we had left over, which we're saving for the fall term. - -The program even gave us the opportunity to help people outside of our school. Reverend Tim Christopher, a pastor in North Minneapolis, reached out to me and the Penguin Corps to ask for our help. A single mother in Minneapolis with two school-aged children needed computers for her kids to do distance learning from their home. Thanks to the Penguin Corps, both kids got one to use for school, for free. - -Aspen Academy principal Melanie Jiskra said, "It was through this group of change agents that all Aspen Academy families had enough devices to continue their education through distance learning. Without the generosity of the people and companies who donated the laptops, the hard work and commitment of Mr. Keroff, and the talent, drive, and passion of the students to serve others, Aspen Academy would not have as successfully bridged the digital divide during this pandemic." - -COVID-19 presented all schools with a challenge, and Aspen Academy's Penguin Corps demonstrated that open source software could be used to meet it. Our biggest challenge became our biggest victory. - -Do you want to know more about how a Linux club can help your school or a school near you? You can email me at [studoeslinux@gmail.com][5]. You can also get ideas for starting your own program at [www.linuxclubguide.com][6]. - -The Asian Penguins Linux users group for middle school students is improving people’s lives through... - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/7/donate-linux - -作者:[Cam Citrowske][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/camcitrowske -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/penguin_corps_group_photo.jpg?itok=_uQlfxDa -[2]: https://opensource.com/education/15/3/asian-penguins-Linux-middle-school-club -[3]: https://opensource.com/sites/default/files/pictures/linux-club-donating-computers.jpg (Middle school Linux club donating computers) -[4]: https://creativecommons.org/licenses/by-sa/4.0/ -[5]: mailto:studoeslinux@gmail.com -[6]: http://www.linuxclubguide.com diff --git a/sources/talk/20200726 Globalization- A history of openness.md b/sources/talk/20200726 Globalization- A history of openness.md deleted file mode 100644 index 7c056d7107..0000000000 --- a/sources/talk/20200726 Globalization- A history of openness.md +++ /dev/null @@ -1,82 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Globalization: A history of openness) -[#]: via: (https://opensource.com/open-organization/20/7/globalization-history-open) -[#]: author: (Ron McFarland https://opensource.com/users/ron-mcfarland) - -Globalization: A history of openness -====== -The history of our interconnected world is also a history of our -willingness to open up. -![India on the globe][1] - -In my career conducting international business, I traveled to more than 80 countries worldwide. I was always struck by how strongly regions of the world are connected, and I began studying the forces of globalization as a result. - -Several books on this subject were critical to this research. But the one I'd like to highlight here is [World 3.0: Global Prosperity and How to Achieve It][2] by Pankaj Ghemawat. This book first taught me how _little_ the global community is connected—but also how far it has come compared to the past. During Prof. Ghemawat's research, he worked with DHL and ultimately helped develop the [DHL Global Connectedness Index][3], which tracks how well the global community is interacting in four key measurements: trade, investment, telecommunication, and travel/migration. From that work, I developed and delivered a presentation on [global connectedness][4], which stressed that the world should increase its scores on those four measurements of globalization, as they are directly linked to food supply, health, security, pollution, jobs and other global benefits. - -In this article series, I'll present my research from that period, then explain how we might think about the intersection of globalization and [open organization principles][5] around the world today. When people use terms like "globalization" and "global connectedness," in most cases what they _really_ mean is "building coordinated communities to provide goods/service globally and address global issues." Open organization principles are applicable here—but in this context, on a global scale. - -But before I can explain that interconnection, I'll first need to outline Prof. Ghemawat's criteria. In this article, I'll do that, with a special emphasis on the way open organization principles are critical to all of them. - -### Trade - -By "trade," I'm referring to the imports and exports of goods and services between countries. It's a key dimension of a globally connected world. Trading extremely simple products and services might be possible via electronic transactions, perhaps over the internet. But on the other hand, highly complex products may require a company to build a distribution network in a wide range of countries worldwide. In this case, then, connectivity, collaboration, and leveraging other open organization principles would be extremely important. In my last job, for example, I set up product distributors throughout Europe and the United States and a production operation in China. Building a strong relationship was very important, difficult and took time and effort. I had to use open organization principles to their fullest. - -### Investment - -Global financial investments also have an impact on global connectedness. If an investor simply purchases shares of an overseas company or deposits funds in an overseas bank account, then more complex relationships are not as critical. But if a company wants to invest in a factory (or sales office for that matter) in a foreign country, then a great deal of interpersonal interaction is required. Economists define these two types of investments differently; they call the latter "foreign direct investment" or FDI. Projects focused on FDI get people working closely with each other across traditional geographic boundaries. Here again, open organization principles will play an important role. - -### Communications - -When considering global communications, think of two broad categories: verbal communications and written communications. The former may involve, for example, telephone communications—simply having the ability to get on a telephone and affordably talk to someone anywhere on the globe. Even today, in many parts of the world, this is not technically possible. On top of that, language becomes a problem internationally, as many people aren't communicating in a common language. These issues are being addressed, but according to the 2019 DHL Global Connectedness Index, this has been more difficult to measure than in the past. Today, there are simply too many communication methods to make tracking this dimension as easy as it was in the past, and those methods seem to be increasing at an exponential rate. - -Thanks to proliferating internet access, written forms of communication are also increasing worldwide, but measuring, again, is more difficult to do. For this reason, I'd guess that the next real technological breakthrough will involve both foreign language electronic verbal communication (interpreting) and written communication (translating) software. This software is improving all the time, and could greatly contribute to global communications and information sharing between languages. This, then, will all lead to better integration and spread of open organization principles, as communications are sure to continue to increase worldwide. (Personally, I don't think this technology will replace person-to-person interaction, but could certainly support it.) - -### Travel/migration - -The last factor in the DHL Global Connectedness Index is the movement of people between countries. The first question to ask here is: "Why are people leaving a country and crossing borders? Why do people go from one country to another?" Reasons may include: for better education, for tourism purposes, for economic opportunities, and for safety (e.g., escaping war). Whatever the reason, it will determine how much people will interact with others in the host country. Wanting to go to a foreign country and being forced to leave one's home country are very different situations. The DHL Global Connectedness Index tries to measure factors like this. Open organization principles can be helpful here, particularly in community-building efforts, and in efforts to promote inclusivity. - -Although these factors are always shifting, people of the world will continue to communicate, collaborate, interact, and influence each other on an ever-expanding scale. - -And yet, if you study the DHL Global Connectedness Index, you will find that in all four measurements of trade, investment, communications and travel, the world is far less connected than it could be. More interaction still occurs within national borders than between countries. But as I will demonstrate in future articles of this series, global connectedness has a rather short history, relatively speaking, and we're still learning how best to collaborate and govern in a globally connected world. Understanding the role of open organization principles in this work will become even more important in the years ahead. - -### Think global, act local - -As we consider these issues and the impact open-style thinking can have on them, we'll naturally begin to ask: Where—and on what scale—should we begin addressing these problems? Are the issues _personal_, _local, national, or global_ in their scope and impact? - -As we'll see in future articles in this series, issues like these are often too complex to be confined to just one of those scales. That's why it's important to think about "[glocalization][6]" to address these issues by respecting both local concerns and global impact. - -Take the coronavirus for example. It impacts all humanity and requires [an open, global discussion applying open organization principles][7]. And global organizations, like the [World Health Organization (WHO)][8], will be involved in determining and communicating guidelines for combating the spread of COVID-19. But the issue is a personal one, too, as individuals learn new ways to take responsibility both for their health and the health of those around them. - -So, as we continue exploring the dimensions of the DHL Global Connectedness Index, we should remember that many issues cut across all scales of human activity—and that our responses, based on open principles, should also operate at multiple levels. They should be [_adaptive_ to their contexts][9]. - -In the next article, I'll examine a short history of globalization. Interestingly enough, open organization principles have been at work since the beginning. I'll discuss globalization up to the Industrial Revolution (around the 1800s). In a later installment, I will discuss the evolution of globalization from the Industrial Revolution to the present day. - -Armed with insight from the past, I want to offer proposals for moving forward on issues like pandemics, [climate change][10], global pollution, and others. - --------------------------------------------------------------------------------- - -via: https://opensource.com/open-organization/20/7/globalization-history-open - -作者:[Ron McFarland][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/ron-mcfarland -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/india-globe-map.jpg?itok=6sSEL5iO (India on the globe) -[2]: https://www.amazon.com/World-3-0-Global-Prosperity-Achieve/dp/142213864X -[3]: https://www.dhl.com/global-en/home/insights-and-innovation/thought-leadership/case-studies/global-connectedness-index.html -[4]: https://www.slideshare.net/RonMcFarland1/global-collaborating-create-prosperity?qid=ad57b725-174e-4cf2-8264-ac424a6ad814&v=&b=&from_search=22 -[5]: https://opensource.com/open-organization/resources/open-org-definition -[6]: https://en.wikipedia.org/wiki/Glocalization -[7]: https://opensource.com/open-organization/20/6/covid-alliance -[8]: https://www.who.int/ -[9]: https://opensource.com/open-organization/19/3/adaptive-leadership-review -[10]: https://opensource.com/open-organization/19/10/global-energy-climate-challenges diff --git a/sources/talk/20200727 Are newer medical IoT devices less secure than old ones.md b/sources/talk/20200727 Are newer medical IoT devices less secure than old ones.md deleted file mode 100644 index db3345b9d9..0000000000 --- a/sources/talk/20200727 Are newer medical IoT devices less secure than old ones.md +++ /dev/null @@ -1,72 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Are newer medical IoT devices less secure than old ones?) -[#]: via: (https://www.networkworld.com/article/3568608/are-newer-medical-iot-devices-less-secure-than-old-ones.html) -[#]: author: (Jon Gold https://www.networkworld.com/author/Jon-Gold/) - -Are newer medical IoT devices less secure than old ones? -====== -Legacy medical IoT devices may lack security features, but newer ones built around commodity components can have a whole different set of vulnerabilities that are better understood by attackers. -Thinkstock - -Experts differ on whether older connected medical devices or newer ones are more to blame for making healthcare networks more vulnerable to cyberattack. - -The classic narrative of insecure [IoT][1] centers on the integration of older devices into the network. In some industries, those devices pre-date the [internet][2], sometimes by a considerable length of time, so it’s hardly surprising that businesses face a lot of challenges in securing them against remote compromise. - -[[Get regularly scheduled insights by signing up for Network World newsletters.]][3] - -Even if those devices aren’t quite that old, they often lack key capabilities – in particular, remote software updates and configurable password protection – that would help IT staff defend them against modern threats. - -That might not be strictly true in regards to the medical field, according to Richard Staynings, chief security strategist for medical IoT security startup Cylera. There has, he argues, been an explosion in the number and variety of medical IoT devices in recent years, and many of those gadgets are at least as insecure as the true legacy equipment in the field. - -In some cases, said Staynings, the older devices might actually be considerably more secure than those of more recent vintage. In particular, those based on dated technology like older versions of electrically erasable programmable read-only memory (EEPROM). - -“The older systems were written in EEPROM – you need an EEPROM reader to mess with them,” he said. “The codebase is not on the Internet for hackers to look at, and you need physical access to the EEPROM to rewrite it.” - -In contrast, the newer devices frequently use software and hardware components that are much more familiar to potential attackers. “They’re more ubiquitous in their design and construction – they use [consumer off-the-shelf] operating systems, like Windows embedded, which is still being used believe it or not, and they are much more vulnerable to attack than a legacy system,” Staynings said. - -Insecurity in the current generation of medical IoT hardware also carries the potential for ongoing problems, not just immediate ones. While IT assets get replaced rapidly, IoT devices often have much longer replacement cycles. “Medical devices have the half-life of plutonium,” said Staynings. “They just don’t go away.” - -Other experts are less sold on Staynings’ characterization of the threat to medical IoT, arguing that the idea that newer devices pose a greater threat than older ones flies in the face of recent efforts to make them safer. Keith Mularski directs an advisory cybersecurity practice at Ernst and Young, and described Staynings’ assertion as “surprising,” noting that the regulatory landscape for connected medical devices is quickly moving standards in a positive direction. - -“The FDA has some pretty stringent guidelines that before devices can go to market, you need to put together threat modeling, so looking at security architecture, vectors, and so on ,and then in addition to that the FDA is getting ready to require third-party pen testing in premarket submissions,” said Mularski. “With legacy devices, those premarket submissions aren’t nearly as complete.” - -Mularski does concede that some particularly vulnerable old devices are often more isolated on the network by design, in part because they’re more recognizable as vulnerable assets. Windows 95-vintage x-ray machines, for example, are easy to spot as a potential target for a bad actor. - -“For the most part, I think most of the hospital environments, they do a good job at recognizing that they have these old deices, and the ones that are more vulnerable,” he said. - -This underlines a topic most experts on – simple awareness of the potential security flaws on a given network are central to securing healthcare networks. Greg Murphy is the CEO of Ordr, a network visibility and security startup based in Santa Clara. He said that both Mularski and Staynings have points in their favor. - -“Anyone who minimizes the issue of legacy devices needs to walk a mile in the shoes of the biomedical engineering department at a hospital,” he said. “[But] on the flipside, new devices that are being connected to the network have huge vulnerabilities themselves. Many manufacturers themselves don’t know what vulnerabilities their devices have.” - -The only real way to address the issues, said Murphy, is at the network level – trying to make everything secure at the device level might be a near-impossibility in many cases, and even getting an accurate picture of every device connected to a network often requires the use of an automated solution. - -“This is not a problem of human scale anymore,” he said. - -Both Mularski and Staynings concurred on this point, as well. Regardless of which devices on a particular network are the most vulnerable, it’s worth remembering that cybercriminals generally aren’t particular about what they compromise, as long as they’re able to gain access. - -“There may be an attacker that comes across these devices, runs a scan and happens to see [a vulnerability], but we really haven’t seen specific targeting of medical devices,” said Mularski. “It’s important to make sure that companies that have medical devices are enumerating their network, tracking their devices.” - -Join the Network World communities on [Facebook][4] and [LinkedIn][5] to comment on topics that are top of mind. - --------------------------------------------------------------------------------- - -via: https://www.networkworld.com/article/3568608/are-newer-medical-iot-devices-less-secure-than-old-ones.html - -作者:[Jon Gold][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://www.networkworld.com/author/Jon-Gold/ -[b]: https://github.com/lujun9972 -[1]: https://www.networkworld.com/article/3207535/what-is-iot-the-internet-of-things-explained.html -[2]: https://www.networkworld.com/article/3410588/evolution-of-the-internet-celebrating-50-years-since-arpanet.html -[3]: https://www.networkworld.com/newsletters/signup.html -[4]: https://www.facebook.com/NetworkWorld/ -[5]: https://www.linkedin.com/company/network-world diff --git a/sources/talk/20200728 Green Data Centers - Scaling environmental sustainability for business and consumers collectively.md b/sources/talk/20200728 Green Data Centers - Scaling environmental sustainability for business and consumers collectively.md deleted file mode 100644 index 88bc67ff05..0000000000 --- a/sources/talk/20200728 Green Data Centers - Scaling environmental sustainability for business and consumers collectively.md +++ /dev/null @@ -1,105 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Green Data Centers – Scaling environmental sustainability for business and consumers collectively) -[#]: via: (https://www.networkworld.com/article/3568670/green-data-centers-scaling-environmental-sustainability-for-business-and-consumers-collectively.html) -[#]: author: (QTS https://www.networkworld.com/author/Andy-Patrizio/) - -Green Data Centers – Scaling environmental sustainability for business and consumers collectively -====== -10 Tips for Choosing the Best Green Data Center -Regardless of how you identify politically, environmental sustainability has become an undeniable business directive. Global warming from carbon emissions, increasing sea levels and images of pollution are increasing public and shareholder pressure on corporations to take an active role in finding solutions and be accountable by setting goals and publicly documenting results. - -In the IT industry, reducing electrical power generation from fossil fuels is priority #1, followed closely by water conservation and waste management.   - -Multi-tenant data centers are one of the largest per capita consumers of electric power. Based on current estimates, data centers in the U.S. alone will consume approximately 73 thousand megawatts (MW) in 2020. - -To put this in perspective, one megawatt is enough to power 700 households. A single data center can use power equivalent to a small city and typically requires a significant amount of water for cooling. - -Worldwide, it’s estimated that data centers consume about three percent of the global electric supply and account for about two percent of total greenhouse gas (GHG) emissions. - -Data center efficiency and sustainability now transcends companies, geographies, and workloads. There is no simple solution and the challenge is compounded as massive digitization of data globally is creating a parallel demand for energy. - -IDC predicts the world’s data will grow from 33 zettabytes in 2017 to 175 zettabytes in 2025 and the amount of energy used by data centers continues to double every four years - meaning they have the fastest-growing carbon footprint of any area within the IT sector.  - -Technological advancements are difficult to forecast, but several models predict data center energy usage could surpass more than 10% of the global electricity supply by 2030 if left unchecked. - -For all of these reasons, the creation of green, sustainable, multi-tenant data centers has become essential in both an environmental and a business sense. Green data centers are built on pillars of commitments to innovative green and renewable strategies, water reclamation, recycling and waste management, and more. They do not contain obsolete systems (such as inactive or underused servers), and take advantage of newer, more efficient technologies. - -Taking cues from the hyperscale data center operators, green data centers recognize the need to lead with modular energy efficient data center designs from the onset, adopt the latest in building technology and influence the overall supply chain for the actual sourcing of materials for these green data centers. - -Benefits such as cost reduction, increased efficiency and knowledge that you are a better corporate citizen are obvious. What is not readily apparent is that by moving into a green multi-tenant data center, sustainability benefits are also passed on to the businesses and consumers who collectively benefit from the data center’s green IT infrastructure. - -The economies of scale are extremely significant. Instead of a business (such as a large online retailer) attempting to deploy its own green IT environment to power its service delivery, it outsources it to the green data center that can do it cheaper and better. The sustainability benefits are then passed along to all the consumers using its services and there could be hundreds of businesses like this in a single  green data center. - -In addition, when you deal with a true green data center that is serious about sustainability, the benefits go far beyond the requirement that your power be renewable. There are environmental and philanthropic benefits that can be linked with your outsourced IT infrastructure. - -The best green data center operators are starting to formally document and report their progress in Environmental, Social and Governance (ESG) reports made public annually. For conventional enterprises and data centers that do not have measurable sustainability as part of their governance, it is coming. - -[QTS][1]  is one of a few data center companies holding themselves accountable as global citizens and committing to sustainability best practices that are impactful, achievable and will ultimately set the standard for the data center industry in the years to come. - -QTS has committed to minimizing its data center carbon footprint utilizing as much renewable fuel, reclaimed water and recycled materials as possible by implementing a methodic sustainability approach featuring energy efficiency measures and renewable energy procurement, all backed by continuous innovation. - -Knowing that transparency is fundamental to accountability, QTS is documenting and publicly reporting on sustainability goals, metrics and best practices – one of only a few data center companies to do so. - -To support this, QTS’ recently published its second Environmental, Social and Governance (ESG) Initiatives report ([accessed here][2]) that documents the industry’s first formal commitment to provide 100% renewable energy across all of its data centers by 2025. - -In 2019, QTS won numerous awards including the coveted GRESB benchmark ranking QTS as the #1 sustainable data center company among all data centers globally for its ESG initiatives. - -Today QTS has seven data centers running on 100% renewable energy. Approximately 30% of its overall data center power requirements are now sourced from renewable energy sources, representing over 300 million kilowatt-hours (kWh) of renewable power. [According to the EPA][3], this makes QTS one of the largest users of green power among all data center companies and the 12th largest user among Top Tech & Telecom companies.  - -**10 Tips for Choosing a Green Data Center** - -For those operating on-premises legacy data centers looking to move into green data centers, or for organizations already outsourcing to a less than green provider, following are 10 tips when evaluating green data center providers. - - * Check the providers’ ESG scores and reviews from ranking organizations such as GRESB, The Carbon Disclosure Project (CDP), RE100, the EPA Green Power Partnership, Sustainalytics and look for documented commitments to 100% renewable energy. - - - * Look for innovation in power such as the use of AI to forecast power consumption, analyze data output, humidity, temperature, and other important statistics for improving efficiency, drive down costs, and reduce total power consumption. - - - * Check the EPA Green Power ranking to find the data centers leading in renewable power commitments. - * Look for industry-first zero water cooling solutions powered by 100% renewable wind and solar power. - - - * Renewable energy should impactful and cost effective. Look for data centers with innovative power procurement models that allow it purchase renewable energy on parity or below the price of conventionally produced power. - - - * Look for innovative companies that create an open dialogue with customers to gather feedback on sustainability initiatives and help the customers meet their ESG goals. - - - * Look for data center operators that work closely with utilities to develop tariffs and legislation that make it easier and more cost effective for everyone to procure renewable energy. - - - * Look for providers with innovative philanthropic programs such as the “Grow with QTS” program that plants more than 20,000 trees in the Sierra Mountains every year on behalf of its customers, or its HumanKind program that promotes clean water solutions in developing regions. - - - * Look for providers actively speaking and participating with leading organizations such as the EPA’s Green Power Partnership, REBA, the Data Center Coalition’s energy committee and RE100. - - - * Look for providers touting on-site physical features such as smart temperature and lighting controls, rainwater reclamation, recycling and waste initiatives, and EV charging stations. - - - -No industry, nor individual company, is perfect. But, when necessary, it can align around a core set of principles that benefit themselves, their communities and generations to come. The threat of global climate change makes it impossible for data center providers to ignore their roles in the global concern. Committing to action today, as a unified industry, benefits all. - -The fact that so many businesses are more environmentally aware means that contemplating what green, sustainable data centers can offer is becoming an increasingly important standard for choosing a data center provider. - --------------------------------------------------------------------------------- - -via: https://www.networkworld.com/article/3568670/green-data-centers-scaling-environmental-sustainability-for-business-and-consumers-collectively.html - -作者:[QTS][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://www.networkworld.com/author/Andy-Patrizio/ -[b]: https://github.com/lujun9972 -[1]: https://www.qtsdatacenters.com/ -[2]: https://www.qtsdatacenters.com/resources/brochures/esg-initiatives-2019 -[3]: https://www.epa.gov/greenpower/green-power-partnership-top-30-tech-telecom diff --git a/sources/talk/20200729 Switch turns to Tesla for renewable energy storage.md b/sources/talk/20200729 Switch turns to Tesla for renewable energy storage.md deleted file mode 100644 index dfbcdb7320..0000000000 --- a/sources/talk/20200729 Switch turns to Tesla for renewable energy storage.md +++ /dev/null @@ -1,62 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Switch turns to Tesla for renewable energy storage) -[#]: via: (https://www.networkworld.com/article/3568358/switch-turns-to-tesla-for-renewable-energy-storage.html) -[#]: author: (Andy Patrizio https://www.networkworld.com/author/Andy-Patrizio/) - -Switch turns to Tesla for renewable energy storage -====== -Switch will power its massive data centers with solar energy and use Tesla Megapacks for large-scale energy storage. -ipopba / Getty Images - -Data center provider [Switch][1] has selected Tesla as the battery supplier for a massive solar project at its northern Nevada data center facilities. - -It's a geographically easy alliance as Switch's campus is right near Tesla's [Gigafactory Nevada][2] manufacturing facility. While best known for its cars, Tesla has also made quite an entry in the battery space with products such as the Powerwall, Powerpack, and Megapack energy storage products. - -Switch recently broke ground on Gigawatt 1, a huge project that will use solar panels from First Solar to generate a total of 555 megawatts (MWs) of power at three locations and Tesla Megapacks to store the energy. - -**READ MORE:** [Data-center power consumption holds steady][3] - -Data centers are frequently built close to renewable sources of energy, usually hydropower. That's why many Amazon, Google, Facebook and Microsoft data centers are sitting by rivers. Solar is the easiest form of power to collect, but it's also the most fickle. Solar-powered sites are at the mercy of darkness and cloudy days, and users don't care if it's overcast out. - -Adam Kramer, executive vice president of strategy at Switch, says peak solar production is around 1 p.m. when the sun is overhead, but overall peak consumer demand is around 5 p.m. to 6 p.m., when the sun is either setting or has set, depending on the time of year. - -In running a [data center][4], there are no peak hours. "The Internet is 24/7. If they aren't using it in New York, they are using it in L.A. We have a very flat power profile. Our load looks the same at 2 a.m. as it does at 2 p.m.," Kramer told me. ** -** - -With solar, and especially in Nevada, Switch had "an overabundance of solar generation but nowhere to store it. During the day we generate max power but [have] no need to use it." - -Advances in Tesla battery storage are a key piece of the puzzle. Switch has been running on 100% solar power since 2016 but couldn't store it because "the technology just wasn't there for it," Kramer says. - -Enter Tesla's Megapack. The Megapack is a beefed-up version of the Tesla PowerWall used for individual homes to store solar power and the PowerPack technology Tesla uses in its electric vehicles. Each Megapack can hold up to three megawatt hours (MWhs) of storage and 1.5 MW of inverter capacity. - -So with enough Megapacks, sunlight energy captured at 1 p.m. can be powering the data center at 1 a.m. - -Kramer says this benefits not only Switch but also its customers. "We are able to lock in extremely competitive pricing for switching our clients for the long-term and not be subject to market volatility. When we're able to reduce our cost, it provides cost savings for all our clients," he says. - -So if Switch can power its massive data centers with solar energy even when the sun does not shine, why can't you? - -Join the Network World communities on [Facebook][5] and [LinkedIn][6] to comment on topics that are top of mind. - --------------------------------------------------------------------------------- - -via: https://www.networkworld.com/article/3568358/switch-turns-to-tesla-for-renewable-energy-storage.html - -作者:[Andy Patrizio][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://www.networkworld.com/author/Andy-Patrizio/ -[b]: https://github.com/lujun9972 -[1]: https://www.switch.com/ -[2]: https://www.tesla.com/gigafactory -[3]: https://www.networkworld.com/article/3531316/data-center-power-consumption-holds-steady.html -[4]: https://www.networkworld.com/article/3223692/what-is-a-data-centerhow-its-changed-and-what-you-need-to-know.html -[5]: https://www.facebook.com/NetworkWorld/ -[6]: https://www.linkedin.com/company/network-world diff --git a/sources/talk/20200730 4 ways I contribute to open source as a Linux systems administrator.md b/sources/talk/20200730 4 ways I contribute to open source as a Linux systems administrator.md deleted file mode 100644 index 2850fc614c..0000000000 --- a/sources/talk/20200730 4 ways I contribute to open source as a Linux systems administrator.md +++ /dev/null @@ -1,70 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (4 ways I contribute to open source as a Linux systems administrator) -[#]: via: (https://opensource.com/article/20/7/open-source-sysadmin) -[#]: author: (Elizabeth K. Joseph https://opensource.com/users/pleia2) - -4 ways I contribute to open source as a Linux systems administrator -====== -You don't have to be a coder to make valuable contributions to the open -source community; here are some other important roles you can fill as a -sysadmin. -![open source button on keyboard][1] - -I recently participated in The Linux Foundation Open Source Summit North America, held virtually June 29-July 2, 2020. In the course of that event, I had the opportunity to speak with a fellow attendee about my career in Linux systems administration and how it had led me to a career focused on [open source][2]. Specifically, he asked, how does a systems administrator who doesn't do a lot of coding participate in open source projects? - -That's a great question! - -A lot of focus in open source projects is placed on the actual code, but there's a lot more to it than that. The following are some ways that I've been deeply involved in open source projects, without writing code. - -### Improving documentation - -I got my official start in open source by rewriting a quickstart guide for a project I used heavily. We spend most of our time using software in production and at scale. We routinely run into configuration gotchas and edge cases, and we often privately develop best practices for managing services effectively. - -Inevitably, we run into things that aren't documented, have out of date documentation, or need improvements to the documentation to be made. This is a great opportunity! The developers and documentation writers are often unaware of these issues, and you have the key to solving them. Typically it starts with a bug report to the documentation project, but if you know the answer, you can often submit a patch to the documentation to improve it. - -### Contributing "recipes" - -We often spend too much time reinventing the wheel when we're launching common services. I remember my early days of slogging through MySQL configuration files to figure out the best settings for the databases for a particular customer. Today, a lot of that has been simplified, allowing us to use Ansible playbooks, Puppet modules, and more to get a basic configuration going. This is a place where you can contribute! Whether it's an official "recipe" you contribute to the appropriate hub or a sample rundown of your configuration or architecture diagram of Logstash, sharing your expertise in the form of examples can be incredibly helpful to others who are facing the same configuration challenges. - -### Hosting project resources - -I spent part of my career as a full-time systems administrator, directly working on hosting project resources for OpenStack, an infrastructure that is fully open source—every config file and Puppet change is done through public code review and tracked in a public Git repository. There are several projects out there that host their infrastructures in an open source manner, many of which are listed on the [Open Source Infrastructure (#openinfra) homepage][3]. These range from KDE and Debian to the Apache Software Foundation. In these communities, external participants can submit improvements to the infrastructure as their time and expertise allow. Since a lot of this is peer-reviewed, it's also a nice opportunity to build your skills in areas you may not be strictly focused on at work. - -I've also done work on specific projects where the need was not broadcasted but was clear once I joined the community. For instance, one of my Linux communities needed a place to host a development website environment so we could try out new plugins and features outside of our production environment. We also found that giving shell accounts to participants was a valuable way to make sure they were always connected to IRC and had a sandbox beyond their own desktop. I now manage two virtual servers for this project to address these needs and have built up my own little systems team inside the project, so I'm not the only administrator. - -### Supporting your fellow users - -As someone who is using software in production, your operational experience is essential to a thriving support outlet, so don't be shy. Participation in user forums, mailing lists, and chat may seem like something that only experts can do, but regardless of your level, you will always have more experience than someone who just started out. A newcomer to the space can help out with simple questions, and give the more experienced participants the energy to answer more complicated questions. The more experience you gain, the more involved you can get in the community. - -### Be a better sysadmin by contributing - -Whatever way you decide to participate, the value gained from contributing to open source projects as a [systems administrator][4] cannot be understated. Your contributions will be noticed by members of the community, and often result in opportunities to chat on the latest project podcast, sit for an interview on the project blog, or speak at an event. All of these things raise your profile in the project as someone who is knowledgeable about the technology. You can also point to your public expertise when you're interviewing for your next role, having a public track record of giving advice in a project where a company is looking for expertise is a huge vote in your favor. - -Finally, I've also found that participating in open source projects to be tremendously valuable on a personal level. I feel good about contributing to the community, and it's rewarding to know that your expertise is valuable to folks outside the walls of your organization. - -Looking for a place to start? Find the communities behind the open source technology you already use and love. Or, if you're looking for a place to [write][5], you've found it here at Opensource.com. - -You don't need to be a master coder to contribute to open source. Jade Wang shares 8 ways you can... - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/7/open-source-sysadmin - -作者:[Elizabeth K. Joseph][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/pleia2 -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/button_push_open_keyboard_file_organize.png?itok=KlAsk1gx (open source button on keyboard) -[2]: https://opensource.com/resources/what-open-source -[3]: https://opensourceinfra.org/ -[4]: https://opensource.com/article/19/7/be-a-sysadmin -[5]: https://opensource.com/how-submit-article diff --git a/sources/talk/20200730 Role Of SPDX In Open Source Software Supply Chain.md b/sources/talk/20200730 Role Of SPDX In Open Source Software Supply Chain.md deleted file mode 100644 index ccae1f1e2d..0000000000 --- a/sources/talk/20200730 Role Of SPDX In Open Source Software Supply Chain.md +++ /dev/null @@ -1,84 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Role Of SPDX In Open Source Software Supply Chain) -[#]: via: (https://www.linux.com/audience/developers/role-of-spdx-in-open-source-software-supply-chain/) -[#]: author: (Swapnil Bhartiya https://www.linux.com/author/swapnil/) - -Role Of SPDX In Open Source Software Supply Chain -====== - -Kate Stewart is a Senior Director of Strategic Programs, responsible for the Open Compliance program at the Linux Foundation encompassing SPDX, OpenChain, Automating Compliance Tooling related projects. In this interview, we talk about the latest release and the role it’s playing in the open source software supply chain. - -*Here is a transcript of our interview. * - -Swapnil Bhartiya: Hi, this is Swapnil Bhartiya, and today we have with us, once again, Kate Stewart, Senior Director of Strategic Programs at Linux Foundation. So let’s start with SPDX. Tell us, what’s new going on in there in this specification? - -Kate Stewart: Well, the SPDX specification just a month ago released auto 2.2 and what we’ve been doing with that is adding in a lot more features that people have been wanting for their use cases, more relationships, and then we’ve been working with the Japanese automotive-made people who’ve been wanting to have a light version. So there’s lots of really new technology sitting in the SPDX 2.2 spec. And I think we’re at a stage right now where it’s good enough that there’s enough people using it, we want to probably take it to ISO. So we’ve been re-formatting the document and we’ll be starting to submit it into ISO so it can become an international specification. And that’s happening. - -Swapnil Bhartiya: Can you talk a bit about if there is anything additional that was added to the 2.2 specification. Also, I would like to talk about some of the use cases since you mentioned the automaker. But before that, I just want to talk about anything new in the specification itself. - -Kate Stewart: So in the 2.2 specifications, we’ve got a lot more relationships. People wanted to be able to handle some of the use cases that have come up from containers now. And so they wanted to be able to start to be able to express that and specify it. We’ve also been working with the NTIA. Basically they have a software bill of materials or SBoM working groups, and SPDX is one of the formats that’s been adopted. And their framing group has wanted to see certain features so that we can specify known unknowns. So that’s been added into the specification as well. - -And then there are, how you can actually capture notices since that’s something that people want to use. The license has called for it and we didn’t have a clean way of doing it and so some of our tool vendors basically asked for this. Not the vendors, I guess there are partners, there are open source projects that wanted to be able to capture this stuff. And so we needed to give them a way to help. - -We’re very much focused right now on making sure that SPDX can be useful in tools and that we can get the automation happening in the whole ecosystem. You know, be it when you build a binary to ship to someone or to test, you want to have your SBoM. When you’ve downloaded something from the internet, you want to have your SBoM. When you ship it out to your customer, you want to be able to be very explicit and clear about what’s there because you need to have that level of detail so that you can track any vulnerabilities. - -Because right now about, I guess, 19… I think there was a stat from earlier in the year from one of the surveys. And I can dig it up for you if you’d like, but I think 99% of all the code that was scanned by Synopsys last year had open source in it. And of which it was 70% of that whole build materials was open source. Open source is everywhere. And what we need to do is, be able to work with it and be able to adhere to the licenses, and transparency on the licenses is important as is being able to actually know what you have, so you can remediate any vulnerabilities. - -Swapnil Bhartiya: You mentioned a couple of things there. One was, you mentioned tooling. So I’m kind of curious, what sort of tooling that is already there? Whether it’s open source or open source be it basically commercialization that worked with the SPDX documents. - -Kate Stewart: Actually, I’ve got a document that basically lists all of these tools that we’ve been able to find and more are popping up as the day goes by. We’ve got common tools. Like, some of the Linux Foundation projects are certainly working with it. Like FOSSology, for instance, is able to both consume and generate SPDX. So if you’ve got an SPDX document and you want to pull it in and cross check it against your sources to make sure it’s matching and no one’s tampered with it, the FOSSology tool can let you do that pretty easily and codes out there that can generate FOSSology. - -Free Software Foundation Europe has a Lindt tool in their REUSE project that will basically generate an SPDX document if you’re using the IDs. I guess there’s actually a whole bunch more. So like I say, I’ve got a document with a list of about 30 to 40, and obviously the SPDX tools are there. We’ve got a free online, a validator. So if someone gives you an SPDX document, you can paste it into this validator, and it’ll tell you if it’s a valid SPDX document or not. And we’re looking to it. - -I’m finding also some tools that are emerging, one of which is decodering, which we’ll be bringing into the Act umbrella soon, which is looking at transforming between SPDX and SWID tags, which is another format that’s commonly in use. And so we have tooling emerging and making sure that what we’ve got with SPDX is usable for tool developers and that we’ve got libraries right now for SPDX to help them in Java, Python and Go. So hopefully we’ll see more tools come in and they’ll be generating SPDX documents and people will be able to share this stuff and make it automatic, which is what we need. - -Another good tool, I can’t forget this one, is Tern. And actually Tern, and so what Tern does is, it’s another tool that basically will sit there and it will decompose a container and it will let you know the bill of materials inside that container. So you can do there. And another one that’s emerging that we’ll hopefully see more soon is something called OSS Review Toolkit that goes into your bill flow. And so it goes in when you work with it in your system. And then as you’re doing bills, you’re generating your SBoMs and you’re having accurate information recorded as you go. - -As I said, all of this sort of thing should be in the background, it should not be a manual time-intensive effort. When we started this project 10 years ago, it was, and we wanted to get it automated. And I think we’re finally getting to the stage where it’s going to be… There’s enough tooling out there and there’s enough of an ecosystem building that we’ll get this automation to happen. - -This is why getting it to ISO and getting the specification to ISO means it’ll make it easier for people in procurement to specify that they want to see the input as an SPDX document to compliment the product that they’re being given so that they can ingest it, manage it and so forth. But by it being able to say it’s an ISO standard, it makes the things a lot easier in the procurement departments. - -OpenChain recognized that we needed to do this and so they went through and… OpenChain is actually the first specification we’re taking through to ISO. But for SPDX, we’re taking it through as well, because once they say you need to follow the process, you also need some for a format. And so it’s very logical to make it easy for people to work with this information. - -Swapnil Bhartiya: And as you’ve worked with different players, different of the ecosystem, what are some of the pressing needs? Like improve automation is one of those. What are some of the other pressing needs that you think that the community has to work on? - -Kate Stewart: So some of the other pressing needs that we need to be working on is more playbooks, more instructions, showing people how they can do things. You know, we figured it out, okay, here’s how we can model it, here’s how you can represent all these cases. This is all sort of known in certain people’s heads, but we have not done a good job of expressing to people so that it’s approachable for them and they can do it. - -One of the things that’s kind of exciting right now is the NTIA is having this working group on these software bill of materials. It’s coming from the security side, but there’s various proof of concepts that are going on with it. One of which is a healthcare proof of concept. And so there’s a group of about five to six device manufacturers, medical device manufacturers that are generating SBoMs in SPDX and then there are handing them into hospitals to go and be able to make sure they can ingest them in. - -And this level of bringing people up to this level where they feel like they can do these things, it’s been really eye-opening to me. You know, how much we need to improve our handholding and improve the infrastructure to make it approachable. And this obviously motivates more people to be getting involved. From the vendors and commercial side, as well as the open source, but it wouldn’t have happened, I think, to a large extent for SPDX without this open source and without the projects that have adopted it already. - -Swapnil Bhartiya: Now, just from the educational awareness point of view, like if there’s an open source project, how can they easily create SBoM documents that uses the SPDX specification with their releases and keep it synced? - -Kate Stewart: That’s exactly what we’d love to see. We’d love to see the upstream projects basically generate SPDX documents as they’re going forward. So the first step is to use the SPDX license identifiers to make sure you understand what the licensing should be in each file, and ideally you can document with eTags. But then there’s three or four tools out there that actually scan them and will generate an SPDX document for you. - -If you’re working at the command line, the REUSE Lindt tool that I was mentioning from Free Software Foundation Europe will work very fast and quickly with what you’ve got. And it’ll also help you make sure you’ve got all your files tagged properly. - -If you haven’t done all the tagging exercising and you wonder [inaudible 00:09:40] what you got, a scan code works at the command line, and it’ll give you that information as well. And then if you want to start working in a larger system and you want to store results and looking things over time, and have some state behind it all so like there’ll different versions of things over time, FOSSology will remember from one version to another and will help you create these [inaudible 00:10:01] off of bill materials. - -Swapnil Bhartiya: Can you talk about some of the new use cases that you’re seeing now, which maybe you did not expect earlier and which also shows how the whole community is actually growing? - -Kate Stewart: Oh yeah. Well, when we started the project 10 years ago, we didn’t understand containers. They weren’t even not on the raw mindset of people. And there’s a lot of information sitting in containers. We’ve had some really good talks over the last couple of years that illustrate the problems. There was a report that was put out from the Linux Foundation by Armijn Hemel, that goes into the details of what’s going on in containers and some of the concerns. - -So being able to get on top of automating, what’s going on with concern inside a container and what you’re shipping and knowing you’re not shipping more than you need to, figuring out how we can improve these sorts of things is certainly an area that was not initially thought about. - -We’ve also seen a tremendous interest in what’s going on in IOT space. And so that you need to really understand what’s going on in your devices when they’re being deployed in the field and to know whether or not, effectively is vulnerability going to break it, or can you recover? Things like that. The last 10 years we’ve seen tremendous spectrum of things we just didn’t anticipate. And the nice thing about SPDX is, you’ve got a use case that we’re not able to represent. If we can’t tell you how to do it, just open an issue, and we’ll start trying to figure it out and start to figure if we need to add fields in for you or things like that. - -Swapnil Bhartiya:  Kate, thank you so much for taking your time out and talking to me today about this project. --------------------------------------------------------------------------------- - -via: https://www.linux.com/audience/developers/role-of-spdx-in-open-source-software-supply-chain/ - -作者:[Swapnil Bhartiya][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://www.linux.com/author/swapnil/ -[b]: https://github.com/lujun9972 diff --git a/sources/talk/20200730 SODA Foundation- Autonomous data management framework for data mobility.md b/sources/talk/20200730 SODA Foundation- Autonomous data management framework for data mobility.md deleted file mode 100644 index d24d523369..0000000000 --- a/sources/talk/20200730 SODA Foundation- Autonomous data management framework for data mobility.md +++ /dev/null @@ -1,67 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (SODA Foundation: Autonomous data management framework for data mobility) -[#]: via: (https://www.linux.com/audience/developers/soda-foundation/) -[#]: author: (Swapnil Bhartiya https://www.linux.com/author/swapnil/) - -SODA Foundation: Autonomous data management framework for data mobility -====== - -SODA Foundation is an open source project under Linux Foundation that aims to establish an open, unified, and autonomous data management framework for data mobility from the edge, to core, to cloud. We talked to Steven Tan, SODA Foundation Chair, to learn more about the project. - -_Here is a transcript of the interview:_ - -Swapnil Bhartiya: Hi, this is Swapnil Bhartiya, and today we have with us Steven Tan, chair of the SODA foundation. First of all, welcome to the show. -Steven Tan: Thank you. - -Swapnil Bhartiya: Tell us a bit about what is SODA? -Steven Tan: The foundation is actually a collaboration among vendors and users to focus on data management for, how do you call, autonomous data mesh management. And the point of this whole thing is how do we serve the users? Because a lot of our users are getting a lot of data challenges, and that’s what this foundation is for. To get users and vendors together to help to address these data challenges. - -Swapnil Bhartiya: What kind of data are we talking about? -Steven Tan: The data that we’re talking about is referring to anything like data protection, data governance, data replication, data copy management and stuff like that. And also data integration, how to connect the different data silos and stuff. - -Swapnil Bhartiya: Right. But are we talking about enterprise data or are we talking consumer data? Like there is a lot of data with Facebook, Google, and Gmail, and then there are a lot of enterprise data, which companies … Sorry, as an enterprise, I might put something on this cloud, I can put it on this cloud. So can you please clarify what data are we talking about? -Steven Tan: Actually, the data that we’re talking about is … It depends on the users. There’re all kinds of data. Like for example, I mean, in the keynote that I gave two days ago, the example I gave was from Toyota. So Toyota use case is actually car data. So car data refers to things like the car sensor data, videos, map data and stuff. And then we have users like China Unicom. I mean, they have enterprise companies going to the cloud and so on. So they’ve all kinds of enterprise data over there. And then we also have other users like Yahoo Japan, and they have like a website. So the data that you’re talking about is web data, consumer data and stuff like that. So it’s across the board. - -Swapnil Bhartiya: Oh, so it’s not as specific to an industry or any space or sector, okay. But why do you need it? What is the problem that you see in the market and in the current sphere that you’re like, hey, we should create something like that? -Steven Tan: So the problem that came, I mean the reason why all these companies came together is that they are building data centers that are from small to big. But a lot of the challenges that you have is like, it’s hard for a single project to address. It’s not like a business where we have a specific problem and then we need this to be solved and so on, it’s not like that. A lot of it is like, how do you connect the different pieces together in the data center together? -So there’s nothing like, no organization like that that can help them solve this kind of problem. Like how do you have, in order to address the data of … Or how do you address things like taking care of data protection and data privacy at the same time? And at the same time, you want to make sure that this data can be governed properly. So there isn’t any single organization that can help to take care of this kind of stuff, so we’re helping these users understand their problems and then come together and then we plan projects and roadmaps based on their problems and try to address them through these projects in the SODA foundation. - -Swapnil Bhartiya: And you gave an example of data from the cars and all these things. Does that also mean that open source has helped solving a lot of problems by breaking down a lot of silos so that there’s a lot of interaction between different silos, which were like earlier separated and isolated? Today, as you mentioned, we are living in a data driven world. No matter what we do all the way from the Ring, to what we are doing right now, talking to each other, to the product that we’ll create in the end. But most of this data is living in their own silos. There may be a lot of value in that data, which cannot be extracted because one, it is locked into the silos. The second problem is that these days, data is kind of becoming the next oil. These companies are trying to capture all the data, irrespective of the fact of what value do they see in that data today? And by leveraging machine learning and deep learning, they can in the future … So how do you look at that, and how is SODA foundation going to break those silos, without compromising on our privacy, yet allow companies … Because the fact is, as much as I prefer my privacy, I also want Google Maps to tell me the fastest route where I want to go. -Steven Tan: Right. So I think there are certain, I mean, there are different levels of privacy that we’re going to take care of. And in terms of like, first of all, there are all kinds of … I mean, in terms of the different countries or different States or different provinces like in different countries, there are different kinds of regulations and so on. So first of all, like the data silos you talk about. Yes, that’s one of the key problems that we’re trying to solve. How to connect all the different data silos so as to reduce fragmentation, and then try to minimize the so called dark data that you’re talking about, and then extract all the values over there. So that’s one of the things that we try to get here. I mean, we try to connect all the different pieces, like in the different … The data may be sitting in the edge in the data center or different data centers and in the cloud. We try to connect all these pieces together. - -I mean, that’s one of the first things that we tried to do. And then we tried to have data policies. I think this is a critical piece of things that a lot of the solutions out there don’t address. You have data policies, but it may be the data policies just for a single vendor solution. But once the data gets out, that solution then is out of control. So what we’re trying to do here is say, how do you have data policies across different solutions, so no matter where the data is it’s governed the same way, consistently? That’s the key. So then you can talk about how can you really protect the data in terms of privacy or govern the data or control the data? And in terms of the, I mentioned about the regions, right? So you know where the data is, and you know what kind of regulations that need to be taken care of and you apply it right there. That’s how it should work. - -Swapnil Bhartiya: When we look at the kind of a scenario you talked about, I see it as two-fold. One is there is a technology problem and the second is people problem. So is SODA foundation going to deal with both, or are you going to just deal with the technology aspect of it? -Steven Tan: The technology part that we talk about, we try to define in terms of the API and so on to all the data policies and so on, and try to get as many companies to support this as possible. And then the next thing that we try to do is actually try to work with standards organizations to try to make this into a standard. I mean, that’s what we’re trying to do here. - -And then government aspects, there are certain organizations that we are talking to. Like there’s the CESI, it’s China Electronic Standards organizations that we’re talking to that’s trying to work things into their … Actually, I’m not sure about China, because it’s, I mean, we don’t know about their sphere of influence within the CSI and so on. And then for the industry standards, there’s [inaudible 00:09:05] and so on, we’re trying to work with them and trying to get it to work. - -Swapnil Bhartiya: Can we talk about the ecosystem that you’re trying to build around SODA foundation? One would be the participants who are actually contributing either the code or the vision, and then the users community who would actually be benefiting from it? -Steven Tan: So the ecosystem that we are trying to build, that’s the core part, which is actually the framework. So the framework, I mean, this part will be more of the data vendors or the storage vendors that will be involved in trying to build this ecosystem. And then the outer part, what I call the outer part of the ecosystem will be things like the platforms. Things like Kubernetes, VMware, all these different vendors, and then networking kind of stuff that you need to take care of like the big data analytics and stuff. - -And then for the users, actually, if you can see from the SODA end-user advisory committee, I mean, that’s where most of our users are participating in the communication. So most of these users, I mean, they are from different regions and different countries and different industries. So we try to serve, I mean, whichever participant is interested in, they can participate in this thing. But the main thing is that because they may be from different industries, but actually most of the issues that they have is still the same thing. So there are some commonalities among all these users. - -Swapnil Bhartiya: We are in the middle of 2020, because of COVID-19 everything has slowed down, things have changed. What does your roadmap, what does your plan look like? The structure, the governance and the plan for ’21 or end of the year? -Steven Tan: We are very, how do you call it? Very community-driven or focused kind of organization. We hold a lot of meetups and events and so on where we get together the users and the vendors and so on and the community in general. So with this COVID-19 thing, a lot of the plans has been upset. I mean, it’s in chaos right now. So most of the things are like what everybody is doing, moving online. So we are having some webinars and stuff, even as of right now when we are talking, we are having a mini summit going on with the Open Source Summit North America right now. - -So for the rest of this year, most of our events will be online. We’re going to have some webinars and some meetups, you can find it out from our website. And the other plans that we have is that we are going to have, we just released the SODA federal release, which is the 1.0 release. And through the end of this year, we’re going to have two more releases, the G release and the H release at the end of this year. G release is going to be in September, and H is in the end of the year. And we’re trying to engage our users with things like the POC testing for the federal. Because each release that we have, we try to get them to do the testing, and then so that’s the way of them trying to provide feedback to us. Whether that works for them or how can we improve to make the code work for what they need. - -Swapnil Bhartiya: Awesome. So thank you so much for taking your time out and explaining more about SODA foundation, and I look forward to talking to you again because I can see that you have a very exciting pipeline ahead. So thank you. -Steven Tan: Thank you, thank you very much. --------------------------------------------------------------------------------- - -via: https://www.linux.com/audience/developers/soda-foundation/ - -作者:[Swapnil Bhartiya][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://www.linux.com/author/swapnil/ -[b]: https://github.com/lujun9972 diff --git a/sources/talk/20200731 Linux dominates supercomputing.md b/sources/talk/20200731 Linux dominates supercomputing.md deleted file mode 100644 index 6648bcfba1..0000000000 --- a/sources/talk/20200731 Linux dominates supercomputing.md +++ /dev/null @@ -1,76 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Linux dominates supercomputing) -[#]: via: (https://www.networkworld.com/article/3568616/linux-dominates-supercomputing.html) -[#]: author: (Sandra Henry-Stocker https://www.networkworld.com/author/Sandra-Henry_Stocker/) - -Linux dominates supercomputing -====== -The Linux operating system runs all 500 of the world’s fastest supercomputers, which help to advance artificial intelligence, machine learning and even COVID-19 research. -Wikipedia - -In addition to all its other successes, Linux dominates supercomputing: All 500 of the worlds fastest supercomputers run Linux, and that has been the case since November 2017, according to the [TOP500][1] organization, which has been ranking the 500 most powerful computer systems since 1993. (A graph of Linux' ascension is available on [here][2].) - -How did this happen? - -[[Get regularly scheduled insights by signing up for Network World newsletters.]][3] - -### A little history - -Linux began life in 1991 as the personal project of 21-year-old Finnish student Linus Torvalds. I first became aware of it several years later while working at Johns Hopkins University’s physics and astronomy department where I managed the department’s network and a number of servers with the help of a couple grad students. - -At the time, I was intrigued by Linux, but couldn’t imagine how dominant the OS would become simply because its source code was available to anyone who wanted to work with it. I could not forsee that a significant group of large companies would grasp its value, work together and innovate to make Linux what it is today. Intense collaboration was key to this success, including contributions from countless individuals and organizations that includes IBM, Intel, NVIDIA, Red Hat, Samsung, SUSE and many others. (Browsing the [corporate members of the Linux Foundation][4] is likely to make your jaw drop.) - -The success of Linux can also be attributed to the fact that it is open source, non-proprietary, and extendable. - -### The TOP500 - -Twice a year, in June and November, TOP500 releases it a list of the 500 most powerful computer systems ranked by their performance on something called the [LINPACK Benchmark][5], which calls for the computer being tested to solve a dense system of linear equations. - -I have heard it said, though not been able to verify, that Linux runs on more than 90% of public clouds, more than 60% of embedded systems and IoT devices, as much as 99% of supercomputers and more than 80% of smartphones. If these claims are even close to the truth, it attests to the success and versatility of Linux - -In [the most recent TOP500 ranking][6], a Japanese supercomputer name [Fugaku][7] (derived from an alternate name for Mount Fuji) has taken the top spot and pushed the former leaders down a rank. Fugaku was co-developed by Riken and Fujitsu and uses Fujitsu's 48-core A64FX ARM chip. This is the first time a computer based on ARM processors has topped the list. - -The computer was fully assembled only in May but has already helped fight COVID-19 by sorting through more than 2,000 drugs that might effectively block the virus and found a dozen that show promise. - -### Containerization, AI and ML - -Recently I had a chance to discuss Linux with Stefanie Chiras, vice president and general manager of the Red Hat Enterprise Linux business unit. She sees Linux as tightly linked to supercomputing because it provides the scale and flexibility to support high-performance computing and exascale computing systems – those that are capable of calculating at least 1,018 floating point operations per second (1 exaFLOPS). She also sees Linux as adding to the ongoing development of artificial intelligence and machine learning. - -Chiras expects that containerization will enable more and more researchers and analysts to benefit from supercomputing power. And, as someone who has provided support to both scientists and analysts over the past few decades, I can appreciate what a difference this will make in their work. - -In discussing supercomputers, Chiras pointed out that, beyond having a Linux operating system, the top three fastest – Fugaku, Summit and Sierra – are all built from commercial hardware. Summit and Sierra are Power Systems-based, while Fugaku is the first Arm-powered supercomputer to top the list. The days of purpose-built, custom hardware and software in supercomputing could be over even though new and demanding workloads like AI and complex modeling require greater and greater power. - -(Chiras also wasn’t shy about mentioning that [Red Hat Enterprise Linux][8] is running on four of the top 10 supercomputers: the top three plus number nine, [Marconi-100][9].) - -The character of open source and the willingness of many companies to recognize its value and work together to develop it have made Linux the top OS for both supercomputers and micro-devices. We can expect continued improvements in how the OS is deployed – including getting supercomputing into the hands of a lot more scientists and engineers – as we move forward. As a person who has spent close to 40 years working with Unix and Linux systems, I couldn’t be more pleased. - -Join the Network World communities on [Facebook][10] and [LinkedIn][11] to comment on topics that are top of mind. - --------------------------------------------------------------------------------- - -via: https://www.networkworld.com/article/3568616/linux-dominates-supercomputing.html - -作者:[Sandra Henry-Stocker][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://www.networkworld.com/author/Sandra-Henry_Stocker/ -[b]: https://github.com/lujun9972 -[1]: http://TOP500.org -[2]: https://www.top500.org/statistics/details/osfam/1/ -[3]: https://www.networkworld.com/newsletters/signup.html -[4]: https://www.linuxfoundation.org/membership/members/ -[5]: https://www.top500.org/project/linpack -[6]: https://www.networkworld.com/article/3563766/the-10-fastest-supercomputers-are-led-by-one-28x-faster-than-the-rest.html -[7]: https://www.fujitsu.com/global/about/innovation/fugaku/ -[8]: https://www.redhat.com/en/technologies/linux-platforms/enterprise-linux -[9]: https://www.hpc.cineca.it/hardware/marconi100 -[10]: https://www.facebook.com/NetworkWorld/ -[11]: https://www.linkedin.com/company/network-world diff --git a/sources/talk/20200801 8 tips for running a virtual hackathon.md b/sources/talk/20200801 8 tips for running a virtual hackathon.md deleted file mode 100644 index 0ed2d07296..0000000000 --- a/sources/talk/20200801 8 tips for running a virtual hackathon.md +++ /dev/null @@ -1,123 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (8 tips for running a virtual hackathon) -[#]: via: (https://opensource.com/article/20/8/virtual-hackathon) -[#]: author: (Jason Blais https://opensource.com/users/jasonblais) - -8 tips for running a virtual hackathon -====== -Reach new developers and engage with your existing community through -virtual hackathons. -![Two people chatting via a video conference app][1] - -Hackathons are events where developers, product managers, designers, and others come together to tackle problems over a short time period. They have become increasingly popular over the last 15 years after [OpenBSD ran the first hackathon in June 1999][2]. - -These events provide several benefits—greater engagement across the community, innovation and new ideas, awareness for the organizers, and networking opportunities for participants. - -[Mattermost][3], an open source messaging platform for DevOps teams, has also run and participated in several hackathons to engage with the open source community. So far, in 2020, we participated in a [hackathon to overcome the challenges of COVID-19][4] and ran a [hackfest to create open source chatbots for developer workflows][5]. Both had thousands of participants and were run completely virtually. - -We've come a long way from our [first hackathon in 2016][6] that had only 20 participants to building a [step-by-step guide for running a virtual hackathon][7], and we've learned many valuable lessons. - -If you are considering running a virtual hackathon, here are eight tips to keep in mind: - -### Choose your hackathon theme - -Before you begin to plan your hackathon, you'll need to choose a theme or a topic for it first. - -Is there a specific business or social problem you're trying to solve? An industry you want to reach? Technologies you want to explore together with your community? - -Choosing the theme at the start is important, as it gives you a clear focus for the rest of your planning—which communities to reach out to, how to determine logistics, what materials to prepare, and other details. It also inspires your community to work on solving the specific kinds of problems you're organizing around. - -### Decide dates for the hackathon early - -With 365 days in a year, you'd think it'd be easy to find one on which to hold an event, but it can actually be a challenge to schedule even a virtual hackathon. The most important thing is not to rush the preparation. Ideally, you should schedule the hackathon at least two months out. This gives you enough time to promote and organize it and gives your participants enough time to prepare for it—whether it's researching the hackathon topic or setting aside time for it on their calendars. - -Here are a few quick tips when trying to decide when to run hackathons: - - * Avoid overlap with major holidays in the countries you're trying to reach. If the event is global, then avoid major holidays in the countries where you have bigger communities. - * Avoid overlap with significant company or community events that may act as a distraction during the hackathon, such as major product releases or developer conferences. - * Avoid starting the hackathon on a Friday, especially if you plan to reach developers around the world. If you're located in the Western Hemisphere and hold a hackathon kick-off call on Friday, those in Europe and Asia will either have to join in late Friday night or Saturday morning, effectively meaning the hackathon starts on a weekend in those areas. It is typically better to start on a Thursday instead. - - - -Given the hackathon is online, there is also an opportunity to extend it beyond a standard 48-hour event. We have found that running a three- or four-day event, for instance, results in much higher quality submissions that are closer to completion. - -### Identify key team members to partner with during the hackathon - -It is much easier to promote and organize the event when you have someone you can collaborate with. At a minimum, find one or two developers who can act as leaders during the event, mentoring newcomers and answering questions from the participants. They can also be your point of contact for technical support before and during the event. - -You should also consider if you need a partner to run operations such as scheduling calls, and a partner to create the event marketing materials. - -Moreover, once you've picked the theme and dates of your event, reach out to your community and ask if anyone is open to help. Many may be interested. Acting as a hackathon organizer and mentor also provides a great experience for community members themselves. - -### Produce a workback schedule - -Start by listing everything you and your hackathon partners may need to do before, during, and after the hackathon. And I do mean everything—from deciding which platform to host your hackathon on to which video conferencing tool to use for presentations to what prizes to give out. The more comprehensive your workback schedule is, the better prepared you will be, and the more successful the hackathon will be. - -To help you get started, check out the Mattermost ["How to Run a Hackathon" playbook][7] with key dates and activities that you can use for inspiration. - -### Create a code of conduct - -Code of conduct is important to promote healthy behavior within your community. It establishes what is accepted by participants and helps create a safe and welcoming environment for everyone. - -The same is true for hackathons. The code of conduct establishes the rules and actions taken when the rules are broken. Include a clear contact or place to report harassment from the participants. Often, the members you're partnering with from tip #3 will also help enforce the code of conduct as needed. - -To learn more about codes of conduct, including ways to enforce them, see [this excellent guide][8]. - -### Make one landing page for the hackathon - -During the hackathon, there is a lot going on. People ask questions, share progress, and team up with others. Especially when running a hackathon with hundreds (or thousands!) of participants, it can quickly get chaotic. - -That is why a single hackathon landing page is critical. This landing page should contain all the information community members need to know, including resources to get started, where to ask questions, and how to create a submission. Updates can also be communicated in other channels like Twitter, but they should always be reflected on the hackathon's landing page. Your landing page is the source of truth. - -Plus, make sure to include plenty of information for first-time participants. If you've run a few events, a lot of the information you share is familiar to you and previous participants. However, everything is new and often confusing for first-time participants, so make sure to keep them in mind when building the landing page. - -### Plan for external promotion - -A common reason to run a hackathon is to reach new users and communities who have heard of your project before. Therefore, announcing and promoting the hackathon beyond just your social channels is very important. However, simply spamming other communities and pages is not just ineffective, but also disrespectful. - -Go back to point #1, where you selected the hackathon theme. Are there certain technologies that are relevant to it? Or industries?  - -If so, study where those communities exist and reach out in their respective channels. Even better, find their community manager and share the hackathon with them first before sharing with the wider community. - -### Include social interaction time - -The biggest challenge we've found with virtual hackathons as compared to physical hackathons are the social aspects. Since people are not working in the same rooms together anymore, building connections and collaborating with others takes extra effort. - -Make sure to add social activities throughout the event dates, accounting for different time zones. Include activity feeds where participants can share updates on what they're working on, drop-in social hours over video, coffee times, pizza hours, and more. - -Taking the extra step to ensure there are opportunities for social interaction creates a more engaging experience for everyone involved. - -### Ready to run your first virtual hackathon? - -Running a virtual hackathon is not easy, but if you prepare for it well and use the above tips to plan it, you will be set up for success, and hopefully have lots of fun along the way! There is also an [excellent guide from HackerEarth][9] that you can use as a reference. - -Ready to run your first virtual hackathon? Then use the Mattermost ["How to Run a Hackathon" playbook][7] to guide your planning and read about the [Mattermost Bot Hackfest][5] for inspiration. - -Thank you also to Jesús Espino and Justin Reynolds for their valuable feedback on this article. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/8/virtual-hackathon - -作者:[Jason Blais][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/jasonblais -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/chat_video_conference_talk_team.png?itok=t2_7fEH0 (Two people chatting via a video conference app) -[2]: http://www.openbsd.org/hackathons.html -[3]: http://mattermost.com/ -[4]: https://mattermost.com/blog/vencealvirus-virtual-hackathon/ -[5]: https://mattermost.com/blog/mattermost-bot-hackfest-winners/ -[6]: https://mattermost.com/blog/mattermost-holiday-hackfest-2016/ -[7]: https://handbook.mattermost.com/contributors/contributors/how-to-run-a-hackathon -[8]: https://opensource.guide/code-of-conduct/ -[9]: https://www.hackerearth.com/community-hackathons/resources/e-books/guide-to-organize-hackathon diff --git a/sources/talk/20200806 5 tips for making documentation a priority in open source projects.md b/sources/talk/20200806 5 tips for making documentation a priority in open source projects.md deleted file mode 100644 index e381ee7276..0000000000 --- a/sources/talk/20200806 5 tips for making documentation a priority in open source projects.md +++ /dev/null @@ -1,68 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (5 tips for making documentation a priority in open source projects) -[#]: via: (https://opensource.com/article/20/8/documentation-open-source-projects) -[#]: author: (Ray Paik https://opensource.com/users/rpaik) - -5 tips for making documentation a priority in open source projects -====== -Documentation is as important as code, so make sure you treat it that -way. Here's how. -![Files in a folder][1] - -[Open source software][2] is now mainstream; long gone are the days when open source projects attracted developers alone. Nowadays, users across numerous industries are active consumers of open source software, and you can't expect everyone to know how to use the software just by reading the code. - -Even for developers (including those with plenty of experience in other open source projects), good documentation serves as a valuable onboarding tool when people join a community. People who are interested in contributing to a project often start by working on documentation to get familiar with the project, the community, and the community workflow. - -### Common challenges with documentation in open source - -Although everyone agrees that documentation is important and needs to be done, some of the ways we do it result in poor quality and lack of consistency across different parts of documentation in the project. For example, when developers are too focused on code, they don't start working on documentation until the last minute (e.g., right before the release). And all too often, documentation tasks are done by volunteers, people who have a hard time saying "no." To make things worse, people may forget about the documentation after the release, so they never change or improve it, and the vicious cycle repeats. - -### 5 best practices - -We have been involved in documentation in a number of open source projects at [Linux Foundation Networking][3] and [GitLab][4] over the past few years. Below, we're sharing some things we've learned that we hope will help make documentation a first-class citizen in your open source project. - - 1. **Value contributions to documentation just as much as code contributions:** A lot of the focus in many open source communities tends to be on code. One easy way to make sure documentation contributions are valued by everyone is to give equal credit to documentation and code in your community metrics. It should not matter whether a commit, merge request, or pull request is for code or documentation. In addition, when you do community recognition, include key accomplishments by the people who contribute to documentation. - - 2. **Put documentation and code in the same project repo:** We highly recommend that a project's code and documentation both reside in the same repository. (A good way is to make `/doc` or `/docs` a top-level directory in the repository.) For one, this makes documentation easy for anyone to find. More importantly, your documentation will be on equal footing as code and other project resources when everything is in the same repository. - - 3. **Make documentation a requirement for a merge or release milestone:** If your project has a lengthy release cycle (e.g., three to six months or more), we highly recommend having interim checkpoints for documentation (like this [example][5] from the ONAP community). This ensures documentation work is not put off until right before the release, and instead, everyone works on documentation throughout the release cycle. If it's feasible for your community, you could make documentation a required step for all code contributions that will impact users (see this [example][6] from GitLab). - - 4. **Have a consistent contribution process for code and documentation:** We also recommend having a consistent contribution process and using the same toolchains for code and documentation. As we noted earlier, many new community members start contributing by working on documentation, as you often don't need deep technical knowledge of the software to get started. It's good for new contributors to onboard in the community by getting familiar with the contribution workflow and meeting other community members. If these new contributors later want to get involved in other parts of the project (including code), you want the toolchains and contribution process to be familiar. Otherwise, they will need to go through another onboarding process, which creates an unnecessary hurdle for contributors. If your code and documentation have different contribution processes, you may risk creating an impression that documentation is less than a first-class citizen compared to code. - - 5. **Have well-documented processes for contributing to documentation:** This may seem obvious, but it's easy to neglect. Since documentation is a good entry point for new contributors, you want to lower the barrier to entry as much as possible. Having good documentation on the contribution workflow, how to get started, where to find issues to work on, how to get help, and more will go a long way to helping new contributors feel welcome and get involved in your community. - - - - -### What else? - -Do you have other tips for making documentation a first-class citizen in open source communities? If so, please share them in the comments. - -* * * - -*This article is based on [Ensuring that documentation Is a first-class citizen in open source projects][7] *presented *at Open Source Summit North America in June 2020. * - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/8/documentation-open-source-projects - -作者:[Ray Paik][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/rpaik -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/files_documents_paper_folder.png?itok=eIJWac15 (Files in a folder) -[2]: https://opensource.com/resources/what-open-source -[3]: https://www.linuxfoundation.org/projects/networking/ -[4]: https://about.gitlab.com/ -[5]: https://wiki.onap.org/display/DW/Guilin+Documentation -[6]: https://docs.gitlab.com/ee/development/contributing/merge_request_workflow.html#definition-of-done -[7]: https://sched.co/c3SY diff --git a/sources/talk/20200806 You don-t need a computer science degree to work with open source software.md b/sources/talk/20200806 You don-t need a computer science degree to work with open source software.md deleted file mode 100644 index 078b0d10f9..0000000000 --- a/sources/talk/20200806 You don-t need a computer science degree to work with open source software.md +++ /dev/null @@ -1,55 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (You don't need a computer science degree to work with open source software) -[#]: via: (https://opensource.com/article/20/8/learn-open-source) -[#]: author: (Jim Hall https://opensource.com/users/jim-hall) - -You don't need a computer science degree to work with open source software -====== -Open source makes software knowledge accessible to anyone, so formal -training isn't the only path to a technology career. -![Stack of books for reading][1] - -I am mostly a self-taught programmer. When I was growing up in the late 1970s, our elementary school had a small resource room with an Apple II computer. My brother and I fell into a group of friends that liked computers, and we all helped each other learn the system. - -We showed such promise that our parents bought us an Apple II+ clone called the Franklin ACE 1000. My brother and I taught ourselves how to program in AppleSoft BASIC. Our parents bought us books, and we devoured them. I learned every corner of BASIC by reading about something in the book, then writing a practice program. My favorite pastime was writing simulations and games. - -I stayed with BASIC for a long time. Our next computer was an IBM PC clone with a version of BASIC on it. Much later, MS-DOS 5 introduced QBasic, which was a modern version of BASIC that finally eliminated line numbers. - -I began to learn other programming languages when I entered university. I was a physics student, and as part of our numerical analysis prerequisite, we had to learn Fortran. Having already learned BASIC, I thought Fortran was pretty easy to pick up. Fortran and BASIC were very similar, although Fortran was more limited in my experience. - -My brother was a computer science major at a different university, and he introduced me to the C programming language. I immediately loved working in C! It was a straightforward programming language that gave me a ton of flexibility for writing useful programs. But I didn't have room in my degree program to take a class that didn't apply to my physics major. So, instead, I taught myself C by reading books and combing through the library reference guide. Each time I wanted to learn a new topic, I looked it up in the reference guide and wrote a practice program to exercise my new knowledge. - -My early use of C was writing new utilities to expand MS-DOS. I used Unix on campus, but my computer at home mostly ran MS-DOS. I wanted MS-DOS to have similar enhanced command-line features that Unix offered, so I wrote my own utilities to give me the added functionality. - -I suppose my first tools were pretty simple programming exercises. I used programs like Unix cat or DOS TYPE to display the contents of text files, with extra command-line options to add line numbers, convert tabs to spaces, and the like. Or I'd use a program like Unix clear or DOS CLS to clear the screen, but also set the colors to something other than the usual white-on-black text. And I wrote a few new utilities to help me with my studies, like a program to find common errors in a Fortran source file, a utility to organize files in a directory, a filter to convert nroff files to LaTeX format, and a program to fit a straight line through x and y data points. - -Armed with this limited experience in C programming, I tackled my first big open source project. It turns out you can accomplish a lot if you don't know what you don't know and have a passion for a project. That's how I created the [FreeDOS Project][2] in 1994. - -Since then, I've written, maintained, or otherwise contributed to dozens of open source projects on FreeDOS, Linux, and Big Unix. My first contribution was a fix to GNU Emacs so it would compile correctly on a DomainOS Unix system. I also submitted patches to an early open source C compiler specific to HP-UX, a fun artillery game with cartoony tanks, a utility to organize music on an iPod, and other Unix and Linux programs. On FreeDOS, I wrote much of the underlying code libraries we used at the time, including an implementation of Unix catgets, so FreeDOS programs could support different spoken languages without having to be rewritten. - -Over time, I leveraged what I'd learned to pick up other programming languages. I wrote a ton of Unix Korn shell scripts, Linux Bash scripts, and AWK scripts. I wrote small utilities in Perl, and later wrote Perl CGI and PHP pages for websites. I learned enough LISP to tweak my copy of GNU Emacs, and enough Scheme to work on a project that used GNU Guile. And I continued to write and share open source games, applications, utilities, and tools for Linux and FreeDOS. - -And as I wrote more code, I got better at programming. Even today, I continue to learn new things and reinforce those lessons by [teaching others][3]. I'm always trying new things out. - -And that's my lesson. You don't have to be formally trained in computer science or hold a CS degree to contribute to open source software. Find your passion, and you can figure out the rest on your own. All that matters is that you love doing what you do and that you're willing to share your contribution with others. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/8/learn-open-source - -作者:[Jim Hall][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/jim-hall -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/books_read_list_stack_study.png?itok=GZxb9OAv (Stack of books for reading) -[2]: https://opensource.com/article/17/10/freedos -[3]: https://opensource.com/article/20/7/teaching-c diff --git a/sources/talk/20200807 Meeting for the first time after 26 years of open source collaboration.md b/sources/talk/20200807 Meeting for the first time after 26 years of open source collaboration.md deleted file mode 100644 index 700b4c9db3..0000000000 --- a/sources/talk/20200807 Meeting for the first time after 26 years of open source collaboration.md +++ /dev/null @@ -1,53 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Meeting for the first time after 26 years of open source collaboration) -[#]: via: (https://opensource.com/article/20/8/meet-open-source-collaborators) -[#]: author: (Jim Hall https://opensource.com/users/jim-hall) - -Meeting for the first time after 26 years of open source collaboration -====== -Open source is great because people from anywhere can get involved, but -it can be lonely. Take advantage of the proliferation of video -conferencing tools available to make connections with your fellow -developers. -![Two people chatting via a video conference app][1] - -Collaborating on an open source software project is inherently an online experience. For me, almost all of my interaction has been via email. I'll send someone a patch, and they'll review it and reply to me. Or a user will file a bug, and I'll respond to it via the bug tracker. More commonly, developers in the open source community will discuss ideas via the email list. - -Over the years, I've only interacted on projects electronically, and have only met a few people in person, usually in settings unrelated to the project. Sometimes it's at conferences—we'll recognize each other's names, and realize we're working on the same open source project. I really enjoy those connections, but they're rare. - -In 1994, I created the [FreeDOS Project][2], an open source implementation of the DOS operating system. In the last 26 years, I've met only a handful of folks from that project in person. I met one developer when I attended a work conference in his city, and we got dinner together. Another developer took time out of his vacation tour of the Midwest to visit and have a drink. I crossed paths with another developer at an open source conference. And I spoke with Pat, who wrote our first kernel, on the phone several times, but we never met in person. - -A few weeks ago, I decided to change that dynamic. We live in an era of ubiquitous video conferencing, even more so in the last few months, as many people have shifted to remote work due to the pandemic. Even though open source work happens virtually, independent of geography, we can still build relationships and put names to faces. Zoom, BlueJeans, Google Hangouts, or Jitsi Meet are the new way to connect while maintaining social distance. - -On June 29, 2020, to celebrate the 26th anniversary of FreeDOS, we held our first online get-together. It was an opportunity to finally actually meet the people I'd been working with for the last 20+ years. - -And it was awesome! At our peak, we had over 16 people on the video meeting. I loved getting to see everyone and talk "in-person." We had almost an hour and a half of engaging conversations with folks from all over the world. Thanks to everyone who participated! - -It's meetings like this when I remember open source is more than just writing code; it's about building a community. And while I've always done well with our virtual community that communicates via email, I really appreciated getting to talk to people without the filter of email—making that real-time connection meant a lot to me. - -This virtual meet-up went so well that I'd love to do it again. In fact, I'm planning another virtual get-together later this summer. I'm hoping to focus the conversation on that one, maybe make it a "working session" to nail down some things for the upcoming FreeDOS 1.3 release. Stay tuned for more details! - -![Screenshot of zoom call participants with names and faces blurred][3] - -*Names and faces blurred for privacy - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/8/meet-open-source-collaborators - -作者:[Jim Hall][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/jim-hall -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/chat_video_conference_talk_team.png?itok=t2_7fEH0 (Two people chatting via a video conference app) -[2]: https://www.freedos.org/ -[3]: https://opensource.com/sites/default/files/uploads/screenshot_from_2020-06-29_09-29-49.jpg (Screenshot of zoom call participants with names and faces blurred) diff --git a/sources/talk/20200808 Matrix encrypted chat rolls out across Germany, Project ACRN-s new IoT release, and more open source news.md b/sources/talk/20200808 Matrix encrypted chat rolls out across Germany, Project ACRN-s new IoT release, and more open source news.md deleted file mode 100644 index e63ea493e5..0000000000 --- a/sources/talk/20200808 Matrix encrypted chat rolls out across Germany, Project ACRN-s new IoT release, and more open source news.md +++ /dev/null @@ -1,79 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Matrix encrypted chat rolls out across Germany, Project ACRN's new IoT release, and more open source news) -[#]: via: (https://opensource.com/article/20/8/news-aug-8) -[#]: author: (Lauren Maffeo https://opensource.com/users/lmaffeo) - -Matrix encrypted chat rolls out across Germany, Project ACRN's new IoT release, and more open source news -====== -Catch up on the biggest open source headlines from the past two weeks. -![][1] - -In this week’s edition of our open source news roundup, an open source microfluidics pump, Germany rolls out an encrypted messaging platform based on Matrix, and more open source news. - -### A Reddit user shares his open source microfluidics pump - -As COVID-19 limits access to chemistry and biology labs, one open source user made his own solution. Josh Maceachern shared the model in a thread [on Reddit][2], sharing his microfluidics pump for less than $300 in total.  - -According to the creator, the pump runs on only 3D-printed and common components for less than $300 total. An [article by Hackaday][3] adds that the pump delivers up to 15 mL/min with accuracy to 0.1uL/min. That's enough power for users to do their own genetics or biology projects at home. - -Along with the design files for folks to build their own pumps, Maceachern said on Reddit that he's releasing the pump under the CC BY 4.0 license. He gave his blessing for anyone to use it, asking that they attribute him. - -### Germany prepares for the world's largest deployment of Matrix-based open source software  - -When [Dataport][4] rolls out Element collaboration software this fall, they'll deploy it for half a million users in the German states of Schlesweig-Holstein and Hamburg. According to Element in [this article][5], it will be "...the biggest single messaging and collaboration implementation in the world." - -In an era of videoconferencing dominated by big brands, Germany's choice of a fully open source tool is noteworthy. It's also no accident that this deployment will occur in Europe: Element shared [in a blog post][6] that it's devoted to giving users more control over their data, rather than seeing it stored on overseas systems. - -The post also cited "increasingly anti-encryption" sentiment in the U.S. as another reason to offer end-to-end encryption for European users. Element's forthcoming rollout in Germany will allow users to host their own data and messages. Dataport hopes to [deploy Element][7] as a matrix-based solution by September, in time for the start of term in Germany. - -### Project ACRN release Version 2.0 of its IoT hypervisor - -ACRN is an open source hypervisor supported by the Linux Foundation's [Automotive Grade Linux][8]. The project says its lightweight hypervisor supports IoT functions like graphics, imaging, and audio on less than 40k lines of code. After the initial focus on automotive safety, the Linux Foundation's latest release of [Project ACRN][9] is more focused on IoT applications by balancing safety features with more general purpose Virtual Machines (VMs).  - -[The Project's v2.0][10] expands support to Kata containers and OpenStack. It also supports partition mode and sharing mode in tandem. - -In other news: - - * [Open wearables group buttons down on datasets][11] - * [Microsoft joins Open Source Security Foundation][12] - * [Uniting for better open-source security: The Open Source Security Foundation][13] - * [China unveils AI open-source platform 'Dubhe'][14] - * [System76 reveals an open source PC surprise for AMD Ryzen fans][15] - - - -Thanks, as always, to Opensource.com staff members and [Correspondents][16] for their help this week. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/8/news-aug-8 - -作者:[Lauren Maffeo][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/lmaffeo -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/weekly_news_roundup_tv.png?itok=tibLvjBd -[2]: https://www.reddit.com/r/functionalprint/comments/hsevpl/opensource_multichannel_microfluidicsosmm_pump/ -[3]: https://hackaday.com/2020/07/29/an-open-source-microfluidic-pump-for-your-science-needs/ -[4]: https://www.dataport.de/who-we-are/ -[5]: https://www.zdnet.com/article/open-source-is-behind-this-massive-messaging-and-collaboration-project-for-500000-people/ -[6]: https://element.io/blog/element-brings-matrix-to-europe/ -[7]: https://www.dataport.de/was-wir-bewegen/portfolio/projekt-phoenix/ -[8]: https://www.automotivelinux.org/ -[9]: https://github.com/projectacrn -[10]: https://projectacrn.github.io/2.0/ -[11]: https://www.computerweekly.com/blog/Open-Source-Insider/Open-wearables-group-buttons-down-on-datasets -[12]: https://www.microsoft.com/security/blog/2020/08/03/microsoft-open-source-security-foundation-founding-member-securing-open-source-software/ -[13]: https://www.zdnet.com/article/uniting-for-better-open-source-security-the-open-source-security-foundation/#ftag=RSSbaffb68 -[14]: https://news.cgtn.com/news/2020-08-03/China-unveils-AI-open-source-platform-Dubhe--SE3UpfEX5e/index.html -[15]: https://www.forbes.com/sites/jasonevangelho/2020/07/26/system76-reveals-an-open-source-surprise-for-amd-ryzen-fans/#4566bf106e4e -[16]: https://opensource.com/correspondent-program diff --git a/sources/talk/20200815 What Does Mozilla Firing 25- of its Workforce Tells us About its Future.md b/sources/talk/20200815 What Does Mozilla Firing 25- of its Workforce Tells us About its Future.md deleted file mode 100644 index 064c99cd1f..0000000000 --- a/sources/talk/20200815 What Does Mozilla Firing 25- of its Workforce Tells us About its Future.md +++ /dev/null @@ -1,107 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (What Does Mozilla Firing 25% of its Workforce Tells us About its Future) -[#]: via: (https://itsfoss.com/mozilla-struggle/) -[#]: author: (Abhishek Prakash https://itsfoss.com/author/abhishek/) - -What Does Mozilla Firing 25% of its Workforce Tells us About its Future -====== - -Mozilla is in news again but not for good reasons. - -[Mozilla has suddenly fired around 250 employees][1], 25% of its workforce. It also closed operations in Taipei, Taiwan. The Taiwanese team was working on Firefox Lite. - -This is not the first layoff from Mozilla this year. At the beginning of the year, [Mozilla had laid off 70 employees][2]. - -So, what’s going on with Mozilla? Whatever it is, it’s certainly not positive. - -Mozilla has fired entire (or most of) teams working on [DevTools][3], [MDN][4], developer relation, [Servo][5] (browser engine written in Rust) and incident threat management. - -Why did it do that? What lies ahead for Mozilla? Here’s my opinion on the Mozilla crisis. - -### The gradual decline of Mozilla: Ignoring its flagship Firefox browser project - -Mozilla Firefox once had a good user base. It was seen as a superior browser and it looked like it would dethrone Internet Explorer as the most popular web browser. - -That would have happened if it was not for Google Chrome. The tech giant Google and its ‘thinking ahead’ leadership launched Google Chrome in 2008. - -Their aim was to get more and more people to use their search engine. How does a user access search engine? Through a web browser. - -So, instead of being dependent on other web browsers, Google created its own browser and integrated its products with this new browser. Google hired several Mozilla engineers to work on its browser. The current Google CEO, Sundar Pichai, led the team developing the Chrome browser. - -But Google didn’t just stop after creating Chrome in 2008. Google with all its technical might and intelligence, kept on improving the Chrome browser. - -Soon Google Chrome overtook Firefox and later Internet Explorer to become the most popular web browser. - -> The rise and fall of [#opensource][6] web browser Mozilla Firefox. [pic.twitter.com/Co5Xj3dKIQ][7] -> -> — Abhishek Prakash (@abhishek_foss) [March 22, 2017][8] - -But what happened to Mozilla Firefox? It is my opinion that Mozilla lost focus on the Firefox browser. They put time and energy in creating [Firefox mobile OS][9], Rust programming language, Hello video chat application and more. - -It’s not that it didn’t add new features to it, it’s just that Firefox started losing charm. - -Chrome had a faster experience while Firefox felt sluggish and heavy. Google’s evil practice of [deliberately slowing down Google products like YouTube on Firefox][10] also made users dump Firefox. - -Whatever it is. The truth is that Google Chrome is a superior product otherwise people won’t go installing it on their own. Microsoft couldn’t keep Windows users on Internet Explorer/Edge after all. - -### Google holds Mozilla by its neck and can squeeze it at will - -![][11] - -If you didn’t know, Mozilla relies heavily on Google with around 90% of its revenue coming from Google. [Google pays Mozilla a few hundred million US dollars each year][12] to be the default search engine on Firefox. - -The deal was helpful to Google when Firefox had good user base. With Google Chrome’s advent, Firefox has seen steep decline and it now stands at the third position with hardly 8% of the market share. Google Chrome dominates the market. - -Google doesn’t need Firefox’s help to get traffic to its search engine but Mozilla does need Google’s money to stay alive. - -A day after the layoffs, [Google extended the Firefox search deal with Mozilla][13]. Had Google not renewed its deal with Mozilla, it would have been real difficult for Mozilla to go beyond 2020. - -### Mozilla’s renewed focus on products that could make it money - -Mozilla Foundation is a not-for-profit organization but it also has taxable subsidiary in the form of Mozilla Corporation. Firefox browser is developed under Mozilla Foundation. The profit earned by the Mozilla Corporation is reinvested into Mozilla projects. - -Lately, Mozilla is trying hard to create new revenue channels to end its reliance on Google. Its [acquisition of Pocket app][14] and the launch of [Mozilla VPN][15] is part of this strategy. - -The recent layoffs are also part of Mozilla’s new strategy to focus on profitable products and reducing the workforce aimed at reducing the expense. - -But amidst all this, Mozilla must not ignore Firefox. People need a functioning browser and Mozilla should work on improving user experience. If the users have trouble [running Netflix][16] or YouTube or using other streaming services in this age, they will definitely switch. - -Not only it is the flagship project from Mozilla, it is also the biggest hope for people who don’t want Google. Microsoft’s Edge, Opera, Vivaldi, Brave and most of the other popular browsers have switched to Google’s Chromium project. Firefox is one of the rare browsers that doesn’t rely on Chromium. - -I hope that Mozilla rises from the ashes like a Phoenix. - -Those were my views on the Mozilla situation. I welcome yours in the comment section. - --------------------------------------------------------------------------------- - -via: https://itsfoss.com/mozilla-struggle/ - -作者:[Abhishek Prakash][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://itsfoss.com/author/abhishek/ -[b]: https://github.com/lujun9972 -[1]: https://thenextweb.com/insights/2020/08/11/mozilla-firefox-layoffs-250-employees/ -[2]: https://www.bizjournals.com/sanjose/c/mountain-view-based-mozilla-laysoff-around-70.html -[3]: https://developer.mozilla.org/en-US/docs/Tools -[4]: https://developer.mozilla.org/en-US/ -[5]: https://servo.org/ -[6]: https://twitter.com/hashtag/opensource?src=hash&ref_src=twsrc%5Etfw -[7]: https://t.co/Co5Xj3dKIQ -[8]: https://twitter.com/abhishek_foss/status/844666818665025537?ref_src=twsrc%5Etfw -[9]: https://en.wikipedia.org/wiki/Firefox_OS -[10]: https://fortune.com/2018/07/25/youtube-slow-mozilla-firefox-chrome/ -[11]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/08/mozilla-struggle.jpg?resize=800%2C450&ssl=1 -[12]: https://www.zdnet.com/article/firefox-hits-the-jackpot-with-almost-billion-dollar-google-deal/ -[13]: https://www.theregister.com/2020/08/14/mozilla_google_search/ -[14]: https://blog.mozilla.org/blog/2017/02/27/mozilla-acquires-pocket/ -[15]: https://vpn.mozilla.org/ -[16]: https://itsfoss.com/netflix-firefox-linux/ diff --git a/sources/talk/20200817 What makes Java open source.md b/sources/talk/20200817 What makes Java open source.md deleted file mode 100644 index 4a1d0a6b5a..0000000000 --- a/sources/talk/20200817 What makes Java open source.md +++ /dev/null @@ -1,68 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (What makes Java open source?) -[#]: via: (https://opensource.com/article/20/8/open-source-java) -[#]: author: (Daniel Oh https://opensource.com/users/daniel-oh) - -What makes Java open source? -====== -Clearing up the confusion about developing in Java while staying in the -open source ecosystem. -![Coffee beans][1] - -If you're using [Java][2] to write business applications, you may know that Java Standard Edition (SE) is not open source software. It is not managed by a foundation, like Python or JavaScript, and in January 2019, Oracle changed its policy to require a commercial license for any use of SE, from the developer's local environment to production. - -This change also raised a lot of questions in open source communities about licensing compliance and Java usage. If you're still confused, this article will guide you through how these changes apply to Java developers. - -### Evolving platforms in the Java community - -[OpenJDK][3] (Open Java Development Kit) is a free and open source implementation of Java SE. It is an alternative that allows more than 70% of Java developers to continue stabilizing their Java application environments while remaining within the open source ecosystem. OpenJDK is primarily licensed under the [GNU GPLv2][4]. The freedoms guaranteed by this distribution strategy have made OpenJDK the default choice for Java developers to build desktop applications that are compatible with Java SE. - -Oracle continued developing and maintaining Enterprise Java (Java EE), which is built on the Java SE platform. Java EE includes additional features outside SE's scope to support large-scale, scalable, multi-tier, and secured applications for a variety of enterprise environments. In September 2017, the Java EE platform was transferred to the [Eclipse Foundation][5], leading to the adoption of more agile processes, changing the governance process, and implementing more flexible licensing. One year later, in 2018, the Eclipse Foundation announced a new brand name, [Jakarta EE][6], with a new logo and working groups to support developers transitioning from Java EE to the new platform. The evolution from Java EE to Jakarta EE also impacted many enterprise Java developers in implementing new business logic. - -### Evolving frameworks as Java evolved - -In the meantime, new technologies, such as RESTful APIs (2000), HTTP 2 (2015), and JSON (2017), were being developed alongside fast-changing web architectures. Interest in microservices architectures was growing, but because Java EE was in transition, it did not pick up on these new paradigms as they happened. - -In response, the broader Java community and several vendors (IBM, Red Hat, and Tomitribe) created [MicroProfile][7] in 2016 to optimize the Enterprise Java platform for microservices architectures. MicroProfile [later joined the Eclipse Foundation][8], giving enterprise Java developers two options for implementing microservice architectures: SpringBoot or MicroProfile. MicroProfile allows developers to create portable Java-based microservices across vendor solutions while ensuring compatibility between matching Java/Jakarta EE and MicroProfile APIs in the same application. - -If you are interested in Enterprise Java development, [MicroProfile Starter][9] is a great resource to explore microservices in practice. MicroProfile Starter's graphical user interface requires a few details to generate code to create a monolithic Java application server. - -A MicroProfile runtime supports deploying an application artifact (e.g., a JAR or WAR file) and executing it as a Java application server with a MicroProfile specification. You can choose the cloud-native runtime you prefer (e.g., [Quarkus][10]) from MicroProfle Starter's runtime list, then select specifications to gain additional enterprise features, such as fault tolerance, OpenAPI, OpenTracing, and more. Once you've completed these steps, click on "Download" to begin developing your application. - -![MicroProfile Starter GUI][11] - -(Daniel Oh, [CC BY-SA 4.0][12]) - -### Conclusion - -Navigating Java from an open source perspective can be a bit confusing given the language's long history, acquisitions, and relicenses. Sticking with OpenJDK and Jakarta EE allows Java developers to maintain standard enterprise applications without compromising open source freedoms. If you want to dive in further, take a look at MicroProfile or delve deeper into runtimes by exploring Quarkus. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/8/open-source-java - -作者:[Daniel Oh][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/daniel-oh -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/java-coffee-beans.jpg?itok=3hkjX5We (Coffee beans) -[2]: https://opensource.com/resources/java -[3]: https://openjdk.java.net/ -[4]: https://openjdk.java.net/legal/gplv2+ce.html -[5]: https://www.eclipse.org/org/ -[6]: https://opensource.com/article/18/5/jakarta-ee -[7]: https://microprofile.io/ -[8]: https://opensource.com/article/18/1/eclipse-microprofile -[9]: https://start.microprofile.io/ -[10]: https://quarkus.io/ -[11]: https://opensource.com/sites/default/files/uploads/microprofile.png (MicroProfile Starter GUI) -[12]: https://creativecommons.org/licenses/by-sa/4.0/ diff --git a/sources/talk/20200818 Amazon Braket lets customers try out quantum computing.md b/sources/talk/20200818 Amazon Braket lets customers try out quantum computing.md deleted file mode 100644 index 3ca1ae3fae..0000000000 --- a/sources/talk/20200818 Amazon Braket lets customers try out quantum computing.md +++ /dev/null @@ -1,70 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Amazon Braket lets customers try out quantum computing) -[#]: via: (https://www.networkworld.com/article/3570251/amazon-braket-lets-customers-try-out-quantum-computing.html) -[#]: author: (Michael Cooney https://www.networkworld.com/author/Michael-Cooney/) - -Amazon Braket lets customers try out quantum computing -====== -AWS joins IBM, Microsoft, Google and others in growing quantum computing arena -[Glosser.ca / Pete Linforth][1] [(CC BY-SA 3.0)][2] - -AWS has announced the availability of a new service that lets customers tap into and experiment with [quantum computing][3] simulators and access quantum hardware from [D-Wave][4], [IonQ][5], and [Rigetti][6]. - -The managed service, [Amazon Braket][7], offers customers a development environment where they can explore and build quantum algorithms, test them on quantum circuit simulators, and run them on different quantum hardware technologies, AWS said in a [statement][7] about the service. The Braket service includes Jupyter notebooks that come pre-installed with the Amazon Braket SDK and example tutorials. - -**Read more: [What is quantum computing? (and why enterprises should care)][3] ** - -According to AWS, Braket provides access to a fully managed, high-performance, quantum circuit simulator that lets users test and validate circuits with a single line of code. In addition, as a native AWS service, Braket can be managed via the AWS management console. (Related: [Amazon joins the quantum computing crowd with Braket testbed][8]) - -The service is named after the standard notation in quantum mechanics bra-ket, which was introduced by Paul Dirac in 1939 to describe the state of quantum systems and is also known as the [Dirac notation][9]. - -"Quantum computing has the potential to solve computational problems that are beyond the reach of classical computers by harnessing the laws of quantum mechanics to process information in new ways," AWS stated. "This approach to computing could transform areas such as chemical engineering, material science, drug discovery, financial portfolio optimization, and machine learning. But defining those problems and programming quantum computers to solve them requires new skills, which are difficult to acquire without easy access to quantum computing hardware." - -In a blog about Braket, Jeff Barr, Chief Evangelist for AWS, said there are a few things customers should keep in mind about Braket: - - * Quantum computing is an emerging field. "Although some of you are already experts, it will take some time for the rest of us to understand the concepts and the technology, and to figure out how to put them to use." - * The [quantum processing units] QPUs accessed through Amazon Braket support two different paradigms. The IonQ and Rigetti QPUs and the simulator support circuit-based quantum computing, and the D-Wave QPU supports quantum annealing. You cannot run a problem designed for one paradigm on a QPU that supports the other one, so you will need to choose the appropriate QPU early. - * Each task will incur a per-task charge and an additional per-shot charge that is specific to the type of QPU used. Use of the simulator incurs an hourly charge, billed by the second, with a 15 second minimum. For more information, check out [Amazon Braket Pricing][10]  - - - -The Amazon Braket rollout follows similar [quantum service][11] introductions from [IBM][12], [Microsoft][13], [QC Ware, ][14]Google, Honeywell and others in what is becoming a growing market. Researchers at [Tractica][15] for example, forecast that total enterprise quantum computing market revenue will reach $9.1 billion annually by 2030, up from $111.6 million in 2018. "The global market for quantum computing is being driven largely by the desire to increase the capability of modeling and simulating complex data, improve the efficiency or optimization of systems or processes, and solve problems with more precision," Tractica stated. - -Gartner has called quantum computing one of the top potential disruptive technologies in the next five years, stating that the parallel execution and exponential scalability of quantum computers means they excel with problems too complex for a traditional approach or where traditional algorithms would take too long to find a solution. Industries such as automotive, financial, insurance, pharmaceuticals, military and research have the most to gain from the advancements in quantum computing. Most organizations should learn about and monitor QC through 2022 and perhaps exploit it from 2023 or 2025, Gartner stated. - -Join the Network World communities on [Facebook][16] and [LinkedIn][17] to comment on topics that are top of mind. - --------------------------------------------------------------------------------- - -via: https://www.networkworld.com/article/3570251/amazon-braket-lets-customers-try-out-quantum-computing.html - -作者:[Michael Cooney][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://www.networkworld.com/author/Michael-Cooney/ -[b]: https://github.com/lujun9972 -[1]: https://en.wikipedia.org/wiki/File:Bloch_Sphere.svg -[2]: https://creativecommons.org/licenses/by-sa/3.0/legalcode -[3]: https://www.networkworld.com/article/3275367/what-s-quantum-computing-and-why-enterprises-need-to-care.html -[4]: https://aws.amazon.com/braket/hardware-providers/dwave/ -[5]: https://aws.amazon.com/braket/hardware-providers/ionq/ -[6]: https://aws.amazon.com/braket/hardware-providers/rigetti/ -[7]: https://aws.amazon.com/braket/ -[8]: https://www.networkworld.com/article/3487421/amazon-joins-the-quantum-computing-crowd-with-braket-testbed.html -[9]: https://en.wikipedia.org/wiki/Bra%E2%80%93ket_notation -[10]: https://aws.amazon.com/braket/pricing -[11]: https://www.networkworld.com/article/3489098/10-hot-quantum-computing-startups-to-watch.html -[12]: https://www.ibm.com/blogs/research/category/quantcomp/ -[13]: https://www.microsoft.com/en-us/quantum/ -[14]: https://qcware.com/ -[15]: https://tractica.omdia.com/newsroom/press-releases/the-quantum-computing-market-is-poised-for-strong-growth-with-global-revenue-to-reach-9-1-billion-by-2030/ -[16]: https://www.facebook.com/NetworkWorld/ -[17]: https://www.linkedin.com/company/network-world diff --git a/sources/talk/20200821 3 ways a legal team can enable open source.md b/sources/talk/20200821 3 ways a legal team can enable open source.md deleted file mode 100644 index 335902b9f4..0000000000 --- a/sources/talk/20200821 3 ways a legal team can enable open source.md +++ /dev/null @@ -1,86 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (3 ways a legal team can enable open source) -[#]: via: (https://opensource.com/article/20/8/open-source-legal-organization) -[#]: author: (Jeffrey Robert Kaufman https://opensource.com/users/jkaufman) - -3 ways a legal team can enable open source -====== -Open source law is unique because of its unusual requirements for -success. Learn ways lawyers can get their organizations to "yes". -![Active listening in a meeting is a skill][1] - -I am an open source lawyer for Red Hat. One important part of my job is to provide information to other companies, including their in-house counsel, about how Red Hat builds enterprise-class products with a completely open source development model and answering their questions about open source licensing in general. After hearing about Red Hat's success, these conversations often turn to discussions about how their organization can evolve to be more open source-aware and -capable, and lawyers at these meetings regularly ask how they can modify their practices to be more skilled in providing open source counsel to their employees. - -In this article and the next, I'll convey what I normally tell in-house counsel about these topics. If you are not in-house counsel and instead work for a law firm supporting clients in the software space, you may also find this information useful. (If you are considering going to law school and becoming an open source lawyer, you should read Luis Villa's excellent article [_What to know before jumping into a career as an open source lawyer_][2].) - -My perspective is based on my personal and possibly unique experience working in various engineering, product management, and lawyer roles. My atypical background means I see the world through a different lens from most lawyers. So, the ideas presented below may not be traditional, but they have served me well in my practice, and I hope they will benefit you. - -### Connect with open source organizations - -There are a multitude of open source organizations that are especially useful to open source lawyers. Many of these organizations have measurable influence over the views and interpretations of open source licenses. Consider getting involved with some of the more prominent organizations, such as the [Open Source Initiative][3] (OSI), the [Software Freedom Conservancy][4], the [Software Freedom Law Center][5], the [Free Software Foundation][6], [Free Software Foundation Europe][7], and the [Linux Foundation][8]. There are also a number of useful mailing lists, such as OSI's [license-discuss][9] and [license-review][10], that are worth monitoring and even participating in. - -Participating in these groups and lists will help you understand the myriad and unique issues you may encounter when practicing open source law, including how various terms of the open source license texts are interpreted by the community. There is little case law to guide you, but there are plenty of people happy to help answer questions, and these resources are the best source of guidance. This is perhaps one of the very unique and amazing aspects of practicing open source law—the openness of the development community is equally matched by the openness of the legal community to provide perspective and advice. All you have to do is ask. - -### Adopt the mindset of a business manager and find a path to yes - -Product managers are ultimately held responsible for a product or service from cradle to grave, including enabling that product or service to get to market. Since the bulk of my career has been spent leading product-management organizations, my mind is programmed to find a path, no matter how, to get a viable product or service to market. I encourage any lawyer to adopt this mindset since products and services are the lifeblood of any business. - -As such, the approach I have always taken in my legal practice involves issue spotting and advising clients of risk _but always having the objective of finding a path to "YES_," especially when my analysis impacts product/service development and release. When evaluating legal issues for internal clients, my executive management or I may, at times, view the risk to be too high. In such cases, continue encouraging everyone to work on the problem because, in my experience, solutions do eventually present themselves, often in unexpected ways. - -Be sure to tap all your resources, including your software development clients (see below), as they can be an excellent source of creative approaches to solving problems, often using technology to resolve issues. I have found much joy in this method, and my clients seem pleased with this passion and sentiment. I encourage all lawyers to consider this approach. - -Sadly, it is always easy to say "no" for self-preservation and to eliminate what may appear to be _any_ risk to the company. I have always found this response untenable. All business transactions have risk. As a counselor, it is your job to understand these risks and present them to your clients so that they may make educated business decisions. Simply saying "no" when any risk is present, without providing any additional context or other paths forward to mitigate risks, does no good for the long-term success of the organization. Companies need to provide products and services to survive, and you should be helping find that path, whenever possible, to YES. You have an ethical responsibility to say "no" in certain situations, of course, but explore and exhaust all reasonable options first. - -### Build relationships with developers - -Building relationships with your software development clients is _absolutely critical_. Building rapport and trust with developers are two important ways to strengthen these relationships. - -#### Build rapport - -Your success as an open source lawyer is most often a direct result of your positive relationships with your software developers. In many cases, your software developers are the direct or indirect recipients of your legal advice, and they will be looking to you for guidance and counsel. Unfortunately, many software developers are suspicious of lawyers and often view lawyers as obstacles to their ability to develop and release software. The best way to overcome this ill will is to build rapport with your clients. How you do that is different for most people, but here are some ideas. - - 1. **Show an interest in your clients' work:** Be inquisitive about the details of their project, how it works, the underlying programming language, how it connects to other systems, and how it will benefit the company. Some of these answers will be useful in your legal analysis when ascertaining legal risk and ways to mitigate such risk, but more importantly, this builds a solid foundation for an ongoing positive relationship with your client. - 2. **Be clear to your client that you are working to find a path to YES:** It is perfectly acceptable to let your client know you are concerned about certain aspects of their project, but follow that up with ideas for mitigating those concerns. Reassure them that it is your job to work with them to find a solution and not to be a roadblock. The effect of this cannot be overstated. - 3. **Participate in an open source project:** This is especially true if you have software development experience. Even if you do not have such experience, there are many ways to participate, such as helping with documentation or community outreach. Or request to join their status meetings just to learn more about their work. This will also allow you to provide counsel on-demand and in real time so that the team may course-correct early in the process. - - - -#### Have trust - -Your software developers are very active in their open source communities and are some of the best resources for understanding current issues affecting open source software and development. Just as you connect with legal organizations, like your local bar or national legal organizations to keep current on the latest legal developments, you should also engage with your software development resources for periodic briefings and to gain their counsel on various matters (e.g., how would the community view the use of this license for a project?). - -### Relationships breed success - -Open source law is unique because of its unusual requirements for success, namely, connections to other open source attorneys, open source organizations, and a deep and respectful relationship with clients. Success is a direct function of these relationships. - -In part two of this series, I will explore how and why it is important to find a path to "open" and to develop scalable solutions for your organization. - -Find out what it takes to become an open source lawyer. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/8/open-source-legal-organization - -作者:[Jeffrey Robert Kaufman][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/jkaufman -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/team-discussion-mac-laptop-stickers.png?itok=AThobsFH (Active listening in a meeting is a skill) -[2]: https://opensource.com/article/16/12/open-source-lawyer -[3]: https://opensource.org/ -[4]: https://sfconservancy.org/ -[5]: https://www.softwarefreedom.org/ -[6]: https://www.fsf.org/ -[7]: https://fsfe.org/index.en.html -[8]: https://www.linuxfoundation.org/ -[9]: https://lists.opensource.org/mailman/listinfo/license-discuss_lists.opensource.org -[10]: https://lists.opensource.org/mailman/listinfo/license-review_lists.opensource.org diff --git a/sources/talk/20200822 3 reasons small businesses choose open source tools for remote employees.md b/sources/talk/20200822 3 reasons small businesses choose open source tools for remote employees.md deleted file mode 100644 index 09d1126926..0000000000 --- a/sources/talk/20200822 3 reasons small businesses choose open source tools for remote employees.md +++ /dev/null @@ -1,77 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (3 reasons small businesses choose open source tools for remote employees) -[#]: via: (https://opensource.com/article/20/8/business-tools) -[#]: author: (Adrian Johansen https://opensource.com/users/ajohansen) - -3 reasons small businesses choose open source tools for remote employees -====== -There are plenty of open source operations tools available if you lack -the budget for premium software; here's how to evaluate your options. -![A chair in a field.][1] - -The last decade or so has seen some significant changes in how businesses operate. The expansion of accessible, affordable, connected technology has removed barriers to many resources, enabling collaboration and execution of work by nearly anyone, from nearly anywhere. Though COVID-19 has made remote operations a necessity for a lot of industries, many businesses had already begun to embrace it as a more cost-effective, agile way of working. - -That said, not every business has the budget to subscribe to premium software as a service (SaaS) to keep their remote employees productive. The good news is that open source software can be every bit as robust and intuitive as the premium options that are only available to those with plenty of capital. The key is clearly identifying what you need from those tools in order to focus your search. - -The open source community can offer some smart solutions to the challenges of remote working, and we’re going to look at a few key areas of need for businesses exploring how they can operate more effectively. - -### Flexible collaboration - -One of the primary challenges for businesses operating remotely is managing the productivity of disparate teams. Employee management can be difficult enough when everybody is in the same room, but keeping teams in close collaboration when they may be working in different cities or even different time zones requires water-tight organization. This is why open source tools that make flexible yet robust collaborations possible are on top of the list for remote teams today. - -Among the best [open source tools][2] on the market at the moment is [Taiga][3], a project management platform. It uses the card-style task organization approach, providing a board that is visible to all employees on the network and keeps leadership and team members informed about the status of individual tasks and overall project progress. Open source project management software that mimics the easy collaboration that premium services like Trello and Asana offer are increasingly popular. Many—[Odoo][4] and [OpenProject][5] among them—go further than their premium counterparts, offering integrated apps for forecasting and making it easier to share and transfer files or documents. - -When it comes to remote collaboration, effective communication tools are also a must. Team chat platforms can help to make certain that remote employees have access to leadership and other team members whenever they need assistance or clarification on tasks. The chat room nature of them also helps to build team camaraderie. [Mattermost][6] and [Rocket.Chat][7] are among the popular open source platforms that act as [effective alternatives to SaaS like Slack][8]; both have free options, public and private chat rooms, and the ability to upload and share media files. - -### User-friendliness - -There is a focus on effective user interfaces (UI) across the software industry at the moment, and this is arguably even more essential for remote teams. This is not just important for the day-to-day functionality of tools but also for ease of training. New employee onboarding can be improved by implementing a clear, fluid process that introduces new hires to the business’ core practices and tools. This means that any open source software deployed must be user-friendly enough to require minimal guidance and cause few disruptions during ramp-up. - -It certainly helps when the software itself is designed intuitively. [Drawpile][9] is an excellent example of this. [This collaborative drawing platform][10], used for team meetings and creative projects alike, uses clear icons and interfaces that are similar to popular drawing platforms like Photoshop or MSPaint. It also presents a minimalistic, functional approach to avoid overwhelming the uninitiated. When reviewing open source software, business leaders need to consider the perspective of a new user and evaluate its ease of use. - -It’s also important to take into account what instructional assets the developers have provided. Many have online manuals, though the nature of open source can mean that these frequently change and evolve over time. Some, like storage and sharing platform [Nextcloud][11], include separate training materials for users, developers, and administration. Review accessibility to concise documentation like this and ensure that it can be easily integrated, delivered, and understood during your remote employee onboarding process. - -### Security and support - -A concern for any business owner operating in digital spaces is ensuring that operations are not just efficient but secure. One of the aspects that can make premium software attractive is robust cybersecurity protocols and integrated support services. In searching for open source software, it’s important to understand the extent to which developers have put security protocols in place, and how this affects company, employee, and customer safety. - -This can be especially important when utilizing platforms that facilitate the sharing of documents and discussion of potentially sensitive company information. Many options on the market, including [Jitsi][12] and [BigBlueButton][13], are upfront about the security measures and encryptions on their software that often go beyond those on premium platforms. However, it’s equally important to make certain that employees themselves understand that their actions are as vital to security as the encryption. Be clear about what behavior can lead to phishing attacks that make the business vulnerable to two-factor authentication bypassing, and how to safely share information through activities such as dynamic linking. - -One of the most significant advantages that open source software holds over most premium products is access to a vibrant and supportive community. While there are core teams behind the software, there’s a spirit of collaboration and collective ownership to its development and continued growth. [LibreOffice][14] actively encourages its users to [help improve the product][15] through feedback and forums. This means users can often easily communicate with experts whenever issues arise and work together to solve problems, and ultimately make the product better in the future. - -### Conclusion - -Review how open source software can improve collaboration, and fit into your onboarding procedures, and examine the potential for security and community support. And by using open source, you retain control over your data, assets, and workflow. In a world that is swiftly embracing remote practices, discovering the right tools now can give you a competitive advantage. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/8/business-tools - -作者:[Adrian Johansen][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/ajohansen -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/BIZ_WorkInPublic_4618517_1110_CS_A.png?itok=RwVrWArk (A chair in a field.) -[2]: https://opensource.com/article/20/3/open-source-working-home -[3]: https://taiga.io/ -[4]: https://www.odoo.com/ -[5]: https://www.openproject.org/ -[6]: https://mattermost.com/ -[7]: https://rocket.chat/ -[8]: https://opensource.com/alternatives/slack -[9]: https://drawpile.net/ -[10]: https://opensource.com/article/20/3/drawpile -[11]: https://nextcloud.com/ -[12]: https://jitsi.org/ -[13]: https://bigbluebutton.org/ -[14]: https://www.libreoffice.org/ -[15]: https://www.libreoffice.org/community/get-involved/ diff --git a/sources/talk/20200823 Open organizations through the ages.md b/sources/talk/20200823 Open organizations through the ages.md deleted file mode 100644 index 680cb789b5..0000000000 --- a/sources/talk/20200823 Open organizations through the ages.md +++ /dev/null @@ -1,69 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Open organizations through the ages) -[#]: via: (https://opensource.com/open-organization/20/8/global-history-collaboration) -[#]: author: (Ron McFarland https://opensource.com/users/ron-mcfarland) - -Open organizations through the ages -====== -On a global timeline, extensive collaboration is still a relatively new -phenomenon. That could explain why we're still getting the hang of it. -![Alarm clocks with different time][1] - -Consider the evolution of humankind. When we do, we will recognize that _having global discussions_ and _acting on global decisions_ is a relatively new phenomenon—only 100 years old, give or take a few years. We're still learning _how_ to make global decisions and execute on them successfully. - -Yet our ability to improve those globally focused practices and skills is critical to our continued survival. And open principles will be the keys to helping us learn them—as they have been throughout history. - -In the [first part of this series][2], I reviewed four factors one might use to assess globalization, and I explained how those factors relate specifically to [open organization principles][3]. Here, I'd like to present a chronology of how those principles have influenced certain developments that have made the world feel more connected and have made _personal_ or _regional_ issues into _global_ issues. - -This work draws on research by [Jeffrey D. Sachs][4], author of the book [_The Ages of Globalization_][5]. Sachs examines globalization from the genesis of humankind and argues that globalization has improved life and prosperity through the ages. He organizes human history into seven "ages," and examines the governance structure predominant in each. That structure determines how populations interact with each other (another way of assessing how socially inclusive they are). For Sachs, that inclusiveness is directly related to per capita GDP, or productivity per person. That productivity is where prosperity (or survival) is determined. - -So let's look at the growth of globalization through the ages (I'll use Sachs' categorizations) and see where open organization principles began to take hold in early civilizations. In this piece, I'll discuss historical periods up to the beginning of the Industrial Revolution (the early 1800s). - -### The Paleolithic Age (70,000‒10,000 BCE): The hunter/gatherer setting - -According to Sachs, the history of globalization really begins at the dawn of humankind. And open organization principles are evident even then—though only in tight-knit groups of 25 to 30 members, called "bands," each very similar to "bottom-up" business teams today. Such bands resisted hierarchical organization, eventually connecting with other bands to form "clans" of around 150 people, then "mega-bands" of around 500 people, and finally to "tribes" of around 1,500 people. But these groups never let go of that "band" concept (we can observe this in ancient ruins around the globe). Bands cooperated, but interactions were relatively weak (sometimes even warlike, as bands fought to protect territory). As bands' means of survival was primarily hunting and gathering, they lived a largely nomadic lifestyle. - -### The Neolithic Age (10,000‒3,000 BCE): The ranching/farming setting - -The advent of farming and ranching, Sachs says, marked this period of globalization. During that period, major segments of the human population started establishing permanent settlements, leading to decline in the hunter and gatherer nomadic lifestyle, as agricultural developments allowed for more productivity per unit area. People could establish larger villages. With new agricultural techniques, ten individuals could survive on one square kilometer of land (compared to only one person per square kilometer of hunter/gatherers). Therefore, people were not forced to migrate to new areas to survive. Communities grew larger, and these larger communities set in motion new technical discoveries in metallurgy, the arts, numeric record keeping, ceramics, and even a writing system to record technical breakthroughs. In short, _sharing_ and _collaboration_ became keys to expanding know-how, evidence of open organization principles even tens of thousands of years ago. - -Having global discussions and acting on global decisions is a relatively new phenomenon—only 100 years old, give or take a few years. - -### The Equestrian Age (3,000‒1,000 BCE): The land travel by horse setting - -During the Neolithic Age, communities began connecting with each other using horses for transportation, giving rise to another era of globalization—what Sachs calls The Equestrian Age. Domestication of animals took place almost exclusively in Eurasia and North Africa, including the use of donkeys, cattle, camels and other animals (not just horses). That domestication was by far the most important factor in the economic development and globalization in this age. Animal husbandry was a major influence on farming, mining, manufacturing, transportation, communications, warfare tactics, and governance. As greater long-distance movement was now possible (routes were formed to and from the east and west), whole civilizations began to form. The Egyptians introduced a system of writing and documentation, as well as public administration, which unified dynasties within the region. This led to advances in scientific fields, including mathematics, astronomy, engineering, metallurgy, and medicine. - -### The Classical Age (1,000 BCE‒1500 CE): An information, documentation, learning setting - -According to Sachs, this era of globalization involves the globalization of politics—namely conquering wide regions and creating empires. This includes the empires of Assyria, Persia, Greece, Rome, India, China and later the Ottoman and Mongol empires. This age saw the spread of ideas, technology, institutional concepts, and infrastructural development on a continental scale. As a result, larger communities were developed, and there was a greater and broader level of collaboration, interaction, transparency, adaptability and inclusivity than in the past. Through interaction between empires, better methods of growing food, raising farm animals, transporting goods and fighting wars spread around the globe. Much of this knowledge spread through thousands of books published, distributed, and taught (formal, community schooling began in this era, as did several documentation practices). Global trade improved with the establishment of a navy to police and protect travel routes. Simply put, this was a setting of multinational governance with ever expanding collaboration, inclusivity, and larger community development. - -### The Ocean Age (1500‒1800 CE): The long-distance sea travel and exploration setting - -During this period of globalization, Sachs says, the Old World and the New World, isolated from each other since the Paleolithic Age, finally united through ever faster ocean-going vessels, leading to greater two-way exchange. Plants, animals—and, unfortunately, diseases and pathogens—trafficked between them. Travel from Europe to Asia (via the Cape of Good Hope) increased during this era. This age saw the rise of global capitalism, with the establishment of global-scale economic organizations, like the British East India Company (chartered in 1600) and the Dutch East India Company (chartered in 1602). Each supplied global markets with goods from remote areas. But while global trade produced great prosperity during this era, in many regions it also led to great cruelty (the exploitation of indigenous peoples, for example). - -By the 1800s, communities were interacting on a scale more global than it had ever been, and open organization principles were more influential than ever before. And yet this era still saw a significant deficit of overall inclusivity and collaboration. We should note that this era of globalization is relatively _recent_ in history when viewed on the timescale Sachs outlines in _The Ages of Globalization_. - -How did we get from there to the current age? In the next article, I'll explore those developments. - --------------------------------------------------------------------------------- - -via: https://opensource.com/open-organization/20/8/global-history-collaboration - -作者:[Ron McFarland][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/ron-mcfarland -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/clocks_time.png?itok=_ID09GDk (Alarm clocks with different time) -[2]: https://opensource.com/open-organization/20/7/globalization-history-open -[3]: https://opensource.com/open-organization/resources/open-org-definition -[4]: https://en.wikipedia.org/wiki/Jeffrey_Sachs -[5]: https://cup.columbia.edu/book/the-ages-of-globalization/9780231193740 diff --git a/sources/talk/20200824 Origin stories about Unix.md b/sources/talk/20200824 Origin stories about Unix.md deleted file mode 100644 index fa40a70345..0000000000 --- a/sources/talk/20200824 Origin stories about Unix.md +++ /dev/null @@ -1,75 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Origin stories about Unix) -[#]: via: (https://opensource.com/article/20/8/unix-history) -[#]: author: (Jim Hall https://opensource.com/users/jim-hall) - -Origin stories about Unix -====== -Brian Kernighan, one of the original Unix gurus, shares his insights -into the origins of Unix and its associated technology. -![Old UNIX computer][1] - -Brian W. Kernighan opens his book _Unix: A History and a Memoir_ with the line, "To understand how Unix happened, we have to understand Bell Labs, especially how it worked and the creative environment that it provided." And so begins a wonderful trip back in time, following the creation and development of early Unix with someone who was there. - -You may recognize Brian Kernighan's name. He is the "K" in [AWK][2], the "K" in "K&R C" (he co-wrote the original "Kernighan and Ritchie" book about the C programming language), and he has authored and co-authored many books about Unix and technology. On my own bookshelf, I can find several of Kernighan's books, including _The Unix Programming Environment_ (with Rob Pike), _The AWK Programming Language_ (with Alfred Aho and Peter J. Weinberger), and _The C Programming Language_ (with Dennis M. Ritchie). And of course, his latest entry, _Unix: A History and a Memoir_. - -I interviewed Brian about this most recent book. I think we spent equal amounts of time discussing the book as we did reminiscing about Unix and groff. Below are a few highlights of our conversation: - -### JH: What prompted you to write this book? - -BWK: I thought it would be nice to have a history of what happened at Bell Labs. Jon Gertner wrote a book, _The Idea Factory: Bell Labs and the Great Age of American Innovation_, that described the physical science work at Bell Labs. This was an authoritative work, very technical, and not something that I could do, but it was kind of the inspiration for this book. - -There's also a book by James Gleick, _The Information: A History, a Theory, a Flood_, that isn't specific to Bell Labs, but it's very interesting. That was kind of an inspiration for this, too. - -I originally wanted to write an academic history of the Labs, but I realized it was better to write something based on my own memories and the memories of those who were there at the time. So that's where the book came from. - -### JH: What are a few stories from the book you'd like people to read about? - -BWK: I think there are really two stories I'd like people to know about, and both of them are origin myths. I heard them afresh when Ken Thompson and I were at the [Vintage Computer Festival about a year ago][3]. - -One is the origin of Unix itself—how Bonnie, Ken's wife, went off on vacation for three weeks, just at the time that Ken thought he was about three weeks away from having a complete operating system. This was, of course, due to Ken's very competent programming abilities, and it was incredible he was able to pull it off. It was written entirely in Assembly and was really amazing work. - -[Note: This story starts on page 33 in the book. I'll briefly relate it here. Thompson was working on "a disk scheduling algorithm that would try to maximize throughput on any disk," but particularly the PDP-7's very tall single-platter disk drive. In testing the algorithm, Thompson realized, "I was three weeks from an operating system." He broke down his work into three units—an editor, an assembler, and a kernel—and wrote one per week. And about that time, Bonnie took their son to visit Ken's parents in California, so Thompson had those three weeks to work undisturbed.] - -And then there's the origin story for `grep`. Over the years, I'd gotten the story slightly wrong—I thought Ken had written `grep` entirely on demand. It was classic Ken that he had a great idea, a neat idea, a clean idea, and he was able to write it very quickly. Regular expressions (regex) were already present in the text editor, so really, he just pulled regex from the editor and turned it into a program. - -[Note: This story starts on page 70 in the book. Doug McIlroy said, "Wouldn't it be great if we could look for things in files?" Thompson replied, "Let me think about it overnight," and the next morning presented McIlroy with the `grep` program he'd written.] - -### JH: What other stories did you not get to tell in the book? - -BWK: I immediately think of the "Peter Weinberger's face" story! There were a lot of pranks based on having a picture of Peter's face pop up in random places. Someone attached a picture of Peter with magnets to the metal wall of a stairway. And there was a meeting once where Peter was up in front, not in the audience. And while he was talking, everyone in the audience held up a mask that had Peter's face printed on it.  - -[Note: The "Peter Weinberger's face" story starts on page 47 in the book. Spinroot also has an [archive of the prank][4] with examples.] - -I talked to a lot of people from the Labs about the book. I would email people, and I would receive long replies with more stories than I could fit into the length or the narrative. Honestly, there's probably a whole other book that someone else could write just based on those stories. It's amazing how many people come forward with stories about Unix and running Unix on systems I haven't even heard of. - -## A fantastic read - -_Unix: A History and a Memoir_ is well-titled. Throughout the book, Kernighan shares details on the rich history of Unix, including background on Bell Labs, the spark of Unix with CTSS and Multics in 1969, and the first edition in 1971. Kernighan also provides his own reflection on how Unix came to be such a dominant platform, including notes on portability, Unix tools, the Unix Wars, and Unix descendants such as Minix, Linux, BSD, and Plan9. You will also find nuggets of information and great stories that fill in details around some of the everyday features of Unix. - -At just over 180 pages, _Unix: A History and a Memoir_ is a fantastic read. If you are a fan of Linux, or any open source Unix, including the BSD versions, you will want to read this book. - -_Unix: A History and a Memoir_ is available on [Amazon][5] in paperback and e-book formats. Published by Kindle Direct Publishing, October 2019. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/8/unix-history - -作者:[Jim Hall][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/jim-hall -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/retro_old_unix_computer.png?itok=SYAb2xoW (Old UNIX computer) -[2]: https://opensource.com/resources/what-awk -[3]: https://www.youtube.com/watch?v=EY6q5dv_B-o -[4]: https://spinroot.com/pico/pjw.html -[5]: https://www.amazon.com/dp/1695978552 diff --git a/sources/talk/20200825 Why we open sourced our security project.md b/sources/talk/20200825 Why we open sourced our security project.md deleted file mode 100644 index c161728197..0000000000 --- a/sources/talk/20200825 Why we open sourced our security project.md +++ /dev/null @@ -1,102 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Why we open sourced our security project) -[#]: via: (https://opensource.com/article/20/8/why-open-source) -[#]: author: (Mike Bursell https://opensource.com/users/mikecamel) - -Why we open sourced our security project -====== -It’s not just coding that we do in the open. -![A lock on the side of a building][1] - -When Nathaniel McCallum and I embarked on the project that is now called [Enarx][2], we made one decision right at the beginning: the code for Enarx would be open source, a stance fully supported by our employer, Red Hat (see the [standard disclaimer][3] on my blog). All of it, and forever. - -That's a decision that we've not regretted at any point, and it's something we stand behind. As soon as we had enough code for a demo and were ready to show it, we created a [repository on GitHub][4] and made it public. There's a very small exception, which is that there are some details of upcoming chip features that are shared with us under an NDA[1][5] where publishing any code we might write for them would be a breach of the NDA. But where this applies (which is rarely), we are absolutely clear with the vendors that we intend to make the code open as soon as possible, and we lobby them to release details as early as they can (which may be earlier than they might prefer) so that more experts can look over both their designs and our code. - -### Auditability and trust - -This brings us to possibly the most important reasons for making Enarx open source: auditability and trust. Enarx is a security-related project, and I believe passionately not only that [security should be done in the open][6] but also that if anybody is actually going to trust their sensitive data, algorithms, and workloads to a piece of software, then they want to be in a position where as many experts as possible have looked at it, scrutinised it, criticised it, and improved it, whether that is the people running the software, their employees, contractors, or (even better) the wider security community. The more people who check the code, the happier you should be to [trust it][7]. This is important for any piece of security software, but it is _vital_ for software such as Enarx, which is designed to protect your most sensitive workloads. - -### Bug catching - -There are bugs in Enarx. I know: I'm writing some of the code,[2][8] and I found one yesterday (which I'd put in), just as I was about to give a demo.[3][9] It is very, very difficult to write perfect code, and we know that if we make our source open, then more people can help us fix issues. - -### Commonwealth - -For Nathaniel and me, open source is an ethical issue, and we make no apologies for that. I think it's the same for most, if not all, of the team working on Enarx. This includes a number of Red Hat employees (see standard disclaimer), so it shouldn't come as a surprise, but we also have non-Red Hat contributors from a number of backgrounds. We feel that Enarx should be a Common Good and [contribute to the commonwealth][10] of intellectual property out there. - -### More brainpower - -Making something open source doesn't just make it easier to fix bugs: it can improve the quality of what you produce in general. The more brainpower you have to apply to the problem, the better your chances of making something great––assuming that the brainpower is applied efficiently (not always an easy task!). In a recent design meeting, one of the participants said towards the end, "I'm sure I could implement some of this, but I don't know a huge amount about this topic, and I'm worried that I'm not contributing to this discussion." In fact, they had contributed by asking questions and clarifying some points, and we assured them that we wanted to include experienced, senior developers for their expertise and knowledge and to pull out assumptions and validate the design, and not because we expected everybody to be experts in all parts of the project. - -Having bright people involved in design and coding spreads expertise and knowledge and helps keep the work from becoming an insulated, isolated "ivory tower" construction, understood by few, and almost impossible to validate. - -### Not just code - -It's not just coding that we do in the open. We manage our architecture in the open, our design meetings, our protocol design, our design methodology,[4][11] our documentation, our bug tracking, our chat, our CI/CD processes: all of it is open. The one exception is our [vulnerability management][12] process, which needs the opportunity for confidential exposure for a limited time. Here is where you can find our resources: - - * [Code][4] - * [Wiki][13] - * Design is on the wiki and [request for comments][14] repo - * [Issues][15] and [pull requests][16] - * [Chat][17] (thanks to [Rocket.chat][18]!) - * CI/CD resources thanks to [Packet][19]! - * [Stand-ups][20] - - - -We also take diversity seriously, and the project contributors are subject to the [Contributor Covenant Code of Conduct][21]. - -In short, Enarx is an open project. I'm sure we could do better, and we'll strive for that, but our underlying principles are that open is good in general and vital for security. If you agree, please come and visit! - -* * * - - 1. Non-disclosure agreement - 2. To the surprise of many of the team, including myself. At least it's not in Perl. - 3. I fixed it. Admittedly, after the demo. - 4. We've just moved to a sprint pattern, the details of which we designed and agreed to in the open. - - - -* * * - -_This article was originally published on [Alice, Eve, and Bob][22] and is adapted and reprinted with the author's permission._ - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/8/why-open-source - -作者:[Mike Bursell][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/mikecamel -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/BUSINESS_3reasons.png?itok=k6F3-BqA (A lock on the side of a building) -[2]: https://enarx.dev/ -[3]: https://aliceevebob.com/ -[4]: https://github.com/enarx -[5]: tmp.PM1nWCfATC#1 -[6]: https://opensource.com/article/17/10/many-eyes -[7]: https://aliceevebob.com/2019/06/18/trust-choosing-open-source/ -[8]: tmp.PM1nWCfATC#2 -[9]: tmp.PM1nWCfATC#3 -[10]: https://opensource.com/article/17/11/commonwealth-open-source -[11]: tmp.PM1nWCfATC#4 -[12]: https://aliceevebob.com/2020/05/26/security-disclosure-or-vulnerability-management/ -[13]: https://github.com/enarx/enarx/wiki -[14]: https://github.com/enarx/rfcs -[15]: https://github.com/enarx/enarx/issues -[16]: https://github.com/enarx/enarx/pulls -[17]: https://chat.enarx.dev/ -[18]: https://rocket.chat/ -[19]: https://packet.com/ -[20]: https://github.com/enarx/enarx/wiki/How-to-contribute -[21]: https://github.com/enarx/.github/blob/master/CODE_OF_CONDUCT.md -[22]: https://aliceevebob.com/2020/07/28/why-enarx-is-open/ diff --git a/sources/talk/20200828 Why Comcast open sourced its DNS management tool.md b/sources/talk/20200828 Why Comcast open sourced its DNS management tool.md deleted file mode 100644 index 74601f556d..0000000000 --- a/sources/talk/20200828 Why Comcast open sourced its DNS management tool.md +++ /dev/null @@ -1,95 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Why Comcast open sourced its DNS management tool) -[#]: via: (https://opensource.com/article/20/9/open-source-dns) -[#]: author: (Paul Cleary https://opensource.com/users/pauljamescleary) - -Why Comcast open sourced its DNS management tool -====== -This open source DNS management tool was built by and for the telcom -giant, but is establishing itself in its own right and welcoming more -contributors. -![An intersection of pipes.][1] - -Adoption of [DevOps][2] practices at Comcast led to increased automation and configuration of infrastructure that supports applications, back-office, data centers, and our network. These practices require teams to move fast and be self-reliant. Infrastructure is constantly turned upside down, with network traffic moved around it constantly. Good DNS record management is critical to support this level of autonomy and automation, but how can a large, diverse enterprise move quickly while safely governing its DNS assets? - -### Challenge - -Prior to 2016, DNS record management was mostly done through an online ticketing system—users would submit tickets for DNS changes that were manually reviewed and implemented by a separate team of DNS technicians. This system frequently required manual intervention for many of the DNS requests, which was time-consuming. - -Turnaround times for DNS changes were in hours, which is not suitable for infrastructure automation. Large Internet companies can manage millions of DNS records, making it practically impossible for DNS technicians to certify the correctness of the thousands of DNS updates being requested daily. This increased the possibility of an inadvertent errant update to a critical DNS record that ultimately would lead to a downtime event. - -In addition, engineering teams are intimately familiar with their DNS needs—much more so than a single group of DNS technicians serving an entire enterprise. So, we needed to enable engineering teams to self-service their own DNS records, implement changes quickly (in seconds), and at the same time, make sure all changes are done safely. - -### Solution - -VinylDNS was built at Comcast and subsequently opened to empower engineering teams to automate as they please while providing the safety and administrative controls demanded by DNS operators and the Comcast Security team. - -### Security as a way of life - -VinylDNS is all about automation and enhanced security. At Comcast, the VinylDNS team worked in close coordination with both the DNS and engineering teams at Comcast, as well as the security team, to meet stringent engineering and security requirements. An incredible array of access controls was implemented that give extreme flexibility to both DNS operators and engineering teams to control their DNS assets. - -Access controls implemented at the DNS zone level allow any team to control who can make updates to their DNS zones. When a DNS zone is registered and authorized to a VinylDNS group, only members of that group can make changes to DNS records in that DNS zone. In addition, access-list (ACL) rules provide extreme flexibility to allow other VinylDNS users to manage records in that zone. These ACL rules can be defined using regular expression masks or classless inter-domain routing (CIDR) rules and DNS record types that lock down access to specific users and groups to certain records in specific DNS zones. - -### Meeting the demands of automation - -A [representational state transfer (REST) API][3] was built along with the system. This uses request signing to help eliminate man-in-the-middle attacks. Once the engineering teams at Comcast caught wind of the kind of automation afforded by VinylDNS, many began building out tooling to integrate directly with VinylDNS via its API. It wasn't long before most of them were using organically developed tooling integrated with the VinylDNS API to support their DNS needs. - -### Performing at large enterprise scale - -Very quickly, VinylDNS was managing a million DNS records and thousands of DNS zones, and supporting hundreds of engineers. As we sought to expand VinylDNS to support the rest of Comcast, we recognized some challenges. - - 1. Certain DNS records were off-limits, deemed too critical to manage in any way other than by hand. - 2. The ACL rule model, while flexible, would be impossible to set up and maintain across the entirety of Comcast's DNS footprint (which has millions of DNS zones, and hundreds of millions of DNS records). - 3. Many DNS domains are considered "universal" and not locked down to a single group. This holds true for reverse zones, as IP space can often be freely assigned to anyone. - 4. Certain DNS change requests still require a manual review and approval, i.e., you cannot truly automate everything. - 5. Some teams that provision a DNS record are not the same engineers responsible for its lifecycle. The engineers that ultimately decommission a DNS record might be unknown at the time of creation. - 6. Certain teams require DNS changes to be scheduled at some point in the future. For example, maintenance may be done off-hours, and the employee doing the maintenance may not have access to VinylDNS. - - - -To address these issues, VinylDNS added more access controls and features. Shared zones allow universal access while maintaining security via record ownership. Record ownership ensures that the party who creates a DNS record is the only one that can manage that record. This feature alone allowed us to move much of the DNS reverse space into VinylDNS. - -Manual review was added to support tighter governance on certain DNS zones and records. For example, a sensitive DNS zone might demand review before implementing changes, as opposed to having all changes immediately applied. - -High-value domains support was added to block VinylDNS from ever being able to update certain DNS records. High-value DNS records like [www.comcast.com][4], for example, are impossible to manage via VinylDNS and require extreme governance that can't be accomplished via an automation platform. - -Global ACLs were added to support situations where teams that created DNS records were not responsible for the maintenance and decommissioning of those DNS records. This allowed overrides for certain groups by fully qualified domain name (FQDN) and IP address for certain DNS domains. - -Finally, scheduled changes allow users to schedule a DNS change for a future time. - -### Results - -VinylDNS now governs most of Comcast's internal DNS space, managing millions of DNS records across thousands of DNS zones, and supporting thousands of engineers. In addition, we leverage integration with a wide array of tools and programming languages, including Java, Python, Go, and Ruby (most of which are open source). - -### Toward the future - -There are several opportunities for additional feature development, which Comcast has planned as part of its ongoing evolution of the platform. The same level of access controls and governance is needed for DNS assets managed in public cloud settings. In addition, we are looking into the ability to manage DNS zones (create and delete), which is required for IPv6 reverse zones. Finally, we are looking to create a powerful admin experience for our DNS operators who are looking to take advantage of the data that lives in the VinylDNS database. - -### Opening up - -[VinylDNS][5] is an open source project released and managed by [Comcast Open Source][6]. VinylDNS and its accompanying ecosystem were built by engineers in several organizations across Comcast, leveraging our inner source program. It is free for use, licensed under Apache License 2.0. We welcome all contributors, from code to bugs to feature requests, from new projects to project ideas. You can [contact our team on Gitter][7]. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/9/open-source-dns - -作者:[Paul Cleary][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/pauljamescleary -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/LAW-Internet_construction_9401467_520x292_0512_dc.png?itok=RPkPPtDe (An intersection of pipes.) -[2]: https://opensource.com/resources/devops -[3]: https://www.redhat.com/en/topics/api/what-is-a-rest-api -[4]: http://www.comcast.com -[5]: https://www.vinyldns.io -[6]: https://comcast.github.io/ -[7]: https://gitter.im/vinyldns/vinyldns diff --git a/sources/talk/20200830 The power of open source during a pandemic.md b/sources/talk/20200830 The power of open source during a pandemic.md deleted file mode 100644 index e2ab4fd400..0000000000 --- a/sources/talk/20200830 The power of open source during a pandemic.md +++ /dev/null @@ -1,71 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (The power of open source during a pandemic) -[#]: via: (https://opensource.com/open-organization/20/8/power-open-source-during-pandemic) -[#]: author: (Laura Hilliger https://opensource.com/users/laurahilliger) - -The power of open source during a pandemic -====== -Successfully addressing shared global problems requires open source—both -principles and code—to foster innovation quickly and bridge gaps in -effective remote collaboration. -![Open source prescription.][1] - -When a novel coronavirus made headlines earlier this year, the world wasn't ready. In a short period of time, we all witnessed the consequences of having a global, interconnected economy unprepared for effective global collaboration. Indeed, this pandemic shed light on the under-preparedness of a truly global economy in a hyper-connected world. We didn't pay attention to the fact that a health issue in China could have an impact on both the real estate market in North Carolina and a shoe factory in Italy. Facing a pandemic, especially one that forced such extreme social distancing, required drastic shifts—both technological and social. - -Many organizations, governments, and companies realized that facing a global pandemic like COVID-19 required new tools for tracking the spread of the virus. In order to keep up with this growing threat, decision makers around the world needed effective technological solutions for both tracking and contact tracing; we needed correct, up-to-the-minute data for making the best decisions. Facing this pandemic also required non-technical organizations to become technically capable quite quickly. Organizations were forced to rapidly build new solutions and uncover new ways of working. Facing this new global problem, the world realized that the digital transformation everyone has been talking about—but delaying until they had a budget—was now more important than ever. - -Moreover, as we started to advise and work with different organizations around the world, we discovered that many of them were facing similar issues. As a last minute solution, many started building not only their own custom technologies but also their own custom _organizational strategies_ for tackling this crisis. Quick but reactive approaches left many governments and organizations across the world building exactly the same solutions, often in isolation. Had they collaborated and shared what they were learning, they could have been building solutions _with_ one another. - -In other words: Had they been operating more like open source communities and truly open organizations, they could have found better answers sooner. - -### Building global solutions the open source way - -For years, members of the open source community have been collaborating with one another on projects like these. We've been working together in remote environments since long before the pandemic hit. Our processes and policies, documented or not, have allowed us to push the technology industry forward at warp speed. In a mere 30 years, we've managed to make open source the standard for new software, and we've proven that global, remote, community-based collaboration can solve big problems. - -Now the rest of the world seems to be following suit, adapting open principles and practices to create global change. By relying on the open source principles and code, we could truly build more effectively shared solutions and strategies that could help us all stop a global pandemic. - -We see many examples of openness bridging collaboration gaps. The [UK Government Digital Service][2] is uniting citizens and government, helping the government to operate more effectively and efficiently. The [UNESCO Global Network of Learning Cities][3] is pushing city education policy forward, facilitating partnerships between member cities. [Greenpeace is championing open source][4], and using it to help change mindsets and behaviors surrounding the climate emergency. Other coalitions have pledged to accelerate [cooperation on a coronavirus vaccine and to share research][5], treatment, and medicines across the globe. - -The world needs to shift the way it's approaching problems and continue locating solutions the open source way. Individually, this might mean becoming connection-oriented problem-solvers. We need people able to think communally, communicate asynchronously, and consider innovation iteratively. We're seeing that organizations would need to consider technologists less as tradespeople who build systems and more as experts in global collaboration, people who can make future-proof decisions on everything from data structures to personnel processes. - -### A new strategy: Cross-sector social innovation - -Now is the time to start building new paradigms for global collaboration and find unifying solutions to our shared problems, and one key element to doing this successfully is our ability to work together across sectors. A global pandemic needs the public sector, the private sector, and the nonprofit world to collaborate, each bringing its own expertise to a common, shared platform. - -By relying on the open source principles and code, we could truly build more effectively shared solutions and strategies that could help us all stop a global pandemic. - -The private sector plays a key role in building this method of collaboration by building a robust social innovation strategy that aligns with the collective problems affecting us all. This pandemic is a great example of collective global issues affecting every business around the world, and this is the reason why shared platforms and effective collaboration will be key moving forward. - -Social innovation is an approach to social responsibility that requires a unique strategy for every organization, one directly linking their business goals and company values to the common good. The most effective way of implementing this strategy that requires fast-paced, social innovation is by embracing open source principles to enable collaboration across regions and sectors. - -For example, [PathCheck][6] Foundation is doing this to quickly and effectively build a platform for shared needs. The PathCheck suite of open source software gives public and private sector organizations solutions for digital contact tracing and exposure notification, with the goal of containing COVID-19 and restarting the economy without sacrificing privacy. Started by Prof. Ramesh Raskar and passionate students at MIT—and now consisting of 1800 volunteers in partnership with many companies, and supported by a newly created nonprofit—PathCheck is a great example of how collaboration on an open source platform is a multiplier (being developed by a growing global, passionate, community of engineers, scientist, health authorities, designers, and contributors, and being used by many governments and organizations than any other service provider). - -There is a way to tackle the pandemic and other global issues more effectively through shared platforms and open collaboration. Open source advocates have been doing it for a while, bringing open source to non-profits, governments and corporations, opening up education, connecting open design to global knowledge networks, building open hardware initiatives and structuring open government work. Members of the global open source community have already shown how the post-pandemic world could look—humane, transparent, collaborative, diverse. - -Last but not least, the power of the individual aligned with a community—and the power of collaboration for solving issues that are important to all of us—are more powerful than we think. When companies, the public sector, and nonprofits work together, everyone can be part of a _shared_ solution. An open source approach allows every individual to make an impact and contribute to projects using different, complementary skill sets. - -Everyone can make a difference every day. And we can use the power of open source to ensure that difference changes the world for good. - --------------------------------------------------------------------------------- - -via: https://opensource.com/open-organization/20/8/power-open-source-during-pandemic - -作者:[Laura Hilliger][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/laurahilliger -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/osdc_520x292_opensourceprescription.png?itok=gFrc_GTH (Open source prescription.) -[2]: https://www.gov.uk/government/organisations/government-digital-service/about -[3]: https://uil.unesco.org/lifelong-learning/learning-cities -[4]: https://opensource.com/tags/open-organization-greenpeace -[5]: https://opensource.com/open-organization/20/6/covid-alliance -[6]: https://pathcheck.org/ diff --git a/sources/talk/20200831 Making Zephyr More Secure.md b/sources/talk/20200831 Making Zephyr More Secure.md deleted file mode 100644 index 9b63cbe66d..0000000000 --- a/sources/talk/20200831 Making Zephyr More Secure.md +++ /dev/null @@ -1,59 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Making Zephyr More Secure) -[#]: via: (https://www.linux.com/audience/developers/making-zephyr-more-secure/) -[#]: author: (Swapnil Bhartiya https://www.linux.com/author/swapnil/) - -Making Zephyr More Secure -====== - -Zephyr is gaining momentum where more and more companies are embracing this open source project for their embedded devices. However, security is becoming a huge concern for these connected devices. The NCC Group recently conducted an evaluation and security assessment of the project to help harden it against attacks. In the interview, Kate Stewart, Senior Director of Strategic Programs at Linux Foundation talk about the assessment and the evolution of the project. - -Here is a quick transcript of the interview: - -**Swapnil Bhartiya: The NCC group recently evaluated Linux for security. Can you talk about what was the outcome of that evaluation?** -Kate Stewart: We’re very thankful for the NCC group for the work that they did and helping us to get Zephyr hardened further. In some senses when it had first hit us, it was like, “Okay, they’re taking us seriously now. Awesome.” And the reason they’re doing this is that their customers are asking for it. They’ve got people who are very interested in Zephyr so they decided to invest the time doing the research to see what they could find. And the fact that we’re good enough to critique now is a nice positive for the project, no question. - -Up till this point, we’d had been getting some vulnerabilities that researchers had noticed in certain areas and had to tell us about. We’d issued CVEs so we had a process down, but suddenly being hit with the whole bulk of those like that was like, “Okay, time to up our game guys.” And so, what we’ve done is we found out we didn’t have a good way of letting people who have products with Zephyr based on them know about our vulnerabilities. And what we wanted to be able to do is make it clear that if people have products and they have them out in the market and that they want to know if there’s a vulnerability. We just added a new webpage so they know how to register, and they can let us know to contact them. - -The challenge of embedded is you don’t quite know where the software is. We’ve got a lot of people downloading Zephyr, we got a lot of people using Zephyr. We’re seeing people upstreaming things all the time, but we don’t know where the products are, it’s all word of mouth to a large extent. There’re no tracers or anything else, you don’t want to do that in an embedded space on IoT; battery life is important. And so, it’s pretty key for figuring out how do we let people who want to be notified know. - -We’d registered as a CNA with Mitre several years ago now and we can assign CVE numbers in the project. But what we didn’t have was a good way of reaching out to people beyond our membership under embargo so that we can give them time to remediate any issues that we’re fixing. By changing our policies, it’s gone from a 60-day embargo window to a 90-day embargo window. In the first 30 days, we’re working internally to get the team to fix the issues and then we’ve got a 60-day window for our people who do products to basically remediate in the field if necessary. So, getting ourselves useful for product makers was one of the big focuses this year. - -**Swapnil Bhartiya: Since Zephyr’s LTS release was made last year, can you talk about the new releases, especially from the security perspective because I think the latest version is 2.3.0?** -Kate Stewart: Yeah, 2.3.0 and then we also have 1.14.2. and 1.14 is our LTS-1 as we say. And we’ve put an update out to it with the security fixes and a long-term stable like the Linux kernel has security fixes and bug fixes backported into it so that people can build products on it and keep it active over time without as much change in the interfaces and everything else that we’re doing in the mainline development tree and what we’ve just done with the 2.3. - -2.3 has a lot of new features in it and we’ve got all these vulnerabilities remediated. There’s a lot more coming up down the road, so the community right now is working. We’ve adopted new set of coding guidelines for the project and we will be working on that so we can get ourselves ready for going after safety certifications next year. So there’s a lot of code in motion right now, but there’s a lot of new features being added every day. It’s great. - -**Swapnil Bhartiya: I also want to talk a bit about the community side of it. Can you talk about how the community is growing new use cases?** -Kate Stewart: We’ve just added two new members into Zephyr. We’ve got Teenage Engineering has just joined us and Laird Connectivity has just joined us and it’s really cool to start seeing these products coming out. There are some rather interesting technologies and products that are showing up and so I’m really looking forward to being able to have blog posts about them. - -Laird Connectivity is basically a small device running Zephyr that you can use for monitoring distance without recording other information. So, in days of COVID, we need to start figuring out technology assists to help us keep the risk down. Laird Connectivity has devices for that. - -So we’re seeing a lot of innovation happening very quickly in Zephyr and that’s really Zephyr’s strength is it’s got a very solid code base and lets people add their innovation on top. - -**Swapnil Bhartiya: What role do you think Zephyr going to play in the post-COVID-19 world?** -Kate Stewart: Well, I think they offer us interesting opportunities. Some of the technologies that are being looked at for monitoring for instance – we have distance monitoring, contact tracing and things like that. We can either do it very manually or we can start to take advantage of the technology infrastructures to do so. But people may not want to have a device effectively monitoring them all the time. They may just want to know exactly, position-wise, where they are. So that’s potentially some degree of control over what’s being sent into the tracing and tracking. - -These sorts of technologies I think will be helping us improve things over time. I think there’s a lot of knowledge that we’re getting out of these and ways we can optimize the information and the RTOS and the sensors are discrete functionality and are improving how do we look at things. - -**Swapnil Bhartiya: There are so many people who are using Zephyr but since it is open source we not even aware of them. How do you ensure that whether someone is an official member of the project or not if they are running Zephyr their devices are secure?** -Kate Stewart: We do a lot of testing with Zephyr, there’s a tremendous amount of test infrastructure. There’s the whole regression infrastructure. We work to various thresholds of quality levels and we’ve got a lot of expertise and have publicly documented all of our best practices. A security team is a top-notch group of people. I’m really so proud to be able to work with them. They do a really good job of caring about the issues as well as finding them, debugging them and making sure anything that comes up gets solved. So in that sense, there’s a lot of really great people working on Zephyr and it makes it a really fun community to work with, no question. In fact, it’s growing fast actually. - -**Swapnil Bhartiya: Kate, thank you so much for taking your time out and talking to me today about these projects.** --------------------------------------------------------------------------------- - -via: https://www.linux.com/audience/developers/making-zephyr-more-secure/ - -作者:[Swapnil Bhartiya][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://www.linux.com/author/swapnil/ -[b]: https://github.com/lujun9972 diff --git a/sources/talk/20200831 Open Source Project For Earthquake Warning Systems.md b/sources/talk/20200831 Open Source Project For Earthquake Warning Systems.md deleted file mode 100644 index 7cefc1bf90..0000000000 --- a/sources/talk/20200831 Open Source Project For Earthquake Warning Systems.md +++ /dev/null @@ -1,94 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Open Source Project For Earthquake Warning Systems) -[#]: via: (https://www.linux.com/featured/open-source-project-for-earthquake-warning-systems/) -[#]: author: (Swapnil Bhartiya https://www.linux.com/author/swapnil/) - -Open Source Project For Earthquake Warning Systems -====== - -Earthquakes or the shaking doesn’t kill people, buildings do. If we can get people out of buildings in time, we can save lives. Grillo has founded OpenEEW in partnership with IBM and the Linux Foundation to allow anyone to build their own earthquake early-warning system. Swapnil Bhartiya, the founder of TFiR, talked to the founder of Grillo on behalf of The Linux Foundation to learn more about the project. - -Here is the transcript of the interview: - -**Swapnil Bhartiya: If you look at these natural phenomena like earthquakes, there’s no way to fight with nature. We have to learn to coexist with them. Early warnings are the best thing to do. And we have all these technologies – IoTs and AI/ML. All those things are there, but we still don’t know much about these phenomena. So, what I do want to understand is if you look at an earthquake, we’ll see that in some countries the damage is much more than some other places. What is the reason for that?** - -Andres Meira: earthquakes disproportionately affect countries that don’t have great construction. And so, if you look at places like Mexico, the Caribbean, much of Latin America, Nepal, even some parts of India in the North and the Himalayas, you find that earthquakes can cause more damage than say in California or in Tokyo. The reason is it is buildings that ultimately kill people, not the shaking itself. So, if you can find a way to get people out of buildings before the shaking that’s really the solution here. There are many things that we don’t know about earthquakes. It’s obviously a whole field of study, but we can’t tell you for example, that an earthquake can happen in 10 years or five years. We can give you some probabilities, but not enough for you to act on. - -What we can say is that an earthquake is happening right now. These technologies are all about reducing the latency so that when we know an earthquake is happening in milliseconds we can be telling people who will be affected by that event. - -**Swapnil Bhartiya: What kind of work is going on to better understand earthquakes themselves?** - -Andres Meira: I have a very narrow focus. I’m not a seismologist and I have a very narrow focus related to detecting earthquakes and alerting people. I think in the world of seismology, there are a lot of efforts to understand the tectonic movement, but I would say there are a few interesting things happening that I know of. For example, undersea cables. People in Chile and other places are looking at undersea telecommunications cables and the effects that any sort of seismic movement have on the signals. They can actually use that as a detection system. But when you talk about some of the really deep earthquakes, 60-100 miles beneath the surface, man has not yet created holes deep enough for us to place sensors. So we’re very limited as to actually detecting earthquakes at a great depth. We have to wait for them to affect us near the surface. - -**Swapnil Bhartiya: So then how do these earthquake early warning systems work? I want to understand from a couple of points: What does the device itself look like? What do those sensors look like? What does the software look like? And how do you kind of share data and interact with each other?** - -Andres Meira: The sensors that we use, we’ve developed several iterations over the last couple of years and effectively, they are a small microcontroller, an accelerometer, this is the core component and some other components. What the device does is it records accelerations. So, it looks on the X, Y, and Z axes and just records accelerations from the ground so we are very fussy about how we install our sensors. Anybody can install it in their home through this OpenEEW initiative that we’re doing. - -The sensors themselves record shaking accelerations and we send all of those accelerations in quite large messages using MQTT. We send them every second from every sensor and all of this data is collected in the cloud, and in real-time we run algorithms. We want to know that the shaking, which the accelerometer is getting is not a passing truck. It’s actually an earthquake. - -So we’ve developed the algorithms that can tell those things apart. And of course, we wait for one or two sensors to confirm the same event so that we don’t get any false positives because you can still get some errors. Once we have that confirmation in the cloud we can send a message to all of the client devices. If you have an app, you will be receiving a message saying, there’s an earthquake at this location, and your device will then be calculating how long it will take to reach it. Therefore, how much energy will be lost and therefore, what shaking you’re going to be expecting very soon. - -**Swapnil Bhartiya: Where are these devices installed?** - -Andres Meira: They are installed at the moment in several countries – Mexico, Chile, Costa Rica, and Puerto Rico. We are very fussy about how people install them, and in fact, on the OpenEEW website, we have a guide for this. We really require that they’re installed on the ground floor because the higher up you go, the different the frequencies of the building movement, which affects the recordings. We need it to be fixed to a solid structural element. So this could be a column or a reinforced wall, something which is rigid and it needs to be away from the noise. So it wouldn’t be great if it’s near a door that was constantly opening and closing. Although we can handle that to some extent. As long as you are within the parameters, and ideally we look for good internet connections, although we have cellular versions as well, then that’s all we need. - -The real name of the game here is a quantity more than quality. If you can have a lot of sensors, it doesn’t matter if one is out. It doesn’t matter if the quality is down because we’re waiting for confirmation from other ones and redundancy is how you achieve a stable network. - -**Swapnil Bhartiya: What is the latency between the time when sensors detect an earthquake and the warning is sent out? Does it also mean that the further you are from the epicenter, the more time you will get to leave a building?** - -Andres Meira: So the time that a user gaps in terms of what we call the window of opportunity for them to actually act on the information is a variable and it depends on where the earthquake is relative to the user. So, I’ll give you an example. Right now, I’m in Mexico City. If we are detecting an earthquake in Acapulco, then you might get 60 seconds of advanced warning because an earthquake travels at more or less a fixed velocity, which is unknown and so the distance and the velocity gives you the time that you’re going to be getting. - -If that earthquake was in the South of Mexico in Oaxaca, we might get two minutes. Now, this is a variable. So of course, if you are in Istanbul, you might be very near the fault line or Kathmandu. You might be near the fault line. If the distance is less than what I just described, the time goes down. But even if you only have five seconds or 10 seconds, which might happen in the Bay area, for example, that’s still okay. You can still ask children in a school to get underneath the furniture. You can still ask surgeons in a hospital to stop doing the surgery. There’s many things you can do and there are also automated things. You can shut off elevators or turn off gas pipes. So anytime is good, but the actual time itself is a variable. -** -Swapnil Bhartiya: The most interesting thing that you are doing is that you are also open sourcing some of these technologies. Talk about what components you have open source and why.** - -Andres Meira: Open sourcing was a tough decision for us. It wasn’t something we felt comfortable with initially because we spent several years developing these tools, and we’re obviously very proud. I think that there came a point where we realized why are we doing this? Are we doing this to develop cool technologies to make some money or to save lives? All of us live in Mexico, all of us have seen the devastation of these things. We realized that open source was the only way to really accelerate what we’re doing. - -If we want to reach people in these countries that I’ve mentioned; if we really want people to work on our technology as well and make it better, which means better alert times, less false positives. If we want to really take this to the next level, then we can’t do it on our own. It will take a long time and we may never get there. - -So that was the idea for the open source. And then we thought about what we could do with open source. We identified three of our core technologies and by that I mean the sensors, the detection system, which lives in the cloud, but could also live on a Raspberry Pi, and then the way we alert people. The last part is really quite open. It depends on the context. It could be a radio station. It could be a mobile app, which we’ve got on the website, on the GitHub. It could be many things. Loudspeakers. So those three core components, we now have published in our repo, which is OpenEEW on GitHub. And from there, people can pick and choose. - -It might be that some people are data scientists so they might go just for the data because we also publish over a terabyte of accelerometer data from our networks. So people might be developing new detection systems using machine learning, and we’ve got instructions for that and we would very much welcome it. Then we have something for the people who do front end development. So they might be helping us with the applications and then we also have people something for the makers and the hardware guys. So they might be interested in working on the census and the firmware. There’s really a whole suite of technologies that we published. - -**Swapnil Bhartiya: There are other earthquake warning systems. How is OpenEEW different?** - -Andres Meira: I would divide the other systems into two categories. I would look at the national systems. I would look at say the Japanese or the California and the West coast system called Shake Alert. Those are systems with significant public funding and have taken decades to develop. I would put those into one category and another category I would look at some applications that people have developed. My Shake or Skylert, or there’s many of them. - -If you look at the first category, I would say that the main difference is that we understand the limitations of those systems because an earthquake in Northern Mexico is going to affect California and vice versa. An earthquake in Guatemala is going to affect Mexico and vice versa. An earthquake in Dominican Republic is going to affect Puerto Rico. The point is that earthquakes don’t respect geography or political boundaries. And so we think national systems are limited, and so far they are limited by their borders. So, that was the first thing. - -In terms of the technology, actually in many ways, the MEMS accelerometers that we use now are streets ahead of where we were a couple of years ago. And it really allows us to detect earthquakes hundreds of kilometers away. And actually, we can perform as well as these national systems. We’ve studied our system versus the Mexican national system called SASMEX, and more often than not, we are faster and more accurate. It’s on our website. So there’s no reason to say that our technology is worse. In fact, having cheaper sensors means you can have huge networks and these arrays are what make all the difference. - -In terms of the private ones, the problems with those are that sometimes they don’t have the investment to really do wide coverage. So the open sources are our strength there because we can rely on many people to add to the project. - -**Swapnil Bhartiya: What kind of roadmap do you have for the project? How do you see the evolution of the project itself?** - -Andres Meira: So this has been a new area for me; I’ve had to learn. The governance of OpenEEW as of today, like you mentioned, is now under the umbrella of the Linux Foundation. So this is now a Linux Foundation project and they have certain prerequisites. So we had to form a technical committee. This committee makes the steering decisions and creates the roadmap you mentioned. So, the roadmap is now published on the GitHub, and it’s a work in progress, but effectively we’re looking 12 months ahead and we’ve identified some areas that really need priority. Machine learning, as you mentioned, is definitely something that will be a huge change in this world because if we can detect earthquakes, potentially with just a single station with a much higher degree of certainty, then we can create networks that are less dense. So you can have something in Northern India and in Nepal, in Ecuador, with just a handful of sensors. So that’s a real Holy grail for us. - -We also are asking on the roadmap for people to work with us in lots of other areas. In terms of the sensors themselves, we want to do more detection on the edge. We feel that edge computing with the sensors is obviously a much better solution than what we do now, which has a lot of cloud detection. But if we can move a lot of that work to the actual devices, then I think we’re going to have much smarter networks and less telemetry, which opens up new connectivity options. So, the sensors as well are another area of priority on the road map. - -**Swapnil Bhartiya: What kind of people would you like to get involved with and how can they get involved?** - -Andres Meira: So as of today, we’re formally announcing the initiative and I would really invite people to go to OpenEEW.com, where we’ve got a site that outlines some areas that people can get involved with. We’ve tried to consider what type of people would join the project. So you’re going to get seismologists. We have seismologists from Harvard University and from other areas. They’re most interested in the data from what we’ve seen so far. They’re going to be looking at the data sets that we’ve offered and some of them are already looking at machine learning. So there’s many things that they might be looking at. Of course, anyone involved with Python and machine learning, data scientists in general, might also do similar things. Ultimately, you can be agnostic about seismology. It shouldn’t put you off because we’ve tried to abstract it away. We’ve got down to the point where this is really just data. - -Then we’ve also identified the engineers and the makers, and we’ve tried to guide them towards the repos, like the sensory posts. We are asking them to help us with the firmware and the hardware. And then we’ve got for your more typical full stack or front end developer, we’ve got some other repos that deal with the actual applications. How does the user get the data? How does the user get the alerts? There’s a lot of work we can be doing there as well. - -So, different people might have different interests. Someone might just want to take it all. Maybe someone might want to start a network in the community, but isn’t technical and that’s fine. We have a Slack channel where people can join and people can say, “Hey, I’m in this part of the world and I’m looking for people to help me with the sensors. I can do this part.” Maybe an entrepreneur might want to join and look for the technical people. - -So, we’re just open to anybody who is keen on the mission, and they’re welcome to join. --------------------------------------------------------------------------------- - -via: https://www.linux.com/featured/open-source-project-for-earthquake-warning-systems/ - -作者:[Swapnil Bhartiya][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://www.linux.com/author/swapnil/ -[b]: https://github.com/lujun9972 diff --git a/sources/talk/20200901 4 reasons Jamstack is changing web development.md b/sources/talk/20200901 4 reasons Jamstack is changing web development.md deleted file mode 100644 index 54741b402f..0000000000 --- a/sources/talk/20200901 4 reasons Jamstack is changing web development.md +++ /dev/null @@ -1,115 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (4 reasons Jamstack is changing web development) -[#]: via: (https://opensource.com/article/20/9/jamstack) -[#]: author: (Phil Hawksworth https://opensource.com/users/phil-hawksworth) - -4 reasons Jamstack is changing web development -====== -Jamstack allows web developers to move far beyond static sites without -the need for complex, expensive active-hosting infrastructure. -![spiderweb diagram][1] - -The way we use and the way we build the web have evolved dramatically since its inception. Developers have seen the rise and fall of many architectural and development paradigms intended to satisfy more complex user experiences, support evolving device capabilities, and enable more effective development workflows. - -In 2015, [Netlify][2] founders Matt Biilmann and Chris Bach coined the term "[Jamstack][3]" to describe the architectural model they were championing and that was gaining popularity. In reality, the foundations of this model have existed from the beginning of the web. But multiple factors led them to coin this new term to encapsulate the approach and to give developers and technical architects a better means to discuss it. - -In this article, I'll look at those factors, Jamstack's attributes, why the term came into existence, and how it is changing how we approach web development. - -### What is Jamstack? - -All Jamstack sites share a core principle: They are a collection of static assets generated during a build or compilation process so that they can be served from a simplified web server or directly from a content delivery network (CDN). - -Before the term "Jamstack" emerged, many people described these sites as "static." This describes how the first sites on the web were created (although CDNs would come later). But the term "static sites" does a poor job of capturing what is possible with the Jamstack due to the way tools, services, and browsers have evolved. - -The simplest Jamstack site is a single HTML file served as a static file. For a long time, open source web servers efficiently hosted static assets this way. This has become a commodity, with companies including Amazon, Microsoft, and Google offering hosting services based on file serving rather than spending compute cycles generating a response for each request on-demand. - -But that's just a static site? Right? - -Well, yes. But it's the thin end of the wedge. Jamstack builds upon this to deliver sites that confound the term "static" as a useful descriptor. - -If you take things a stage further and introduce JavaScript into the equation, you can begin enhancing the user's experience. Modern browsers have increasingly capable JavaScript engines (like the open source [V8][4] from Google) and powerful browser [APIs][5] to enable services such as local-caching, location services, identity services, media access, and much more. - -In many ways, the browser's JavaScript engine has replaced the runtime environment needed to perform dynamic operations in web experiences. Whereas a traditional technology stack such as [LAMP][6] requires configuration and maintenance of an operating system (Linux) and an active web server (Apache), these are not considerations with Jamstack. Files are served statically to clients (browsers), and if any computation is required, it can happen there rather than on the hosting infrastructure. - -As Matt Biilmann describes it, "the runtime has moved up a level, to the browser." - -Web experiences don't always require content to be dynamic or personalized, but they often do. Jamstack sites can provide this, thanks to the efficient use of JavaScript as well as a booming API economy. Many companies now provide content, tools, and services via APIs. These APIs enable even small project teams to inject previously unattainable, prohibitively expensive, and complex abilities into their Jamstack projects. For example, rather than needing to build identity, payment, and fulfillment services or to host, maintain, secure, and scale database capabilities, teams can source these functionalities from experts in those areas through APIs. - -Businesses have emerged to provide these and many other services with all of the economies of scale and domain specializations needed to make them robust, efficient, and sustainable. The ability to consume these services via APIs decouples them from web applications' code, which is a very desirable thing. - -Because these services took us beyond the old concept of static sites, a more descriptive term was needed. - -### What's in a name? - -The _JavaScript_ available in modern browsers, calling on _APIs_, and enriching the underlying site content delivered with _markup_ (HTML) are the J, A, and M in the Jamstack name. They identify properties that allow sites to move far beyond static sites without the need for complex and expensive active-hosting infrastructure. - -But whether you decide to use all or just some of these attributes, the Jamstack's key principle is that the assets are created in advance to vastly improve hosting and development workflows. It's a shift from the higher-risk, just-in-time request-servicing method to a simplified, more predictable, prepared-in-advance approach. - -As [Aaron Swartz][7] succinctly put it way back in 2002, "Bake, don't fry" your pages. - -### 4 benefits of using Jamstack - -Embracing this model of decoupling the generation (or rendering) of assets from the work of serving assets creates significant opportunities. - -#### Lowering the cost of scaling - -In a traditional stack, where views are generated for each incoming request, there is a correlation between the volume of traffic and the computation work done on the servers. This might reach all levels of the hosting stack, from load balancers and web servers to application servers and database servers. When these additional layers of infrastructure are provisioned to help manage the load, it adds cost and complexity to the environment and the work of operating the infrastructure and the site itself. - -Jamstack sites flatten that stack. The work of generating the views happens only when the code or content changes, rather than for every request. Therefore, the site can be prepared in advance and hosted directly from a CDN without needing to perform expensive computations on the fly. Large pieces of infrastructure (and the work associated with them) disappear. - -In short: Jamstack sites are optimized for scale by default. - -#### Improving speed - -Traditionally, to improve the hosting infrastructure's response time, those with the budget and the skills would add a CDN. Identifying assets that might be considered "static" and offloading serving those resources to a CDN could reduce the load on the web-serving infrastructure. Therefore, some requests could be served more rapidly from a CDN that is optimized for that task. - -With a Jamstack site, the site is served entirely from the CDN. This avoids the complex logic of determining what must be served dynamically and what can be served from a CDN. - -Every deployment becomes an operation to update the entire site on the CDN rather than across many pieces of infrastructure. This allows you to automate the process, which can increase your confidence in and decrease the cost and friction of deploying site updates. - -#### Reducing security risks - -Removing hosting infrastructure, especially servers that do computation based on the requests they receive, has a profound impact on a site's security profile. A Jamstack site has far fewer attack vectors than a traditional site since many servers are no longer needed. There is no server more secure than the one that does not exist. - -The CDN infrastructure remains but is optimized to serve pre-generated assets. Because these are read-only operations, they have fewer opportunities for attack. - -#### Supercharging the workflow - -By removing so many moving parts from site hosting, you can vastly improve the workflows involved in developing and deploying them. - -Jamstack sites support [version control from end to end][8] and commonly use Git and Git conventions to do everything from defining and provisioning new environments to executing a deployment. Deployments no longer need to change the state, resources, or configuration of multiple pieces of hosting infrastructure. And they can be tested locally, on staging environments, and in production environments with ease. - -The approach also allows more comprehensive project encapsulation. A site's code repository can include everything needed to bootstrap a project, including defining the dependencies and operations involved in building the site. This simplifies onboarding developers and walking the path to production. (Here's [an example][9].) - -### Jamstack for all - -Web developers familiar with a wide variety of tools and frameworks are embracing the Jamstack. They are achieving new levels of productivity, ignited by the recognition that they can use many tools and languages that put more power and ability in their hands. - -Open source libraries and frameworks with high levels of adoption and love from the development community are being used in combination and with third- and first-party APIs to produce incredibly capable solutions. And the low barriers of entry mean they are easier to explore, leading to higher levels of developer empowerment, effectiveness, and enthusiasm. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/9/jamstack - -作者:[Phil Hawksworth][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/phil-hawksworth -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/web-cms-build-howto-tutorial.png?itok=bRbCJt1U (spiderweb diagram) -[2]: https://www.netlify.com/jamstack?utm_source=opensource.com&utm_medium=jamstack-benefits-pnh&utm_campaign=devex -[3]: https://jamstack.org/?utm_source=opensource.com&utm_medium=jamstack-benefits-pnh&utm_campaign=devex -[4]: https://v8.dev/ -[5]: https://www.redhat.com/en/topics/api/what-are-application-programming-interfaces -[6]: https://en.wikipedia.org/wiki/LAMP_(software_bundle) -[7]: http://www.aaronsw.com/weblog/000404 -[8]: https://www.netlify.com/products/build/?utm_source=opensource.com&utm_medium=jamstack-benefits-pnh&utm_campaign=devex -[9]: https://github.com/philhawksworth/hello-trello diff --git a/sources/talk/20200902 My dramatic journey to becoming an open source engineer.md b/sources/talk/20200902 My dramatic journey to becoming an open source engineer.md deleted file mode 100644 index 34ab585578..0000000000 --- a/sources/talk/20200902 My dramatic journey to becoming an open source engineer.md +++ /dev/null @@ -1,137 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (My dramatic journey to becoming an open source engineer) -[#]: via: (https://opensource.com/article/20/9/open-source-story) -[#]: author: (Anisha Swain https://opensource.com/users/anishaswain) - -My dramatic journey to becoming an open source engineer -====== -This is the story of how I grew from hating to loving open source -technology. -![Love and hate][1] - -It's been five years and a heck of a journey from being a non-programmer to becoming an associate software engineer at Red Hat. It's a story worth telling—not because I have achieved a lot, but because of so much drama and so many pitfalls. So grab a cup of coffee, and I will share the unturned pages of my love story with technology. - -People say love is as powerful as hate. And love stories that start with hate are often the most passionate ones. My love story with technology was just like that. I got into the world of programming in my freshman year of college. It was my most painful subject. Even though I have always been passionate about futuristic technologies, I didn't know how to move forward towards my passion. - -Coming from an interest in instrumentation and electronics engineering, my distaste for programming increased even more with my first failed attempt at passing an interview for my college's technical society, as 80% of the questions were about programming. In my second attempt, I went in prepared, all set for my war with programming. And, luckily, I cleared it. - -### Getting started - -As the phrase goes, sometimes it takes a wrong turn to get you to the right place. At first, it did feel like a wrong turn. Then bit by bit, I learned something precious, not through learning, but by _listening_. I started my journey by Googling the technical terms I'd heard people utter, which is how I started growing. I came to learn about web design, and the first website I designed was the front page for my college hostel. I had never been so excited about a project before. That simple HTML/CSS website was nothing less than magic to me. - -Have you heard of love at first sight? It was like that. At that moment, I fell in love with the work I was doing. I continued learning different web design frameworks (like [Bootstrap][2] and [Material Design][3]), libraries like [jQuery][4], and web development techniques like [Ajax][5]. - -### Gaining experience - -In 2016, I received my first internship, working as a frontend developer. Even though it lasted only a short time, it made me realize that I can contribute code, and it filled me with even more confidence. - -![Anisha Swain sitting by water][6] - -(Anisha Swain, [CC BY-SA 4.0][7]) - -Gradually, I started learning server-side code, like [Node.js][8], the [Express][9] framework, [MongoDB][10], [MySQL][11], and more. My seniors helped make my road to understanding the client-server interaction fairly easy. - -We heard about a hackathon organized by Tata Consultancy Services. We applied for it with an idea to add [gamification to cleaning][12] public places. (This is probably still the most engrossing project I have worked on to date.) And we were selected! After about a month of preparation, I was going to Mumbai, which was my first trip outside my state, Odisha. Today, when people ask me about young girls being banned from such opportunities, I answer, "tell me about it." I was the only girl on this trip and, yes, it was a little scary. But when I look back, I realize if I hadn't taken that calculated risk at that time, I probably wouldn't have received opportunities to travel in the future. - -In time, I started learning Python, and the area that interested me the most was image processing. I started doing small projects on the [OpenCV][13] computer vision and machine learning library and later collaborated on making a prototype of a self-driving car—just a small one with basic features. - -### My open source debut - -Another turning point came when I learned about open source programs while participating in the Rails Girls Summer of Code (RGSoC) in 2017 with [Manaswini Das][14]. RGSoC is a global fellowship program for women and non-binary coders. Students receive three-month scholarships to work on existing open source projects and expand their skill sets. - -I participated in a project named [HospitalRun][15]. It was an exciting—and honestly scary—experience for me. It was exciting because, for the first time, it felt like I was part of something meaningful, broader, and significant. A simple change I made would be visible to people all over the world. My name would be on the contributor list for a large community. It might sound like nothing, but at that time, it was like a wave of motivation. It was scary because the application was in [Ember.js][16], and learning Ember.js so quickly is an experience that can't be described. I will be ever grateful to my mentors, [Joel Worrall][17] and [Joel Glovier][18], for all the support they provided our group. Even though we didn't get selected for the program, this experience will always be a shining part of my story. - -The best thing about working with technology is, it never felt like work. Neither then nor now. It was always like I was self-reflecting on a computer screen. - -### Disappointment, then winning - -The Summer Research Fellowships Program (SRFP), offered by the Indian Academy of Sciences (IAS), is a summer immersion experience that supplements research activities during the academic year. I wanted to work under this renowned research fellowship, and in 2017, I anxiously looked for my name among the awardees. Alas! My name wasn't there. And I was upset. Despite having the slimmest of chances to receive a fellowship, I had reviewed the profiles of all the professors who were working in the field of signal and image processing, shortlisted around 30 of them, and gone through their research papers. As I had some experience with OpenCV and image processing, I was somehow expecting to be selected. - -However, I moved on and applied for RGSoC. I devoted two months to the application, but, again, my team wasn't selected. The semester was edging to an end, and I had no internships in hand. I was disheartened and clueless about what would happen next. I started applying for local internships, and I was completely upset. - -But I was not aware that the IAS fellowship's second selection list had not yet been announced. On May 2, I got a message from one of my seniors with a link to the IAS second selection result list. And voila! I found my name. Anisha Swain. I couldn't believe my eyes. The credentials matched mine! I was selected to work on image processing. - -The confirmation email said I was going to work in Delhi. But there was a problem with where I could live. The accommodation list was only for the people who were selected for the fellowship on the first list. I had a dilemma. My parents strictly banned me from going without proper accommodation. But when there is a will, there is a way, and I found I could stay on the Delhi University campus. In two months at Delhi, while doing research, having fun, and traveling, I experienced everything I could. I traveled to all the metro cities, and Delhi is the most beautiful city I have ever been to. - -### When one door closes, another opens - -In 2018, Google Summer of Code (GSoC) was just around the corner. GSoC is an annual international program where students are awarded stipends for completing a free and open source software coding project during the summer. Nothing was more prestigious to me at the time than getting into this program. Now I wonder why. I still see students going crazy over it, as if nothing else is left in life if they don't crack it. I was also upset at not being selected. Not once but twice. But as they say, "The journey is as important as the destination." - -What matters more than getting selected is the learning you do during the process, as it will always stay with you. While applying to GSoC, I learned concept visualization with [D3.js][19] and [Three.js][20]. - -Even though I couldn't crack GSoC, my learning helped me land another internship, in 2019, at Mytrah Energy in Hyderabad. It was my first industrial experience, and I learned to do data visualization on a large scale. I dealt with data in JSON and CSV formats and created interactive charts with SVG and Canvas. The experience also helped me deal with my fear of getting into corporate life. It was a brief look into the life I was aspiring for. - -### Walking into open source - -Some of my friends selected for GSoC shared with me LinkedIn contact information for members of Red Hat's talent acquisition team. In 2018, I messaged them and sent my resume and personal description, but didn't receive a reply for more than a year. - -But then I met them at the 2019 Grace Hopper Celebration India (GHCI) conference, Asia's largest gathering of women technologists. During the career fair, they asked for my resume, and, to my utter surprise, they remembered me from my LinkedIn messages a year before. Soon, I got an interview call. During my first interview, I lost my connection and the interview couldn't be completed, but they were kind enough to understand the situation and reschedule it. The next interview round took around three hours, and just a few hours later, I got a job offer by email. It is the best thing that has ever happened to me! - -![An office desk][21] - -(Anisha Swain, [CC BY-SA 4.0][7]) - -Today, I am an associate software engineer for Red Hat's Performance and Scale Engineering team. I work with [React][22] and design frameworks with [Ant Design][23] and [PatternFly][24]. I also deal with web technologies like [Elasticsearch][25], [GraphQL][26], and [Postgres][27]. I try to share my knowledge with others through conferences, meetups, and articles. None of this could have been possible without my "second family" from the [Zairza Cetb][28] club. This makes me realize the power of a community and the important role our surroundings play in our development. - -### Rules for success - -![Anisha Swain in snow][29] - -(Anisha Swain, [CC BY-SA 4.0][7]) - -Through my journey, I have learned many things about getting where you want to be in life, including: - - 1. Hard work is as important as smart work. - 2. Things will eventually be connected and fall into place if you have the desire to grow. - 3. Work for 100% if you want to achieve 80%. - 4. Stay hungry, stay foolish, and stay humble. - 5. Always give back knowledge to the community. - - - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/9/open-source-story - -作者:[Anisha Swain][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/anishaswain -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/business_lovehate_0310.png?itok=2IBhQqIn (Love and hate) -[2]: https://getbootstrap.com/ -[3]: https://material.io/design -[4]: https://jquery.com/ -[5]: https://en.wikipedia.org/wiki/Ajax_%28programming%29 -[6]: https://opensource.com/sites/default/files/uploads/anishaswain_seaside.jpg (Anisha Swain sitting by water) -[7]: https://creativecommons.org/licenses/by-sa/4.0/ -[8]: https://nodejs.org -[9]: https://expressjs.com/ -[10]: https://www.mongodb.com/ -[11]: https://www.mysql.com/ -[12]: https://github.com/Anisha1234/Clean_Clan -[13]: https://opencv.org/ -[14]: https://www.linkedin.com/in/manaswini-das/ -[15]: https://hospitalrun.io/ -[16]: https://emberjs.com/ -[17]: https://www.linkedin.com/in/jworrall/ -[18]: https://www.linkedin.com/in/jglovier/ -[19]: https://d3js.org/ -[20]: https://threejs.org/ -[21]: https://opensource.com/sites/default/files/uploads/anishaswain_desk.jpg (An office desk) -[22]: https://reactjs.org/ -[23]: https://ant.design/ -[24]: https://www.patternfly.org/ -[25]: https://www.elastic.co/elasticsearch/ -[26]: https://graphql.org/ -[27]: https://www.postgresql.org/ -[28]: https://medium.com/u/a9c306e657d0?source=post_page-----aa2c4cb5d924---------------------- -[29]: https://opensource.com/sites/default/files/uploads/anishaswain_snow.jpg (Anisha Swain in snow) diff --git a/sources/talk/20200903 Why your open source project needs more than just coders.md b/sources/talk/20200903 Why your open source project needs more than just coders.md deleted file mode 100644 index 7ca53d1f63..0000000000 --- a/sources/talk/20200903 Why your open source project needs more than just coders.md +++ /dev/null @@ -1,68 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Why your open source project needs more than just coders) -[#]: via: (https://opensource.com/article/20/9/open-source-role-diversity) -[#]: author: (Silona https://opensource.com/users/silona) - -Why your open source project needs more than just coders -====== -Developers alone don't create open source projects that meet a variety -of needs for a long shelf life; it's time to welcome more roles and -talent. -![Teamwork starts with communication across silos][1] - -Why do open source projects fail? - -Lack of funding is a major factor, of course, but it's far from the only reason that open source projects fail to achieve sustainability. Sometimes there's a lack of understanding of how to create a product for a broad market, or some fundamental misstep with intellectual property rights (IPR)—such as failing to properly license your code. - -It's hard for any open source project to sustain if it doesn't get these types of basics right. Collaboration across boundaries and the ability to iterate and expand are hindered, and innovation is stifled. I see these fatal flaws especially in a lot of humanitarian projects—_passion projects_—and it is heartbreaking. - -### Building role diversity - -Open source has tended to thrive in instances where it has been developers writing code for developers. That’s why so many underlying technologies developed via open source (Apache and Linux, for example) have succeeded. - -However, when it comes to creating quality user experiences and products for people other than developers, open source's record is spottier. Why is that? - -One of the big reasons is because the majority of open source communities don’t encourage or even welcome people of diverse expertise. Sometimes, there’s no acknowledgement of them. The coders get all of the love, and roles and contributions beyond coding are not even thought of. - -Sustainable open source demands that communities embrace and reward a lot of different talents. There are the developers, most definitely, and they must be core for any open source project to be successful. But without contributions from marketing expertise, for example, you might not thoroughly understand what the users want. Without the input of product management, you run the risk of failing to develop a product for users other than other developers. Businesses normally invest in these and other roles because their varied contributions are critical to delivering successful results and creating products that are production ready with community support for long term sustainability. - -One of the conflicts that I often find amongst open source development communities is an animosity towards product or project management. It’s true that product management especially in corporate places has control issues—they may try to do things like dominate a market, or come in from a perspective of scarcity rather than abundance. It shows in behavior, and it’s antithetical to the spirit of open source. - -But, to be fair, I think it is also true that we developers have never been taught how to work well with product management. We are told, "More people would use your product if you just did X," and we respond, "No, you can't tell me anything about my baby." We don't want to hear, "Yeah, but if you change the diaper, more people would like your baby," even if it's true. - -Open source hasn't always embraced talent other than developers, and this is what must change in order to foster long term stability. - -### Birthing IEEE SA Open - -Putting in place the tools and processes needed to encourage project sustainability is our current focus in architecting and designing [IEEE SA Open][2]. To that end, bringing in role diversity and building a platform and a tool that invites and rewards those diverse contributions is crucial in creating IEEE SA Open. - -We are creating our community, marketing, and technology onboarding guides to ensure that incoming projects automatically get a level of support that they wouldn't normally get from a technology platform. We're looking at raising the maturity model into advanced processes and practices. For example, progressing to levels 4 (quantitatively managed) and 5 (optimizing) of [Capability Maturity Model Integration][3] (CMMI) requires measurement. Getting our processes right from the outset and assigning the right metrics to inform better, more consistent evaluations will support our sustainability. - -This is one of the places where our linkage with IEEE is so important. One of the things that the standards world does especially well is process, and IEEE in particular has a history of making sure that its processes are fair and predicated on advancing technology for the benefit of humanity. With more than 419,000 members in over 160 countries, IEEE is the world’s largest technical professional organization dedicated to advancing technology for humanity. Its roots go back to 1884 when electricity and telecommunications began to become a major influence in society, and today IEEE has over 1,200 active standards and more than 650 standards under development. - -IEEE SA Open can borrow on those best practices and lessons learned in sustainability that IEEE has acquired by experience. We aim to bridge the gap between global standards development and open source developer communities. It is definitely a balancing act, and we respect that! - -We’re reaching out to people all over the global open source and standards communities in a diverse set of roles to be engaged in creating IEEE SA Open. You can participate in that birthing project, and now is the time. If there are things that are super important to you and that you’ve seen neglected in open source, this is the time to engage, share your experiences and influence the creation of IEEE SA Open. You can help make sure we don’t make those mistakes. [We need your unique insights and input.][2] - -You don't need to be a master coder to contribute to open source. Jade Wang shares 8 ways you can... - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/9/open-source-role-diversity - -作者:[Silona][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/silona -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/happy-team-sticker-laptop.png?itok=91K77IgE (Teamwork starts with communication across silos) -[2]: https://standards.ieee.org/initiatives/opensource?utm_source=External&utm_medium=PR&utm_campaign=IEEE-SA-Open -[3]: https://en.wikipedia.org/wiki/Capability_Maturity_Model_Integration diff --git a/sources/talk/20200911 Ankur Sinha- How do you Fedora.md b/sources/talk/20200911 Ankur Sinha- How do you Fedora.md deleted file mode 100644 index 9d965e9840..0000000000 --- a/sources/talk/20200911 Ankur Sinha- How do you Fedora.md +++ /dev/null @@ -1,151 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Ankur Sinha: How do you Fedora?) -[#]: via: (https://fedoramagazine.org/ankur-sinha-how-do-you-fedora/) -[#]: author: (climoiselle https://fedoramagazine.org/author/climoiselle/) - -Ankur Sinha: How do you Fedora? -====== - -![][1] - -We recently interviewed Ankur Sinha on how he uses Fedora. This is part of a [series][2] on the Fedora Magazine. The series profiles Fedora users and how they use Fedora to get things done. Contact us on the [feedback form][3] to express your interest in becoming an interviewee. - -### Who is Ankur Sinha? - -Ankur is a Computational Neuroscientist and has just started his first post-doctoral fellowship at University College London and a FLOSS enthusiast trying to spread the message of FOSS and evidence based science. Ankur started using Linux a decade ago, when he was introduced to Linux in a [LUG][4] doing an install fest during his undergraduate degree. - -Ankur loves reading: - -_“I read a lot and tend to get attached to characters from books quite easily. Holmes, Poirot (I’m a detective fiction fan), Francisco D’Anconia (fan of the book Atlas Shrugged, but not so much Ayn Rand’s philosophy), lots of random characters from books I’d read. I also read lots of Hindi comics as a child—Doga, Super commando Dhruv, Naagraj, and Chacha Chaudhary—loved them all!”._ - -As far as all time favorite movies go, [Swades][5] comes to his mind. His favorite genre is science fiction thrillers (think “The Prestige” and ” Predestination”). When not busy working or engaging people on IRC channels, he enjoys listening to podcasts and classic rock. - -Ankur’s favorite food is his mother’s Chhole Bhature. Otherwise, if he’s away from home, his go-tos are Butter chicken, Butter Naan, and Chilli Chicken from North Indian restaurants. - -### The Fedora Community - -Ankur found about Fedora after a distro hopping phase in 2008, and since then he has been a fedora user. His first memory of the Fedora community is an IRC workshop on packaging fonts that the Fedora India community had organised back in 2008. Talking to and meeting other community members has been one of the most exciting parts of the Fedora community for him. _“I found this great bunch of people to hang out and geek out with! It was so much fun, and extremely educational both in terms of technical knowledge and the social/philosophical side of FOSS and life in general.”_ - -When asked what he would change in the Fedora Project if he could change one thing, he said that he prefers “Smaller tweaks” since _“Smaller tweaks also allow work to be spread out, and that really helps”_. Specifically, he would like to see more discussion on the philosophy and nuances of FOSS in the community. - -_"Perhaps we all know it so well that we take it for granted and focus on the work that needs to be done. It’s so easy to get bogged down in the work, though, that I worry that we forget the bigger picture sometimes. The end for us is to promote FOSS, and everything we do is the means to this end. So, I worry that the means sometimes becomes the end for us — that we focus so much on producing deliverables that we forget why we produce them."_ - -Since he works in academia and science, Ankur would like the Fedora community (and FOSS in general) to get more involved with academic/scientific communities. _“I think we have an excellent platform to enable education and research. NeuroFedora is a start in this direction.”_ - -He wishes that other people knew that the Fedora community are not just OS developers, but a global community, and he’d like folks to just hang out and communicate even if they’re not contributing in the traditional sense of the word. - -Ankur tries to help wherever he can, especially if newbies are involved. Nowadays, he tries to focus more on [NeuroFedora][6] as it fits well for his day-job and there’s so much to do in this Field + Open Science. - -Ankur learnt most of the things from his >10 years of experience in Fedora and FOSS. He had learned theories of software development at undergrad but got to experience practical implementations from his colleagues in the community. He is a firm believer of _“No question is a stupid question”_. He adds that Fedora is perfect because it gets better as you start working with it. - -His piece of advice for anyone thinking of getting involved in Fedora is to just go ahead and start. One doesn’t need to know anything at all. All of it can be learned over time. Secondly, don’t focus on tasks. Yes, that’s a good way of learning, but it is far more important to get to know the people of Fedora! As one meets more people, one learns more about how Fedora works and one has way more fun working and learning!! - -Just like a lot of our community members, Ankur struggles from time constraints. His new challenge is to find more time to work on FOSS and Fedora. During his college years, it was to learn more and more. - -One of the challenges Ankur faces about promoting open source is to explain to non-FOSS people that Windows/Mac aren’t the only OSes present. He thinks that having Fedora shipped with Lenovo systems will give a start for the community. It makes Fedora and FOSS more "official". - -### What Hardware? - -Ankur has three machines and runs Fedora 32 on each of them: - -![Ankur’s Desk][7] - - * Thinkpad E490 laptop - * a custom workstation that university IT set up for research work - * a headless MacPro5,1 - * 2x Microsoft Sculpt Ergonomic keyboard/mouse/numpad - * Netgear wifi extender - * TP-Link TL-PA8033PKIT AV1300 3-Port Gigabit Passthrough Powerline Adapters - * Moto g7 phone with Android 10 - - - -### What Software? - -Fedora 32 workstation, and server on the MacPro. - -– [Workstation][8]/Gnome3 with a few extensions: [caffeine][9], [pomodoro][10], - -  [syncthing][11]. - -– [byobu][12] with [tmux][13]: multiple sessions: default, work, fedora - -– [taskwarrior][14], [vit][15], [timewarrior][16], [gnome-pomodoro][10], [gnome-calendar][17]/[evolution][18] for calendars - -– [neomutt][19] with [msmtp][20] \+ [offlineimap][21] \+ [notmuch][22] for e-mail - -– [vim][23] for *everything* possible – [vimrc link][24] - -– [qutebrowser][25], [weechat][26], [zathura][27], [vimiv][28] - -– syncthing + dropbox + git for syncing/version control - -For research work: - -– [NEST][29] \+ lots of python and [Gnuplot][30] for analysis, LaTeX for writing - -  (stuff from NeuroFedora!) - -– [inkscape][31] \+ [gimp][32] \+ [dia][33] \+ [freemind][34] for figures/mind mapping - -– [jabref][35] for bibliography management - -Other bits: – occasional gamer? - -– [Oad][36] \+ [endless sky][37] \+ [openttd][38]! - --------------------------------------------------------------------------------- - -via: https://fedoramagazine.org/ankur-sinha-how-do-you-fedora/ - -作者:[climoiselle][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://fedoramagazine.org/author/climoiselle/ -[b]: https://github.com/lujun9972 -[1]: https://fedoramagazine.org/wp-content/uploads/2020/09/hdyf-asinha-816x346.png -[2]: https://fedoramagazine.org/tag/how-do-you-fedora/ -[3]: https://fedoramagazine.org/submit-an-idea-or-tip/ -[4]: https://en.wikipedia.org/wiki/Linux_user_group -[5]: https://www.imdb.com/title/tt0367110/ -[6]: https://docs.fedoraproject.org/en-US/neurofedora/overview/ -[7]: https://fedoramagazine.org/wp-content/uploads/2020/08/WhatsApp-Image-2020-08-28-at-3.27.16-PM-768x1024.jpeg -[8]: https://getfedora.org/en/workstation/ -[9]: https://extensions.gnome.org/extension/517/caffeine/ -[10]: https://github.com/codito/gnome-pomodoro/ -[11]: https://docs.syncthing.net/ -[12]: https://www.byobu.org/ -[13]: https://github.com/tmux/tmux -[14]: https://taskwarrior.org/ -[15]: https://github.com/scottkosty/vit -[16]: https://timewarrior.net/ -[17]: https://wiki.gnome.org/Apps/Calendar -[18]: https://wiki.gnome.org/Apps/Evolution -[19]: https://neomutt.org/ -[20]: https://marlam.de/msmtp/ -[21]: http://www.offlineimap.org/ -[22]: https://notmuchmail.org/ -[23]: https://www.vim.org/ -[24]: https://github.com/sanjayankur31/vimfiles -[25]: https://www.qutebrowser.org/ -[26]: https://weechat.org/ -[27]: https://pwmt.org/projects/zathura/ -[28]: https://karlch.github.io/vimiv-qt/index.html -[29]: https://www.nest-simulator.org/ -[30]: http://gnuplot.info/ -[31]: https://inkscape.org/ -[32]: https://www.gimp.org/ -[33]: http://dia-installer.de/ -[34]: http://freemind.sourceforge.net/wiki/index.php/Main_Page -[35]: http://www.jabref.org/ -[36]: https://play0ad.com/ -[37]: http://endless-sky.github.io/ -[38]: https://www.openttd.org/ diff --git a/sources/talk/20200911 How open source legal teams can get to yes.md b/sources/talk/20200911 How open source legal teams can get to yes.md deleted file mode 100644 index 3470ea0806..0000000000 --- a/sources/talk/20200911 How open source legal teams can get to yes.md +++ /dev/null @@ -1,77 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (How open source legal teams can get to yes) -[#]: via: (https://opensource.com/article/20/9/advice-open-source-lawyer) -[#]: author: (Jeffrey Robert Kaufman https://opensource.com/users/jkaufman) - -How open source legal teams can get to yes -====== -Open source law has unusual requirements for success. Learn ways lawyers -can help their organizations find a path to open. -![whiteboard collaboration with the team][1] - -As I shared in the [first part][2] of this two-part series, I am an open source lawyer for Red Hat. One important part of my job is to provide information to other companies, including their in-house counsel, about how Red Hat builds enterprise-class products with a completely open source development model and to answer their questions about open source licensing in general. After hearing about Red Hat's success, these conversations often turn to discussions about how their organization can evolve to be more open source-aware and capable, and lawyers at these meetings regularly ask how they can modify their practices to be more skilled in providing open source counsel to their employees. In these two articles, I'll share what I normally tell in-house counsel on these topics. - -### Always find a path to open - -My employer, Red Hat, is unique in its use of open source software in that our development model begins in the open source community with thousands of contributors and results in finished products that are tried, tested, and trusted. More specifically, through our unique development model, we start with community-created open source software and build upon each project to harden security, fix bugs, patch vulnerabilities, and add new features. We then contribute these improvements back to each project, so the entire open source community can benefit. The utilities to this approach are significant, including: - - 1. Leveraging innovation from others outside your organization by collaborating outside your internal teams - 2. Avoiding the cost and inefficiency of developing and maintaining an open source solution by yourself when there are existing or potential communities working on the same problem with which you could collaborate - 3. Through productive collaboration with partners and upstream project communities, avoiding the costly consequences of maintaining a downstream fork of the main project - 1. Some companies find it tempting to create non-public forks of upstream code as a quick way to address a specific use case or because they are not inclined to collaborate in a community. However, the long-term maintenance burdens of such forks can be prohibitive because of increased development costs, loss of interoperability, and other reasons. By contrast, concentrating development in the original upstream community enables sharing development costs among all participants. - - - -With few exceptions (such as Red Hat), most organizations that may use open source software have a proprietary licensing model (or the equivalent concept for software-as-a-service companies) and license proprietary software as part of their business. Such organizations feel that they have software components that provide some competitive advantage and do not wish to see those become available to others under open source terms. That is understandable. I would, however, encourage any open source lawyers counseling such companies to urge their clients towards an open source development model, especially for any software bits that are non-differentiating and common. - -For example, if your company develops applications for mobile phones and you need a software module to read and write PNG image files, it would be much less expensive to use one of the popular open source PNG software modules available on GitHub. Encoding and decoding PNG images is likely a non-differentiating element to your business, so why spend precious engineering time to write your own version? Furthermore, writing your own module for this function may also lead to compatibility issues with other software that uses a commonly used open source module. Why? Although your module and the open source module may have been written to encode and decode to the published PNG specifications, oftentimes, there may be different interpretations of the specifications or errors in implementation. Everyone using the same module for this function ensures compatibility for most users and lowers the cost of development and maintenance. - -It must also be appreciated that certain software may be required to remain proprietary and not subject to open source terms. Depending on the software architecture of your system and the open source software licenses in use, software bits that are intended to remain proprietary may become subject to open source license terms unless certain actions are taken (beyond the scope of this article). This is where some counseling to clients about license choice and architecture will become useful. - -### Develop scalable solutions - -For organizations that primarily license proprietary software grow and increase their use of open source software, review and approval requirements may grow (even exponentially in my experience). As such, such an organization may find itself in a difficult situation due to resource constraints. Scalable solutions that must be put into place are described below. - -#### Empower and delegate to others - -Lawyers cannot and should not be gatekeepers. It is inefficient and will most certainly cause bottlenecks in development and release times, producing frustration and lost revenue. Instead, explore delegating authority to capable individuals in product or project management and engineering. This allows an organization to scale efficiently and effectively. Educating your clients (see the next section) is vitally important for this to succeed. - -One approach I have taken is to provide open source training to entire engineering organizations so that they can make basic licensing and architecture choices, while providing more specialized training to software leads to enable them to provide more complex guidance and decisions. Consider providing clear limits on authority at each level, including what types of issues and decisions must be escalated to you as their open source legal attorney. The specific levels of delegation for your organization will be a function of your team's experience with open source and sensitivities to certain open source concerns. - -#### Educate clients - -I have found that training is one of the most effective tools to migrate your organization to be more open source-aware. Training your software engineers and product managers is crucially important. Let me elaborate. - -Although your software engineers are on the frontlines and may be quite knowledgeable about open source issues and licensing in general, it is still important to train them on your organization's particular requirements. For example, your company may permit only permissive open source licenses to be used and may have certain requirements for its copyright notices and source availability. To avoid problems in development that must be corrected later (a costly and time-consuming exercise), it is best to train engineers to minimize the likelihood of improper behavior, especially at the beginning of any development process (see the next section). - -Product managers must also be trained. In many companies, a product manager is responsible for the classic four P's of marketing—Product, Price, Position, and Promotion—and is accountable for the full lifecycle of a product from cradle to death. All these aspects of a product manager's job may be impacted by the use of open source software. Understanding the requirements when using open source software is useful to them for the same reasons mentioned above. In addition and more importantly, product managers' significant influence in an organization means they are often able to effectuate any required change to process and policy. Product managers may become one of your strongest advocates for instituting process changes towards "open". - -#### Early detection - -It is very difficult and costly to resolve open source licensing issues near the end of the development process. As software approaches its release date, the architecture and the open source software modules have already been chosen. If an issue is detected, such as a copyleft software embedded in a proprietary software module (when that proprietary module is intended to not be subject to open source terms), modifying the architecture or modules at that development phase could be very difficult and expensive. Instead, work on developing processes that analyze architecture and choice of open source modules early in the process so that less costly and more effective course corrections may be made. - -### Open source law's rewards - -Practicing open source law is a rewarding profession due to the ability to influence an organization towards "open," which has significant benefits. Success depends on your ability to develop solutions for your organization that are workable and scalable as your organization grows and matures. - -Find out what it takes to become an open source lawyer. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/9/advice-open-source-lawyer - -作者:[Jeffrey Robert Kaufman][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/jkaufman -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/whiteboard-collaboration-team.png?itok=0A3WcgxZ (whiteboard collaboration with the team) -[2]: https://opensource.com/article/20/7/transitioning-open-source-part-1 diff --git a/sources/talk/20200911 Lenovo introduces four new HCI solutions.md b/sources/talk/20200911 Lenovo introduces four new HCI solutions.md deleted file mode 100644 index 1fb45cd7ae..0000000000 --- a/sources/talk/20200911 Lenovo introduces four new HCI solutions.md +++ /dev/null @@ -1,78 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Lenovo introduces four new HCI solutions) -[#]: via: (https://www.networkworld.com/article/3573787/lenovo-introduces-four-new-hci-solutions.html) -[#]: author: (Andy Patrizio https://www.networkworld.com/author/Andy-Patrizio/) - -Lenovo introduces four new HCI solutions -====== -Hyperconverged infrastructure from Lenovo targets workloads including VDI, SAP HANA, Microsoft Azure, and Kubernetes. -Martyn Williams - -Lenovo Data Center Group on Thursday introduced four new [hyperconverged infrastructure][1] (HCI) products aimed at a variety of workloads, including virtual desktop infrastructure (VDI), SAP HANA, Microsoft Azure, and Kubernetes. - -HCI products have grown in popularity because they are easily deployed and can get a variety of workloads up and running quickly. HCI is available either in hardware/appliance form or as software. HCI hardware vendors are the usual suspects – HP Enterprise, Dell, Lenovo – while the software vendors include Nutanix and VMware. - -Lenovo is focused on ready-to-deploy HCI solutions from both software firms. It boasts that its hardware is easy to deploy and manage with simple updates, automatic scalability and a consumption-based use model. - -**READ MORE:** [Making the right hyperconvergence choice: HCI hardware or software?][2] - -"This new normal is forcing many companies of different sizes and scale to think different. They are looking to figure out, 'how do I drive more resiliency to be able to be more efficient? How do I drive more agility to pivot based on my end customer needs and the way they are going to consume my services or my resources?'" said Kamran Amini, vice president and general manager of server, storage and software defined infrastructure, Lenovo Data Center Group, on a conference call briefing with reporters. - -Here are the four products Lenovo announced. - -### ThinkAgile HX - -ThinkAgile HX is a new device powered by AMD EPYC processors and Nutanix software targeted at VDI and virtualization consolidation. With two CPUs and two GPUs in a 1U chassis, Lenovo customers can run their virtual desktop workloads with consistent performance with up to 50% fewer servers. - -ThinkAgile HX is preloaded, factory-integrated and configured with Nutanix Enterprise Cloud software. Lenovo's ThinkAgile Network Orchestrator software is integrated with Nutanix Prism to reduce human error and downtime by automating virtualization configuration changes. - -Availability is planned in late November as an appliance or a certified node. - -### ThinkAgile MX And Microsoft Azure Stack - -Lenovo and Microsoft have partnered to create the Lenovo ThinkAgile MX Azure Stack HCI Edge and Data Center line. [Azure Stack][3] is Microsoft's on-premises cloud software that allows an enterprise to replicate an Azure environment in their own data center and move workloads back and forth between on-prem and Azure. - -The new ThinkAgile MX series of appliances provides a one-stop-shop for the Azure Stack HCI to give businesses an easy way to deploy, manage and scale Azure services from edge to core to cloud. The ThinkAgile MX is designed to enable customers to rapidly deploy a hybrid cloud infrastructure. - -ThinkAgile MX will offer consumption-based, pay-as-you-go pricing of Azue Stack HCI and Azure Stack Hub. Lenovo did not say when it would be available. - -### ThinkAgile VX and VMware - -VMware and Lenovo have partnered to create a new series, the ThinkAgile VX HCI, which runs VMware's vSAN and ESXi and is designed specifically for SAP HANA databases. Lenovo said its new ThinkAgile VX 4S solution offers double the SAP HANA database memory and has direct connect NVMe to accelerate response times, speed business insights and improve total cost of ownership. - -Lenovo ThinkAgile VX HCI are S/4HANA certified nodes that enable customers to modernize their infrastructure and improve performance of vSAN environments via the integration of Lenovo XClarity Management software and the new vSphere Lifecycle Manager (vLCM) tools. - -The ThinkAgile VX will be generally available later in September. - -### Diamanti SR360 - -Lenovo has also partnered with Diamanti, maker of Kubernetes management software, to create the Diamanti SR630 solution based on a ThinkSystem server. Diamanti specializes in enabling fast Kubernetes deployments and allowing organizations to run containerized applications across hybrid cloud environments. - -The SR630 is a purpose-built application platform that combines Diamanti's Spektra Kubernetes platform with acceleration cards and Lenovo servers. The Diamanti SR630 enables customers to rapidly deploy a complete container and Kubernetes solution through plug-and-play networking and persistent storage. - -The Diamanti SR630 is available now. - -Join the Network World communities on [Facebook][4] and [LinkedIn][5] to comment on topics that are top of mind. - --------------------------------------------------------------------------------- - -via: https://www.networkworld.com/article/3573787/lenovo-introduces-four-new-hci-solutions.html - -作者:[Andy Patrizio][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://www.networkworld.com/author/Andy-Patrizio/ -[b]: https://github.com/lujun9972 -[1]: https://www.networkworld.com/article/3207567/what-is-hyperconvergence.html -[2]: https://www.networkworld.com/article/3318683/making-the-right-hyperconvergence-choice-hci-hardware-or-software.html -[3]: https://www.networkworld.com/article/3385078/microsoft-introduces-azure-stack-for-hci.html -[4]: https://www.facebook.com/NetworkWorld/ -[5]: https://www.linkedin.com/company/network-world diff --git a/sources/talk/20200911 Why the future of IoT depends on open source.md b/sources/talk/20200911 Why the future of IoT depends on open source.md deleted file mode 100644 index 4bac5d8013..0000000000 --- a/sources/talk/20200911 Why the future of IoT depends on open source.md +++ /dev/null @@ -1,80 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Why the future of IoT depends on open source) -[#]: via: (https://opensource.com/article/20/9/open-source-ai-iot) -[#]: author: (Pin Xue https://opensource.com/users/pinxue) - -Why the future of IoT depends on open source -====== -We're quickly moving from the Internet of Things (IoT) to the Artificial -Intelligence of Things (AIoT). -![Brain on a computer screen][1] - -Most people are familiar with the [Internet of Things (IoT)][2], which refers to smart objects in a connected network, as this diagram shows. - -![IoT diagram][3] - -(PinXue, [CC BY-SA 4.0][4]) - -A "smart" object has a sense of its environment, and it makes decisions (locally or together with peers and a cloud server), then puts those decisions into action. - -To be smart, the object must have a brain to carry intelligence. So far, the way to do this is to embed a computer in the object. For example, you can put a Cortex-M CPU with Bluetooth 5.1 in a chip smaller than 2x2mm and embed it into almost anything. This tiny device is more powerful than my first desktop PC. - -A developer can write software for this tiny computer that uses the device's ability to gather input from all kinds of sensors (e.g., heat, light, moisture, and so on) and share and act on it using the device's screen, speaker, actuators (step motors, servos, and so on), and network. - -### AI + IoT = AIoT - -We often associate IoT with small programmable objects, like a smart lightbulb or door lock. While those are good uses of IoT, IoT is bigger than this. IoT is driving the next stage of our information-centric society. - -Information systems have become a natural part of our everyday lives. You no longer have to sit in front of a computer to surf the internet because a smartphone can bring the whole world into the palm of your hand. Soon, you won't even need a phone—the popularization of smartwatches and other wearables is proving that. The convenience of these information systems encourages us to collect and use more data from everything. For instance, why couldn't a red light tell your car it will turn -green in 5 seconds, so it is not a smart move to release the brake -just yet. - -![Relationships between computers, people, and things][5] - -(PinXue, [CC BY-SA 4.0][4]) - -In a few years, humans won't be the major data producers and consumers. "Things" will be. - -The abundance of data these things will create means we can no longer expect people to be able to analyze all the patterns and contents or even to write parsers to process the data. Based on the sheer amount of data, we need artificial intelligence (AI) to deal with it. AI will be applied to the entire data-processing process, and AI can transmit results instead of raw data. This will also reduce network traffic. Ideally, an AI will be able to drive smart objects to make decisions based on analyzed data on the spot. - -Eventually, the goal is for smart objects to be able to live on their own, as you can see in _[This one owns itself][6]_, a story about a drone earning money to pay its recharging bill by making deliveries for a coffee company. The focus of this story is about the smart contract powered by blockchain, but in my opinion, it's achievable with the artificial intelligence of things (AIoT), the most fundamental element in smart devices. - -### Open source AIoT operating systems - -In the past, smart objects were programmed on bare metal. Now the scenario is a lot more complex. When creating a real-life AIoT system, there are too many details to account for on your own—all of the types of Systems on a Chip (SoC), sensors, actuators, network protocols, AI modeling, performance optimization, reliability, power management, firmware over the air (FOTA), security, and more. However, using an AIoT operating system enables all of this hard work to be accumulated and reused instead of starting over for each hardware or project. - -AIoT is an open world, by its nature. The diversity of smart objects means no one can dominate the entire market, and we must work together to make things talk to each other. There are many levels of openness, such as file formats, protocol stacks, and APIs. These are all dependent upon the openness of the interface and the implementation of the source code. - -Open source makes it possible to customize, reuse, and improve our code. This flexibility is important. The original author of an AIoT operating system cannot be an expert on everything. Other developers have different types of expertise they can use to build upon an open foundation. - -If an operating system is well-designed and has an active community, it can provide reusable drivers, protocols, libraries, frameworks, middleware, and all manner of tools. All these components can speed product development dramatically. Without an open source platform, people have to build those parts again and again. - -The [RT-Thread project][7] has been working toward this goal. RT-Thread is an open source IoT OS that started in 2006 and currently powers 600 million devices. Its IoTOS project is part of the general AIoT blueprint. It also comes with more than 200 open source packages and some commercial packages—and the number of each keeps increasing—that make it easier to develop for the AIoT. - -If you're interested in building the IoT and working toward a better, smarter, and open future of AIoT, visit the [RT-Thread website][8] and see how you can lend a hand. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/9/open-source-ai-iot - -作者:[Pin Xue][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/pinxue -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/brain_computer_solve_fix_tool.png?itok=okq8joti (Brain on a computer screen) -[2]: https://opensource.com/resources/internet-of-things -[3]: https://opensource.com/sites/default/files/uploads/iot-diagram.png (IoT diagram) -[4]: https://creativecommons.org/licenses/by-sa/4.0/ -[5]: https://opensource.com/sites/default/files/uploads/computer-people-things.png (Relationships between computers, people, and things) -[6]: https://medium.com/@creole/6-this-one-owns-itself-9f6a3aa4382d -[7]: https://github.com/RT-Thread/rt-thread -[8]: https://www.rt-thread.io/ diff --git a/sources/talk/20200912 How breaking my back led me to open source.md b/sources/talk/20200912 How breaking my back led me to open source.md deleted file mode 100644 index b3f8666895..0000000000 --- a/sources/talk/20200912 How breaking my back led me to open source.md +++ /dev/null @@ -1,97 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (How breaking my back led me to open source) -[#]: via: (https://opensource.com/article/20/9/breaking-back-open-source) -[#]: author: (Sara Kelly https://opensource.com/users/sarapk) - -How breaking my back led me to open source -====== -Open source gave a voice and a community to someone coping with the -aftermath of a major injury, and eventually led to a new career. -![Open source doctor.][1] - -Recently, I noticed some unusual activity on my blog. A very old post about [how I broke my back][2] while living in London had a lot of hits. Was it yet another case of Internet spammers finding a new target for their lewd advertisements? I finally put two and two together when I read [the headlines][3] that British personality Simon Cowell had broken his back in a freak motorcycle accident. Aha. So, a little celebrity mishap had led to a renewed interest in my story. Not to worry, if my recovery is anything to go by, then Simon should be just fine, folks. - -Breaking my back was a pivotal experience on many fronts. It scared the hell out of me. But the road to recovery helped me become a more resilient, courageous, and patient human being. Interestingly, it was this incident that also led me to the world of open source. Living with chronic pain is lonely, but I found my voice and a community via WordPress. Now, nearly eight years later, I'm working for the number one open source company in the world. - -### Wiggle your toes - -When I woke up in the trauma ward of Whitechapel Hospital back in 2011, I was tightly swaddled in white cotton, like an infant. Pitiful moans echoed around me, and I saw nurses scurrying to-and-fro. There was barely time to balk at my surroundings before a stern-looking doctor with a clipboard approached my cot. He skipped the niceties, and gravely informed me that I had broken my back. - -My first reaction was to wiggle my toes as a cold sweat hit my face. Would I ever walk again? - -"But doctor, I can feel my toes!" I cried, desperately hoping that would be the end of the nightmare. - -I was curtly informed that breaking your back is not the same as a spinal injury. One is a case of broken bones, which can heal over time. The other means permanent disability. In my case, the L1 bone had shattered into small pieces which were resting scarily close to the spinal cord. The doctor recommended complex spinal surgery to collect the bone fragments and piece them back together with metal rods. However, until surgery occurred, I should not make any sudden movements in case the bones slipped and damaged the spinal cord. - -It was five days before I underwent surgery, during which I was in a constant state of terror. I was afraid to move an inch lest I become wheelchair-bound. Lying in the same position for hours on end is painful. Even worse were the well-meaning nurses who needed to carefully maneuver me to change the bed sheets each morning. Those five days seemed like an eternity, but eventually, I had my surgery, and a few days later, I was discharged from the hospital. - -### Learning to walk - -Muscles waste away at an alarming rate. Broken back patients are encouraged to start moving as soon after surgery as possible for the best chance of recovery. During spinal surgery, most of the muscles in your back are spliced through so that the surgeons have room to focus on inserting titanium metal rods around the broken bones. So, when you wake up, you are starting from a position of zero muscle strength. - -The day after my surgery, my first goal was to take two steps. The next day, it was ten steps. Then it was walking to the bathroom and back. By the time I left the hospital, I still couldn't walk more than 15 feet without assistance, but I continued to set myself small goals and started hydrotherapy to regain my mobility. - -Funny enough, my pain only increased as I learned to walk again. Up until that point, I had avoided any serious reliance on drugs. But by the time I could take a shower independently, walk upstairs, or catch public transport with confidence, I was in utter agony. - -### Chronic pain is a lonely place - -It felt like thick, iron poles were constantly stabbing my right hip and knee. At first, the pain would creep on in the early afternoon, but eventually, it became constant chronic pain. The most difficult part was not knowing why it was happening. I was supposed to be getting better, so why was I hurting so badly? - -Nobody explained to me what nerve pain is. Now I know it is a common side effect of any surgery and can be temporary or permanent. Back then, various disinterested doctors and physiotherapists put it down to me not walking correctly or simply complaining. - -Being in constant pain, especially when nobody is listening, is incredibly lonely. For the next couple of years, I experimented with all sorts of medications, yoga, pilates, meditation, and even chiropractic treatments. Nothing would make the pain go away. I became heavily dependent on opiates, which caused other health problems such as constipation, insomnia, and mild hallucinations. - -### Introducing WordPress - -Just as I was giving in to depression, I was introduced to WordPress. A friend of mine had created their own personal blog, and they were posting creative articles about their life and opinions. Up until that time, I had thought the realm of websites was reserved for techie folks. I didn't have a clue about programming, let alone what a domain name was. - -My friend insisted it was easy and invited me to post a guest blog on their site. I decided to share the story of my accident. Publishing the blog was cathartic—I needed that emotional release—and from a technical perspective, it was easy peasy. WordPress allowed me to format the text and add pictures with ease. Afterward, my friend informed me of the number of views my blog posting received, and I toyed with the idea of starting my own website. - -### The doctor calls - -A few weeks after publishing my first ever blog, I was going for a routine checkup at Whitechapel Hospital. Shortly after signing in at the reception counter, the original doctor—the one with the clipboard who had performed my spinal surgery, beckoned me into his office. - -Gone was the serious expression and grouchy-looking eyebrows. The doctor actually looked happy to see me. As usual, he skipped the pleasantries and hastened to share that he had read my blog about breaking my back. I was shocked something I had posted had reached him! He went on to say how moved he was by my struggles, as well as concerned by some of the "remedies" I had tried. He promised he would do whatever he could to get to the bottom of my issue. - -Well, long story short, the doctor eventually discovered the nerve pain I was experiencing was caused by the placement of two of the metal pins around my spine. I went in for a second spinal surgery to remove them, and ever since, I have been pain-free. - -### I'm an open source believer - -![What happens when you break your back][4] - -Sara Kelly [[CC-BY-SA][5]] - -That experience taught me about the power of communication, and it wasn't long before I became a WordPress ninja! I entrenched myself in the [WordPress community][6] and soaked up everything there is to know about [running a website][7], thanks to the amazing network of contributors who post hacks, how-to guides, and respond to troubleshooting forums. - -[WordPress][8] is a completely free platform that anyone can use, study, and even change. I am a huge fan of their [mission statement][9], which reads: "We believe in democratizing publishing and the freedoms that come with open source." My own humble story is just one example of how having a voice made an impact. My original blog is long gone, but I have written subsequent stories about my recovery, which my doctor now shares with new patients, so they know what to expect after a broken back. Perhaps my story has even helped a celebrity like Simon? In any case, I like the idea that there are millions of people the world over, with their own struggles and aspirations, who can make a positive difference in the world by using free platforms like WordPress. - -What can I say? When I got the phone call almost a year ago that Red Hat was hiring, it felt like destiny. It's only by working at Red Hat I've come to appreciate how the idea of "open" unlocks the world's potential. The principles of open source—from decision-making to management practices—are firmly embedded in Red Hat's culture. Now, I truly am an open source believer. - -Besides its popularity, WordPress is also known for usability and an easy-to-develop environment. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/9/breaking-back-open-source - -作者:[Sara Kelly][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/sarapk -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/osdc_520x292_opensourcedoctor.png?itok=fk79NwpC (Open source doctor.) -[2]: https://bossyflossie.com/recover-broken-back/ -[3]: https://edition.cnn.com/2020/08/09/us/simon-cowell-bike-accident-trnd/index.html -[4]: https://opensource.com/sites/default/files/what_happens_if_you_break_your_back.jpg (What happens when you break your back) -[5]: https://creativecommons.org/licenses/by-sa/4.0/legalcode -[6]: https://make.wordpress.org/ -[7]: https://opensource.com/article/20/4/updating-wordpress -[8]: http://wordpress.org -[9]: https://wordpress.org/about/ diff --git a/sources/talk/20200913 Overcoming resistance to open management.md b/sources/talk/20200913 Overcoming resistance to open management.md deleted file mode 100644 index 016106361c..0000000000 --- a/sources/talk/20200913 Overcoming resistance to open management.md +++ /dev/null @@ -1,58 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Overcoming resistance to open management) -[#]: via: (https://opensource.com/open-organization/20/9/overcoming-resistance-open-management) -[#]: author: (Heidi Hess von Ludewig https://opensource.com/users/heidi-hess-von-ludewig) - -Overcoming resistance to open management -====== -In some organizations, a cultural aversion to openness is strong. How -can managers overcome it—and create a new sense of shared purpose on -their teams? -![Tug of war][1] - -In this installment of our "[Managing with Open Values][2]" series, I chat again with Braxton, Director of Pricing for a nationwide U.S. insurance company and people manager. - -In June 2018, Braxton reached out to Red Hatters in the Open Organization community. He wanted to learn more about how both he _and_ his team could work differently—using open values. We were happy to help. So I co-organized a workshop on [open organization principles][3] for Braxton and his team—and kept in touch afterward, so I could learn about his adventure in becoming more open. - -In this second interview (which includes collaborators Tracy Guiliani, [industrial/organizational psychologist and expert in associate engagement][4], and [Bryan Behrenshausen][5]), we explored what it was like to learn firsthand about open source values, and how to use them to transform an organization. In particular, we discussed the value of feedback, managing resistance to using open values, and how the management practice of creating shared purpose caused unexpected benefits for a team with dissimilar roles. It's another enlightening conversation, one that allowed us to witness—directly—how someone transformed Open Organization community-driven workshop material into dynamic change with benefits for him, his team, and his organization. - -One striking point to note is that the "journey to open" is complex and worthwhile. Braxton and his team must confront habituated cultural practices that constrict openness. To overcome this, they engage one habit at a time using community (what it means to be a member of an open team), collaboration (defining what each open values mean to them) and inclusivity (actively listening to dissenters and negotiating a solution or understanding). In other words, they _use_ open values to _create the use_ of open values among the team. - -"Being open" can’t be mandatory; it’s important to actively manage conflicts within the team regarding the miscommunication or misunderstanding of open values. - -Put another way: in order to _have_ open, you have to _be_ open. This is actually counterintuitive in conventional organizations. For example, Braxton articulates how "being open" can’t be mandatory; it’s important to actively manage conflicts within the team regarding the miscommunication or misunderstanding of open values. [Conflict, fortunately, is a necessary part of collaboration][6]; it's also the engine for negotiation and change if we allow it, so it's the natural place for translation and transition (i.e., growth) to occur. As Tracy points out during this conversation, when conflict is positive and well-managed, it becomes a force for developing support, increased trust, and psychological safety—which can all reinforce shared purpose. - -Listen to the rest of this interview to learn: - - * How Braxton inspired shared purpose in through open values on his team, using consistent and regular feedback (including being open to negative feedback)  - * How he found himself coming back to the theme of "transparency" to help the team develop specific open values, resulting in faster and clearer communication - * The impact of resistance or late adopters to the open values among his team, the difference between misunderstanding and miscommunication, and the clarification of value to change—working through differences and conflict - * Whether Braxton thinks he would have the same results from his team if he'd chosen to manage _without_ open values as his guides. - - - -Listen to the interview with Braxton - --------------------------------------------------------------------------------- - -via: https://opensource.com/open-organization/20/9/overcoming-resistance-open-management - -作者:[Heidi Hess von Ludewig][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/heidi-hess-von-ludewig -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/LIFE_information_wants_to_be.jpg?itok=keUyg1RH (Tug of war) -[2]: https://opensource.com/open-organization/managing-with-open-values -[3]: https://github.com/open-organization/open-org-definition -[4]: https://opensource.com/open-organization/20/5/commitment-engagement-org-psychology -[5]: https://opensource.com/users/bbehrens -[6]: https://opensource.com/open-organization/19/5/productive-arguments diff --git a/sources/talk/20200923 How my students taught me to code.md b/sources/talk/20200923 How my students taught me to code.md deleted file mode 100644 index 9c2cb8b414..0000000000 --- a/sources/talk/20200923 How my students taught me to code.md +++ /dev/null @@ -1,67 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (How my students taught me to code) -[#]: via: (https://opensource.com/article/20/9/my-students-taught-me-code) -[#]: author: (Jess Weichler https://opensource.com/users/cyanide-cupcake) - -How my students taught me to code -====== -Coding is for everyone—from preschoolers to adults. Here are some ways -to help you and your children learn to code. -![Student desk for open education][1] - -"Hello, I'm Miss Jess, and my students taught me how to code." - -When I say this to new students, they often think I misspoke. But it's true. Coding always interested me, but it seemed inaccessible. Then my students taught me to code a video game during a few lunch breaks. - -Their encouraging advice and suggestions helped me create my first video game using [Scratch][2]. The game was simple. It was about a monkey catching bananas as they fell from the sky. If you caught a ripe banana, you earned points. - -One of my students chimed in with an idea: "Why don't you have bad bananas that take away points?" - -The answer was that I didn't know how to do that yet. But this simple idea was kind of like a puzzle to me. And there's nothing I love more than a good puzzle. So I spent a lunch break working at this new idea until I solved it. - -An accidental side effect of this project was that I was strengthening my math skills. I'd made it through high school and university without ever really understanding what a variable was. But finally having a real-world application I cared about—needing a scoring system for my game—made it all make sense. - -![Scratch game][3] - -(Jess Weichler, [CC BY-SA 4.0][4]) - -### Connecting with kids through coding - -Coding isn't just for kids who dream of becoming computer programmers. It's for everyone. Educators and parents can harness the power of code to engage learners and introduce subjects in a unique way. - -Writing code and seeing it run is a process of discovery, and everyone loves feeling accomplishment. But once you know a little code, it doesn't take long for you to realize that programming can express ideas; foster creativity; teach mathematics, logic, and problem solving; and encourage collaboration. What's not to love? - -Connecting with kids is always important in education, but with more kids learning from home this year, it's vitally important to engage with them. Coding is a great way to do that. - -### Teaching kids to code - -My youngest students are 4 to 7 years old, and I start them with paper "code" activities. These are simple physical games that help young children understand basic programming concepts and mindsets without a digital device. Once my students turn 8, I introduce Scratch, a visual programming language that uses block-based code. I continue this track until they're age 10 to 12. I also teach some paper "code" activities with older children to introduce and reinforce concepts. - -Once students have a clear understanding of visual coding, I move into text-based coding with Python. It's important to help students make the connection between new Python keywords and the Scratch blocks they already know. (Check out my [introduction to Python series][5] for more information.) - -### Just the beginning - -Whether you're an educator, after-school provider, or parent, join me in a series of articles as I explore how you can use coding to supercharge learning opportunities for your child, your students, or even yourself. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/9/my-students-taught-me-code - -作者:[Jess Weichler][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/cyanide-cupcake -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/rh_003588_01_rd3os.combacktoschoolseriesgen_rh_032x_0.png?itok=cApG9aB4 (Student desk for open education) -[2]: https://scratch.mit.edu/ -[3]: https://opensource.com/sites/default/files/uploads/codekids1_myfirstgame.png (Scratch game) -[4]: https://creativecommons.org/licenses/by-sa/4.0/ -[5]: https://opensource.com/article/17/10/python-101 diff --git a/sources/talk/20200924 Still not dead- The mainframe hangs on, sustained by Linux and hybrid cloud.md b/sources/talk/20200924 Still not dead- The mainframe hangs on, sustained by Linux and hybrid cloud.md deleted file mode 100644 index 5fef055eba..0000000000 --- a/sources/talk/20200924 Still not dead- The mainframe hangs on, sustained by Linux and hybrid cloud.md +++ /dev/null @@ -1,135 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Still not dead: The mainframe hangs on, sustained by Linux and hybrid cloud) -[#]: via: (https://www.networkworld.com/article/3576290/still-not-dead-the-mainframe-hangs-on-sustained-by-linux-and-hybrid-cloud.html) -[#]: author: (Michael Cooney https://www.networkworld.com/author/Michael-Cooney/) - -Still not dead: The mainframe hangs on, sustained by Linux and hybrid cloud -====== -The mainframe—Linux alliance turns 20 this month and is proving to be more vital than ever, primarily in the form of Big Iron-based Red Hat OpenShift. -Thinkstock - -The [mainframe][1] has been declared “dead”, “morphed” and “transformed” so many times over the years sometimes it’s sometimes hard to believe the Big Iron still has an identity in the enterprise world. - -But clearly it does and in a major way, too.  - -**[ Lessons on diversity in IT: [10 professional organizations focused on diversity in tech][2] • [Being Black in IT: 3 tech leaders share their stories][3] • [Gender gapped: The state of gender diversity in IT][4] • [Māori participation in IT][5]: diversity insights for CIOs everywhere • [IT snapshot: Ethnic diversity in the tech industry][6] ]** - -Take recent news as an example: According to IBM, 75% of the top 20 global banks are running the newest z15 mainframe, and the IBM Systems Group reported a 68% gain in Q2 IBM Z revenue year-over-year. - -At the heart of its current vitality is Linux—primarily in the form of Big Iron-based Red Hat OpenShift—and a variety of software such as IBM [Cloud Paks][7] and open source applications.  The Linux-mainframe marriage is celebrating 20 years this month, and while the incongruous mashup—certainly at the beginning anyway—has been a boon for the mainframe, by most accounts it still has plenty of good years ahead of it. - -“For the first five or so years we really were just experimenting with what we could do with Linux and the mainframe but then the server-consolidation movement hit, and we knew we had something big,” said [Ross Mauri][8], the general manager for IBM Z. - -“What really got us going was the big Wall Street financial companies who all had these Sun Solaris servers with big databases, and many decided to consolidate on the Z mainframe running Linux, and we were off and running,” he said. - -[[Get regularly scheduled insights by signing up for Network World newsletters.]][9] - -Another contributing factor in 2000 was Big Blue’s $1B investment in all things Linux, which was a huge move in getting the operating system and open-source software in general into the mainstream business market. - -Since that time there have been numerous milestones in the mainframe’s Linux journey, including the introduction of a standalone box, the LinuxONE, five years ago, which is now at the heart of some of the world’s largest implementations. - -### Red Hat to the rescue - -The next chapter in the mainframe story began last year when [IBM bought Linux powerhouse Red Hat][10] for $34B, tying the massive transactional capacity, security and reliability of the Big Iron with Red Hat Open Shift and Red Hat Enterprise Linux. - -IBM has also released Red Hat Ansible Certified Content for IBM Z and launched a new cloud-native development offering, [Wazi Workspaces][11], which lets developers apply industry-standard tools from IBM Z to multi-cloud platforms optimized for OpenShift. - -Combine those moves with all of the open-source mainframe software work going on in the [Linux Foundation’s Open Mainframe Project][12] and customers now have a ton of development options for private or public cloud-based workloads. - -“Clients no longer have to develop and work with proprietary tools, and the zOS is being brought completely into the modern application development world,” Mauri said. - -Gartner recently wrote of that trend: “Now developers, testers, and infrastructure and operations staff have the capability to utilize the same tools which exist in the distributed world. Rocket Software, CA Technologies and IBM are supporting the [Open Mainframe Project Zowe][13], which is making adapting of open-source tools much easier.” - -IBM calls Zowe an open source software framework that lets development and operations teams securely, manage, control, script and develop on the mainframe like any other cloud platform. - -“From application development software, to complex DevOps orchestration engines, these traditional platforms are enjoying a resurgence of relevance in the data center that is making them accessible to all developers and testers. This change significantly reduces the issue of limited and old-fashioned development tools that previously contributed to the impetus to leave traditional platforms,” Gartner stated. - -Going forward Mauri said he expects a number of key technologies will continue to make the mainframe a key cloud and compute player. - -### Confidential Computing - -One of those keys is an overarching security model called Confidential Computing which IBM broadly describes as a way to protect data, applications and processes at scale. It has rolled out a number products that adhere to the Confidential Computing mantra. For example, IBM’s Secure Execution for Linux software lets customers isolate and protect  large numbers of workloads from internal and external threats across a hybrid-cloud environment. Other packages let customers bolt-down containerized Kubernetes workloads or Red Hat OpenShift clusters, IBM says. - -There is also a Linux Foundation project, the Confidential Computing Consortium, made up of  Alibaba, Arm, Baidu, IBM/Red Hat, Intel, Google Cloud and Microsoft that is pushing the concept industry wide. - -“The organization aims to address data in use, enabling encrypted data to be processed in memory without exposing it to the rest of the system, reducing exposure to sensitive data and providing greater control and transparency for users,” the Consortium says on its website.  “This is among the very first industry-wide initiatives to address data in use, as current security approaches largely focus on data at rest or data in transit. The focus of the Confidential Computing Consortium is especially important as companies move more of their workloads to span multiple environments, from on premises to public cloud and to the edge.” - -Mauri says IBM is on its fourth generation of Confidential Computing technology which will keep it out in front of other industry cloud players and give the company a strong security weapon for the foreseeable future. - -“The vulnerability landscape is constantly changing, and organizations can be attacked across their IT systems. Add to that concerns around data privacy and regulations and you’ve got a full plate,” said Terri Cobb, lead alliance partner at Deloitte Consulting. Deloitte recently conducted a survey of business and IT decision makers with Forrester Consulting and found 80% of respondents are focused on modernizing mainframe toolsets in an effort to identify and prevent data breaches, and 73% are increasing their security footprint. - -“Data protection and security are so critical, and mainframes remain one of the most secure and powerful platforms available when the right controls are in place,” Cobb said. - -### Pay per use - -Another direction IBM and the mainframe is moving is toward a more cloud-agile, consumption-based licensing model that lets customers pay only for what they consume, Mauri said. The company rolled out its Tailored Fit Pricing model in 2019 and has upwards of 80 customers onboard so far, Mauri said. It offers two consumption-based pricing models that can help customers cope with ever-changing workload and hence software costs. - -Mauri said IBM expects to make hardware more consumption based in the future. - -Predicting demand for IT services can be a major challenge, and in the era of hybrid and multicloud, everything is connected and workload patterns constantly change, Mauri wrote in a [blog][14] about the new pricing and services in 2019. “In this environment, managing demand for IT services can be a major challenge. As more customers shift to an enterprise IT model that incorporates on-premises, private cloud and public we’ve developed a simple cloud pricing model to drive the transformation forward.” - -### ML/AI opportunities - -Others say technologies such as machine learning and artificial intelligence will also drive future mainframe development. - -“Data insights help drive actionable and profitable results—-but the pool of data is growing at astronomical rates. That’s where AI can make a difference, especially when it’s on a mainframe. Consider the amount of data that resides on a mainframe for an organization in the banking, manufacturing, healthcare, or insurance sectors. You’d never be able to make sense of it all without AI,” said Deloitte’s Cobb. As an example, Cobb said core banking operations can do more than simply execute large volumes of transactions. - -“Banks need deep insights about customer needs, preferences, and intentions to compete effectively, along with speed and agility in sharing and acting on those insights. That’s easier said than done when data is constantly changing. Now if you can analyze data directly on the mainframe, you can get near real-time insights and action. That makes the mainframe an important participant in the AI/ML revolution,” Cobb said. - -The mainframe environment isn’t without challenges going forward. - -For example, there is a [growing market for moving mainframe applications off][15] of the Big Iron and onto cloud services. Large cloud players such as Amazon, Google and Microsoft are also involved in modernizing mainframe applications. For example, Google Cloud in February [bought mainframe cloud-migration service firm Cornerstone Technology][16] with an eye toward helping Big Iron customers move workloads to the private and public cloud. An ecosystem of mainframe modernization service providers such as [Astadia][17], [Asysco][18], [GTSoftware][19], LZLabs,  [Micro Focus][20] has also grown up. - -### COBOL coders needed - -Another challenge is finding and developing the right people to cultivate the mainframe environment. - -“It was predicted mainframes would eventually cease to exist so colleges stopped offering courses focused on COBOL and other critical mainframe skills. As Baby Boomers retire, mainframe talent concerns are becoming a reality,” Cobb said.   - -Deloitte’s survey found that 71% of respondents said their teams are understaffed, and 93% said its “moderately” to “extremely challenging” to acquire the right mainframe resources and skills, Cobb said. - -“Many large companies are addressing this issue by hiring and developing college recruits, developing a mentoring program, creating an internship, or turning to third parties for support. Mainframes aren’t going anywhere—the talent pool needs to match the demand,” Cobb said. - -While there are challenges in the future, Cobb said the consultancy’s survey showed customers are looking to _increase_ their investment in the mainframe with 91% of respondents identified as expanding their mainframe footprints as a moderate or critical priority in the next 12 months. - -Join the Network World communities on [Facebook][21] and [LinkedIn][22] to comment on topics that are top of mind. - --------------------------------------------------------------------------------- - -via: https://www.networkworld.com/article/3576290/still-not-dead-the-mainframe-hangs-on-sustained-by-linux-and-hybrid-cloud.html - -作者:[Michael Cooney][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://www.networkworld.com/author/Michael-Cooney/ -[b]: https://github.com/lujun9972 -[1]: https://www.networkworld.com/article/2231401/inside-ibm-s-game-changing-mainframe-moments.html -[2]: https://www.cio.com/article/3564791/10-professional-organizations-focused-on-diversity-in-tech.html -[3]: https://www.cio.com/article/3566069/being-black-in-it-3-tech-leaders-share-their-stories.html -[4]: https://www.cio.com/article/3532001/gender-gapped-the-state-of-gender-diversity-in-it.html -[5]: https://www.cio.com/article/3566098/maori-participation-in-it-insights-for-cios.html -[6]: https://www.computerworld.com/article/3567095/it-snapshot-ethnic-diversity-in-the-tech-industry.html -[7]: https://www.networkworld.com/article/3429596/ibm-fuses-its-software-with-red-hats-to-launch-hybrid-cloud-juggernaut.html -[8]: https://newsroom.ibm.com/Bringing-Linux-to-IBM-Z -[9]: https://www.networkworld.com/newsletters/signup.html -[10]: https://www.networkworld.com/article/3407746/will-ibms-acquisition-be-the-end-of-red-hat.html -[11]: https://www.ibm.com/products/wazi-for-red-hat-codeready-workspaces -[12]: https://www.openmainframeproject.org/ -[13]: https://www.openmainframeproject.org/projects/zowe -[14]: https://www.ibm.com/blogs/systems/ibm-z-defines-the-future-of-hybrid-cloud/ -[15]: https://www.networkworld.com/article/3567058/options-grow-for-migrating-mainframe-apps-to-the-cloud.html?utm_source=facebook&utm_content=content&utm_medium=social&utm_campaign=organic&fbclid=IwAR2JPUEItx11TeSqiIvgr3_HA4YQRv_U7imm4Z4WG-wCuir_WrrE2zmst5o -[16]: https://www.networkworld.com/article/3528451/google-cloud-moves-to-aid-mainframe-migration.html -[17]: https://www.astadia.com/blog/mainframe-migration-to-azure-in-5-steps -[18]: https://www.asysco.com/code-transformation/ -[19]: https://www.gtsoftware.com/services/migration-services/ -[20]: https://www.microfocus.com/en-us/home -[21]: https://www.facebook.com/NetworkWorld/ -[22]: https://www.linkedin.com/company/network-world diff --git a/sources/talk/20200927 What would a global open organization look like.md b/sources/talk/20200927 What would a global open organization look like.md deleted file mode 100644 index 046c1b5b44..0000000000 --- a/sources/talk/20200927 What would a global open organization look like.md +++ /dev/null @@ -1,121 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (What would a global open organization look like?) -[#]: via: (https://opensource.com/open-organization/20/9/global-open-organization) -[#]: author: (Ron McFarland https://opensource.com/users/ron-mcfarland) - -What would a global open organization look like? -====== -Solving global problems will require global collaboration. Working -openly is the best way forward. -![Pixelated globe][1] - -In the [first article in this series][2], I presented four dimensions of globalization and explained how they relate to [open organization principles][3]. Then, in [the second part][4], I reviewed a history of globalization, one based on [Jeffrey D. Sachs][5]' book [The Ages of Globalization][6]. That piece tracked a history of gradually increasing openness—from the beginning of human civilization up to the start of the industrial revolution, which began around the beginning of the 1800s. - -In this final installment of the series, I will continue my review of Sachs' book by examining two more recent historical settings, the Industrial Age and the Digital Age, to explain how open principles have shaped more recent trends in globalization—and how these principles will be integral to our global future. - -### The Industrial Age (1800‒2000 CE): The urban, city growth, and machine setting - -According to Sachs, around 1820, 85% of the global population was still involved in farming and lived at a subsistence level. Of them, 93% were relatively unconnected, living in rural areas. - -Through the advent of industrial development, that all changed. - -By 2000, about half the global population (46.7%) lived in urban areas, their average incomes soared, and average life expectancy had reached 67 years old (according to 2000‒2005 data). Living in an interconnected world among a web of nonstop data altered the relative isolation of village life—an illustration of the importance of building **communities** that are **inclusive**, **collaborate** deeply, are very open and **transparent** with each other, and support each other when there are unexpected challenges **(adaptable)**. - -The Industrial Revolution began in 1776 with James Watt's invention of the steam engine in Scotland. Railroads and steamships began connecting the world. Large factories began bringing in people from the countryside. As the British economic historian E. A. Wrigley has written, this was a movement from an "organic economy" to an "energy-rich economy" in which we see a shift from a dependence on raw materials from vegetable or animal (including human manual labor) for energy to three main fossil fuels for energy (coal, petroleum and natural gas) that was deployed after 1800 (and then, just 100 years later, nuclear technology). - -[Global GDP per capita][2] hadn't changed much until around 1780‒1830, when the steam engine sparked a wave of increase, according to economist [Nikolai Kondratiev][7]. From then, upward movements in GDP [have come in additional waves][8], Kondratiev says. The second wave arrived around 1830‒1880, with investments in railways and steel. The third (1880‒1930) came from electrification. Automobiles sparked the fourth wave around 1930‒1970. The fifth, information technologies, began around 2010. And now intelligent technology, including robotics and artificial intelligence, stands to spark another from 2010‒2050. All these investments have changed the environment in which we build communities, collaborate, share information and address challenges (they also created income inequality between regions—between Kondratiev's "energy rich" economies and others). - -By the end of World War II (around 1945) many organizations had been established to promote what today we might call greater openness. Organizations like the [United Nations (UN)][9], the [International Monetary Fund (IMF)][10], [the World Bank][11], [the General Agreement on Tariffs and Trade (GATT)][12], [the Food and Agricultural Organization][13] and the [World Health Organization (WHO)][14] continue to promote various forms of global cooperation. The same is true of global philanthropic organizations and private foundations like the [Bill and Melinda Gate Foundation][15], [Greenpeace][16] and others. They will be more needed and must be strengthened in the years ahead. - -### The Digital Age (Twenty-First Century): The connection and sustainability-challenge setting - -We are only one-fifth of the way into the 21st Century. According to Sachs, globalized communities in this period will address different issues than those they've addressed up until now. Economic activity, jobs, lifestyles, and geopolitics will all gradually change. To address these changes, we can apply open organizational principles. - -According to Sachs, these issues will be central to those changes. - -**Drastic economic and financial inequality.** We must address the distribution of global wealth. Workers displaced by machines have seen their earnings stagnate or decline. These workers must be retrained and re-skilled with processes financed through taxation. This is equally true between developed and developing countries. Developed countries must provide some kind of managed support to developing countries as they transition in the years and decades ahead. These are global issues and should be addressed as such, Sachs says, or unmanageable global unrest and continued poverty will result. - -Could we write a mission statement for humankind? If we could, open organization principles should be its backbone. - -**A global environmental crisis.** "The world economy has increased roughly a hundredfold over the past two centuries: roughly ten times the population and ten times the GDP per capita," Sachs writes. "Yet the physical planet has remained constant, and the human impact on that environment has therefore intensified dramatically." Issues like climate change, the burning of fossil fuels, mass destruction of biodiversity, and the dire pollution of air, soils, freshwater and oceans must all be topics of _global_ conversation and collaboration, or we will watch our environment worsen, Sachs says. - -**Increased chance of global war.** In Sachs' outline of historical periods, shifts in geopolitical power are often accompanied by war. That potential is once more a potential concern. This issue will require a great deal of open discussions between these nations. - -### Governance through the ages - -Let's take one more global look at [organizational governance through the ages][4]. According to Sachs, governance has become more global over time. - - * In the Paleolithic Age (70,000-10,000 BCE), there were strong bonds developed between nomadic clans, particularly "bands" of 25‒30 members within those clans. - * In the Neolithic Age (10,000-3,000 BCE), through agricultural advancement, there was village life and local politics. - * In the Equestrian Age (3,000-1,000 BCE), through animal domestication and travel by horses, states were formed and governed. - * In the Classical Age (1,000 BCE-1500 CE), governance expanded to regional multi-ethnic empires through education and further information documentation. - * In the Ocean Age (1500-1800 CE), through long-distance sea travel, larger global empire governance started. - * In the Industrial Age (1800-2000 CE), the United Nations was formed and two dominant powers emerged (namely, the United Kingdom and the United States). - * In the Digital Age (the 21st Century), shifting geopolitical conditions will prompt new developments in global organizational governance, particularly in a globally connected world in which China and the United States will play major roles. - - - -Sachs notes that prosperity and longer life expectancy have resulted from increased global interconnectedness and organizational openness. - -So how might we build the next generation of global, open organizations? - -### An age of truly global collaboration - -According to Professor Sachs, in order to get buy-in to address these issues, currently underrepresented regions will need a more powerful voice in the global community. Nations will not buy into potential changes unless they feel they are fully represented, participating in a true collaborative dialog. Configuring a global community attentive to members' needs is extremely important. Without ideal representation and talent in the room, very little can be achieved. - -For example, to obtain stronger global buy-in, Sachs recommends one representative from each of eight major global regions in the United Nations (North America, South America, European Union, African Union, South Asia, East Asia, Commonwealth of Independent States, and Western Asia). A manageable team of eight people discussing global issues has a higher chance of success. - -Also, Sachs recommends that Brazil, Germany, India, Indonesia, Japan, and Nigeria should be permanent members of the UN Security Council. Then, global issues can be more easily and seriously addressed. As is, he writes, the 193 individual member countries can do very little. - -A successful development agenda (the community's purpose) requires inclusive partnerships at the global, regional, national and local levels. They have to be built upon a shared vision and shared goals with all human beings and the planet at the center. Furthermore, with an increase in urban populations, communities should be getting involved in not only issues within their area but globally as well. Here again, their representation and participation are required to get them to buy-in to anything agreed on. - -In short, a globally viable open organization of member nations would be beneficial. - -Here are two challenges such an organization could help address. - -**Ending world poverty.** Sachs believes that in our generation we should see an end to world poverty—particularly if the global community works on supporting poorer communities, controlling disease globally, increasing school attendance, and improving infrastructure worldwide. Work on these issues have already begun in many places at a _national_ level (consider China's [Belt and Road initiative][17]), but it should be coordinated on a global scale. - -**Promoting Literacy.** In the 1950s, global illiteracy (in any language) had been eliminated in most high-income countries, and yet the global illiteracy rate was still roughly 80% in developing countries. This gap made global collaboration and joint problem-solving difficult. Therefore, even though life expectancy in developed countries was then around 68 years of age, in developing countries it was only around 40 years of age. Open organization principles become very difficult to be adopted globally, or won't work at all worldwide, where such illiteracy is common. Multi-language education must be a priority. While English is the language of choice in most scientific, financial, or diplomatic discussions, it is not the most _spoken_ language (Chinese is). Foreign language learning, foreign language interpreting, and foreign language translation will become more important as well in the years ahead to promote global understanding, cooperation and collaboration. - -### A shared identity - -We all have identities formed in part by the groups in which we participate—sports teams, religious groups, regions, and nationalities. We tend to promote and support those that we identify with. So how might we develop an identity for a new, _global_ organization that welcomes open participation in solving global issues? - -Could we write a mission statement for humankind? - -If we could, [open organization principles][3] should be its backbone. - --------------------------------------------------------------------------------- - -via: https://opensource.com/open-organization/20/9/global-open-organization - -作者:[Ron McFarland][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/ron-mcfarland -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/pixelated-world.png?itok=fHjM6m53 (Pixelated globe) -[2]: https://opensource.com/open-organization/20/7/globalization-history-open -[3]: https://theopenorganization.org/definition -[4]: https://opensource.com/open-organization/20/8/global-history-collaboration -[5]: https://en.wikipedia.org/wiki/Jeffrey_Sachs -[6]: https://cup.columbia.edu/book/the-ages-of-globalization/9780231193740 -[7]: https://en.wikipedia.org/wiki/Nikolai_Kondratiev -[8]: https://ourworldindata.org/grapher/world-gdp-over-the-last-two-millennia -[9]: https://www.un.org/en/ -[10]: https://www.imf.org/external/index.htm -[11]: https://www.worldbank.org/ -[12]: https://en.wikipedia.org/wiki/General_Agreement_on_Tariffs_and_Trade#:~:text=The%20General%20Agreement%20on%20Tariffs,such%20as%20tariffs%20or%20quotas. -[13]: https://en.wikipedia.org/wiki/Food_and_Agriculture_Organization -[14]: https://www.who.int/ -[15]: https://www.gatesfoundation.org/ -[16]: https://opensource.com/tags/open-organization-greenpeace -[17]: https://www.beltroad-initiative.com/belt-and-road/ diff --git a/sources/talk/20200928 5 ways to conduct user research with an open source mindset.md b/sources/talk/20200928 5 ways to conduct user research with an open source mindset.md deleted file mode 100644 index c2072cccc3..0000000000 --- a/sources/talk/20200928 5 ways to conduct user research with an open source mindset.md +++ /dev/null @@ -1,117 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (5 ways to conduct user research with an open source mindset) -[#]: via: (https://opensource.com/article/20/9/open-source-user-research) -[#]: author: (Alana Fialkoff https://opensource.com/users/alana) - -5 ways to conduct user research with an open source mindset -====== -See how this team elevates their user research experiences and results -with an open source approach. -![Mobile devices are a big part of our daily lives][1] - -There are common beliefs about user experiences—the best ones are user-centered, iterative, and intuitive. When user experience (UX) research is conducted, user stories about these experiences are collected—but the research methods chosen inform user experiences, too. - -So, what makes for an engaging research experience, and how can methods evolve alongside products to better connect with users? - -[Red Hat's User Experience Design (UXD) research team][2] has the answer: a community-centered, open source mindset.  - -As a UX writer on Red Hat's UXD team, I create new design documentation, empower team voices, and share Red Hat's open source story. My passion lies in using content to connect and inspire others. On our [Twitter][3] and [Medium][4] channels, we share thought leadership about UX writing, research, development, and design, all to amplify and grow our open source community. This community is at the heart of what we do. So when I learned how the research team centers community throughout their user testing, I leaped at the chance to tell their story. - -### Approaching research with an open source mindset - -Red Hat's UXD team creates in the open, and this ideology applies to their research, too. Thinking the open source way involves adopting a community-first and community-driven frame of mind. New ideas can come from anywhere, and an open source mindset embraces these varied voices and perspectives. - -Structuring research with an open source mindset means each research technique should be driven by two angles—we don't just want to learn about our users; we want to learn from them, too. - -To satisfy both of these user-focused objectives, we make research decisions backed by other voices, not just our own. By sourcing input from beyond our team, we design research experiences that are truly tailored to the communities we serve. - -Guiding questions help us streamline this process. Some questions the team's researchers use to develop their methods include: - - * Does this method amplify user voices? - * Are we facilitating open communication with our users? - * Does this method build a meaningful connection with our user base? - * What kind of experience does this technique build? Is it memorable? Engaging? - - - -Notice a trend? Each question hinges on community. - -### Building research experiences like user experiences - -Researchers approach their UX research as a user experience, too. We want our research sessions to have the same qualities as our user interfaces: - - * Memorable - * Engaging - * Intuitive - * User-centered - - - -Research offers in-depth engagement with our user base, so it's important to tailor our techniques to that community. When we conduct user research, we learn more about how our users engage with our products and use that knowledge to improve them. We can use that same process to shape future research sessions. - -Open source, user-centered research—sounds great. But how can we actually achieve it? - -Let's take a look at five collaborative techniques we use to design more immersive user research experiences the open source way. - -### Evolve research methods to build engaging experiences and strong connections - -Tailor research methods to the target audience, with a goal to create a connective experience. The tools at our disposal vary largely depending on our venue (in-person vs. virtual), so this approach lets us get creative. - - * **Add dimension**: Are you conducting a survey? Consider appealing your users' senses offscreen. We've expanded our research to the third dimension using strings, LEGOs, and card diagrams to collect data in more tactile ways. - * **Streamline**: Are your research methods efficient and time-conscious? There's only one way to find out. Follow up with users about their experience post-session. If they say a survey or form was cumbersome, consider condensing your longer questions into smaller, more digestible ones. - * **Simplify**: Use what you know about your user base to customize your techniques. A busy community working in enterprise IT, for example, might only have time to fill out a brief form. Structure your methods so that they're navigable and intuitive for your specific audience. - - - -### Guide research with research - -Contextualize questions around user's needs. Explore their goals. Identify their cares, difficulties, and thoughts on product performance. Use these findings to design more meaningful research sessions, and check in often. As our products evolve with our users, our research methods do, too. - -### Keep an open mind - -Work with the community to disprove our own assumptions. Lean into the spirit of open source by engaging with others across the team, company, user base, and industry. Use these communities like a sounding board for ideas and welcome their feedback. Community-centered conversations take place in environments like: - - * Team meetings and brainstorms - * Company calls and research shares - * Conferences and industry panels - * Internal and external blogging platforms - * Other thought leadership forums - - - -This means speaking at monthly meetings, messaging across team channels, and presenting ideas at annual thought leadership events, where a multitude of voices meet from across the industry to share their experience and expertise. - -### Communicate, communicate, communicate - -With an open source mindset comes open communication. Spark meaningful conversations with users and keep those channels open beyond formal research sessions. Community-driven research techniques start with just that: community. Invest in a strong connection with users to invite deeper insights and facilitate more impactful sessions. - -### Experiment with new research techniques and take a user-centered, UX approach - -Prototype. Test. Iterate. Repeat. The methods will morph as the open source approach takes shape. - -That's the magic of conducting research in the open: dynamic change, driven by a deeper connection to the community. - -Learn more about how Red Hat's UXD team conducts research by checking out [DevConf.US][5], where individuals across the open source community come together to talk all things tech, open source, and UX. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/9/open-source-user-research - -作者:[Alana Fialkoff][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/alana -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/mobile-demo-device-phone.png?itok=y9cHLI_F (Mobile devices are a big part of our daily lives) -[2]: https://medium.com/patternfly/from-interviewers-to-interviewees-meet-red-hats-ux-research-team-af860a65abc5 -[3]: https://twitter.com/RedHatUXD -[4]: https://medium.com/patternfly -[5]: https://www.devconf.info/us/ diff --git a/sources/talk/20200930 VMware plan disaggregates servers- offloads network virtualization and security.md b/sources/talk/20200930 VMware plan disaggregates servers- offloads network virtualization and security.md deleted file mode 100644 index 2f2c1bc343..0000000000 --- a/sources/talk/20200930 VMware plan disaggregates servers- offloads network virtualization and security.md +++ /dev/null @@ -1,71 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (VMware plan disaggregates servers; offloads network virtualization and security) -[#]: via: (https://www.networkworld.com/article/3583990/vmware-plan-disaggregates-servers-offloads-network-virtualization-and-security.html) -[#]: author: (Michael Cooney https://www.networkworld.com/author/Michael-Cooney/) - -VMware plan disaggregates servers; offloads network virtualization and security -====== -VMware Project Monterey includes NVIDIA, Intel and goes a long way to meld bare metal servers, graphics processing units -Henrik5000 / Getty Images - -VMware is continuing its effort to remake the data center, cloud and edge to handle the distributed workloads and applications of the future. - -At its virtual VMworld 2020 event the company previewed a new architecture called Project Monterey that goes a long way toward melding bare-metal servers, graphics processing units (GPUs), field programmable gate arrays (FPGAs), network interface cards (NICs) and security into a large-scale virtualized environment. - -Monterey would extend VMware Cloud Foundation (VCF), which today integrates the company’s vShphere virtualization, vSAN storage, NSX networking and vRealize cloud management systems to support GPUs, FPGAs and NICs into a single platform that can be deployed on-premises or in a public cloud. - -[[Get regularly scheduled insights by signing up for Network World newsletters.]][1] - -The combination of a rearchitected VCF with Project Monterey will disaggregate server functions, add support for bare-metal servers and let an application running on one physical server consume hardware accelerator resources such as FPGAs from other physical servers, said Kit Colbert vice president and chief technology officer of VMware’s Cloud Platform business unit. - -This will also enable physical resources to be dynamically accessed based on policy or via software API, tailored to the needs of the application, Colbert said.  “What we see is that these new apps are using more and more of server CPU cycles. Traditionally, the industry has relied on the CPU for everything--application business logic, processing network packets, specialized work such as 3D modeling, and more,” Colbert wrote in a [blog][2] outlining Project Monterey. - -“But as app requirements for compute have continued to grow, hardware accelerators including GPUs, FPGAs, specialized NICs have been developed for processing workloads that could be offloaded from the CPU.  By leveraging these accelerators, organizations can improve performance for the offloaded activities and free up CPU cycles for core app-processing work.” - -A key component of Monterey is VMware’s SmartNIC which incorporates a general-purpose CPU, out-of-band management, and virtualized device features. As part of Monterey, VMware has enabled its ESXi hypervisor to run on its SmartNICs which will let customers use a single management framework to manage all their compute infrastructure whether it be virtualized or bare metal. - -The idea is that by supporting SmartNICs, VCF will be able to maintain compute virtualization on the server CPU while offloading networking and storage I/O functions to the SmartNIC CPU. Applications can then make use of the available network bandwidth while saving server CPU cycles that will improve application performance, Colbert stated. - -As for security, each SmartNIC can run a stateful firewall and an advanced security suite. - -“Since this will run in the NIC and not in the host, up to thousands of tiny firewalls will be able to be deployed and automatically tuned to protect specific application services that make up the application--wrapping each service with intelligent defenses that can shield any vulnerability of that specific service,” Colbert stated. “Having an ESXi instance on the SmartNIC provides greater defense-in-depth. Even if the x86 ESXi is somehow compromised, the SmartNIC ESXi can still enforce proper network security and other security policies.” - -Part of the Monterey rollout included a broad development agreement between VMware and GPU giant Nvidia to bring its BlueField-2 data-processing unit (DPU) and other technologies into Monterey.  The BlueField-2 offloads network, security, and storage tasks from the CPU. - -Nvidia DPUs can run a number of tasks, including network virtualization, load balancing, data compression, packet switching and encryption today across two ports, each carrying traffic at 100Gbps. “That’s an order of magnitude faster than CPUs geared for enterprise apps. The DPU is taking on these jobs so CPU cores can run more apps, boosting vSphere and data-center efficiency,” according to an Nvidia blog “As a result, data centers can handle more apps, and their networks will run faster, too.” - -In addition to the Monterey agreement, VMware and Nvidia said they would work together to develop an enterprise platform for AI applications.  Specifically, the companies said GPU-optimized AI software available on the [Nvidia NGC hub][3] will be integrated into VMware vSphere, VMware Cloud Foundation and VMware Tanzu. - -[Now see how AI can boost data-center availability and efficiency][4] - -This will help accelerate AI adoption, letting customers extend existing infrastructure to support AI and manage all applications with a single set of operations. - -Intel and Pensando announced SmartNIC technology integration as part of Project Monterey, and  Dell Technologies, HPE and Lenovo said they, too, would support integrated systems based on Project Monterey. - -Project Monterey is a technology preview at this point and VMware did not say when it expects to deliver it. - -Join the Network World communities on [Facebook][5] and [LinkedIn][6] to comment on topics that are top of mind. - --------------------------------------------------------------------------------- - -via: https://www.networkworld.com/article/3583990/vmware-plan-disaggregates-servers-offloads-network-virtualization-and-security.html - -作者:[Michael Cooney][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://www.networkworld.com/author/Michael-Cooney/ -[b]: https://github.com/lujun9972 -[1]: https://www.networkworld.com/newsletters/signup.html -[2]: https://blogs.vmware.com/vsphere/2020/09/announcing-project-monterey-redefining-hybrid-cloud-architecture.html -[3]: https://www.nvidia.com/en-us/gpu-cloud/ -[4]: https://www.networkworld.com/article/3274654/ai-boosts-data-center-availability-efficiency.html -[5]: https://www.facebook.com/NetworkWorld/ -[6]: https://www.linkedin.com/company/network-world diff --git a/sources/talk/20201002 VMware highlights security in COVID-era networking.md b/sources/talk/20201002 VMware highlights security in COVID-era networking.md deleted file mode 100644 index 9cc050ddf6..0000000000 --- a/sources/talk/20201002 VMware highlights security in COVID-era networking.md +++ /dev/null @@ -1,85 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (VMware highlights security in COVID-era networking) -[#]: via: (https://www.networkworld.com/article/3584412/vmware-highlights-security-in-covid-era-networking.html) -[#]: author: (Michael Cooney https://www.networkworld.com/author/Michael-Cooney/) - -VMware highlights security in COVID-era networking -====== -VMware is tackling the challenges of securing distributed enterprise resources with product enhancements including the new Carbon Black Cloud Workload software and upgrades to its SD-WAN and SASE products. -ArtyStarty / Getty Images - -As enterprise workloads continue to move off-premises and employees continue to work remotely during the COVID-19 pandemic, securing that environment remains a critical challenge for IT. - -At its virtual VWworld 2020 gathering, VMware detailed products and plans to help customers deal with the challenges of securing distributed enterprise resources. - -**More about SD-WAN**: [How to buy SD-WAN technology: Key questions to consider when selecting a supplier][1] • [What SD-Branch is and why you'll need it][2] • [What are the options for securing SD-WAN?][3] - -"Amid global disruption, the key to survival for many companies has meant an accelerated shift to the cloud and, ultimately, bolting on security products in their data centers," said Sanjay Poonen, VMware's Chief Operating Officer, Customer Operations. "But legacy security systems are no longer sufficient for organizations that are using the cloud as part of their computing infrastructure. It's time to rethink security for the cloud. Organizations need protection at the workload level, not just at the endpoint." - -With that in mind, VMware introduced Carbon Black Cloud Workload software that combines vulnerability reporting with security detection and response capabilities to protect workloads running in virtualized, private and hybrid cloud environments, VMware stated.    - -The new packages – along with [other upgrades to its security software][4] – represent VMware's continued development and integration of the Carbon Black security technology it [acquired a year ago][5] for $2.1 billion.  - -"Tightly integrated with vSphere, VMware Carbon Black Cloud Workload provides agentless security that alleviates installation and management overhead and consolidates the collection of [telemetry][6] for multiple workload security use cases," VMware stated.  - -The idea is to allow security and infrastructure teams to automatically secure new and existing workloads at every point in the security lifecycle, while simplifying operations and consolidating the IT and security stack. With the software, customers can analyze attacker behavior patterns over time to detect and stop never-seen-before attacks, including those manipulating known-good software. If an attacker bypasses perimeter defenses, security teams can shut down the attack before it escalates to a data breach, VMware stated.  - -All current vSphere 6.5 and VMware Cloud Foundation 4.0 customers can give the package a try for free for the next six months, VMware stated. VMware plans to introduce a Carbon Black Cloud module for hardening and better securing Kubernetes workloads as well. - -The company also enhanced its Workspace ONE platform that securely manages end users' mobile devices and cloud-hosted virtual desktops and applications from the cloud or on-premise. - -The company says it blended VMware Workspace ONE Horizon and VMware Carbon Black Cloud to offer behavioral detection to protect against ransomware and file-less malware. On VMware vSphere, the solution is integrated into VMware Tools, removing the need to install and manage additional security agents, according to the company.  - -Bolstering support for Apple Mac and Microsoft Windows 10 remote users, VMware added Workspace Security Remote, which includes the antivirus, audit and remediation, and detection and response capabilities of Carbon Black Cloud. It also includes the analytics, automation, device health, orchestration, and zero-trust access capabilities of the Workspace ONE platform. - -Securing the remote work environment is a common theme among other VMWare announcements, including news around its [SD-WAN and secure access service edge (SASE)][7] products and its overarching Virtual Cloud Network architecture. - -Taken together, the enhancements further VMware's goal of integrating security features within its infrastructure – a concept it calls intrinsic security – in an effort to better protect networked workloads than traditional piecemeal protection systems could. - -The democratization of compute was already underway before the COVID situation pushed it further, faster, said Sanjay Uppal, senior vice president and general manager of the VeloCloud Business Unit at VMware. "So with the remote workforce growing we need to make privacy and security drop-dead simple, and that is the goal." - -A more futuristic goal for the company is to provide a unified approach to security incident detection and response that can leverage multiple domains – from endpoint to workload to user to network. An emerging architecture that promises those capabilities is Extended Detection and Response (XDR), and VMware says it intends to support it.  - -In a recent _[CSO][8]_ [column][8], Enterprise Strategy Group senior principal analyst Jon Oltsik defined XDR as "an integrated suite of security products spanning hybrid IT architectures, designed to interoperate and coordinate on threat prevention, detection and response. In other words, XDR unifies control points, security telemetry, analytics, and operations into one enterprise system." - -ESG research indicates that 84% of organizations are actively integrating security technologies so XDR can act as a turnkey security technology integration solution.  - -"While vendors will offer different XDR bundles, ESG research indicates that large organizations really want XDR to include endpoint/server/cloud workload security, network security, coverage of the most common threat vectors (i.e., email/web), file detonation (i.e., sandboxing), threat intelligence, and analytics," Oltsik stated. - -Gartner said of XDR: "Although XDR tools are similar in function to security incident and event monitoring (SIEM) and security orchestration, automation and response tools, they are primarily differentiated by the level of integration at deployment and the focus on incident response." - -The primary goals of an XDR solution are to increase detection accuracy by correlating threat intelligence and signals across multiple security solutions, and to improve security operations efficiency and productivity. - -For its part, VMware said XDR is the opportunity to do just that: provide a unified approach to security incident detection and response that can leverage multiple domains from endpoint to workload to user to network. - -VMware called XDR "a multi-year effort to build the most advanced and comprehensive security incident detection and response solutions available" and will include cross-platform integration across its portfolio including Workspace ONE, vSphere, Carbon Black Cloud, and NSX Service-defined Firewall. - -Join the Network World communities on [Facebook][9] and [LinkedIn][10] to comment on topics that are top of mind. - --------------------------------------------------------------------------------- - -via: https://www.networkworld.com/article/3584412/vmware-highlights-security-in-covid-era-networking.html - -作者:[Michael Cooney][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://www.networkworld.com/author/Michael-Cooney/ -[b]: https://github.com/lujun9972 -[1]: https://www.networkworld.com/article/3323407/sd-wan/how-to-buy-sd-wan-technology-key-questions-to-consider-when-selecting-a-supplier.html -[2]: https://www.networkworld.com/article/3250664/lan-wan/sd-branch-what-it-is-and-why-youll-need-it.html -[3]: https://www.networkworld.com/article/3285728/sd-wan/what-are-the-options-for-securing-sd-wan.html -[4]: https://www.networkworld.com/article/3529369/vmware-amps-up-its-cloud-and-data-center-security.html -[5]: https://www.networkworld.com/article/3445383/vmware-builds-security-unit-around-carbon-black-tech.html -[6]: https://www.networkworld.com/article/3575837/streaming-telemetry-gains-interest-as-snmp-reliance-fades.html -[7]: https://www.networkworld.com/article/3583939/vmware-amps-up-security-for-network-sase-sd-wan-products.html -[8]: https://www.csoonline.com/article/3561291/what-is-xdr-10-things-you-should-know-about-this-security-buzz-term.html -[9]: https://www.facebook.com/NetworkWorld/ -[10]: https://www.linkedin.com/company/network-world diff --git a/sources/talk/20201007 Telcos Move from Black boxes to Open Source.md b/sources/talk/20201007 Telcos Move from Black boxes to Open Source.md deleted file mode 100644 index d517aa4842..0000000000 --- a/sources/talk/20201007 Telcos Move from Black boxes to Open Source.md +++ /dev/null @@ -1,92 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Telcos Move from Black boxes to Open Source) -[#]: via: (https://www.linux.com/interviews/telcos-move-from-black-boxes-to-open-source/) -[#]: author: (Swapnil Bhartiya https://www.linux.com/author/swapnil/) - -Telcos Move from Black boxes to Open Source -====== - -*Linux Foundation Networking (LFN) organized its first virtual event last week and we sat down with Arpit Joshipura, the General Manager of Networking, IoT and Edge at the Linux Foundation, to talk about the key points of the event and how LFN is leading the adoption of open source within the telco space. * - -**Swapnil Bhartiya: Today, we have with us Arpit Joshipura, General Manager of Networking, IoT and Edge, at the Linux Foundation. Arpit, what were some of the highlights of this event? Some big announcements that you can talk about?** - -**Arpit Joshipura:** This was a global event with more than 80 sessions and was attended by attendees from over 75 countries. The sessions were very diverse. A lot of the sessions were end-user driven, operator driven as well as from our vendors and partners. If you take LF Networking and LFH as two umbrellas that are leading the Networking and Edge implementations here, we had a very significant announcement. I would probably group them into 5 main things: - -Number one, we released a white paper at the Linux Foundation level where we had a bunch of vertical industries transformed using open source. These are over 100-year-old industries like telecom, automotive, finance, energy, healthcare, etc. So, that’s kind of one big announcement where vertical industries have taken advantage of open source. - -The second announcement was easy enough: Google Cloud joins Linux Foundation Networking as a partner. That announcement comes on the basis of the telecom market and the cloud market converging together and building on each other. - -The third major announcement was a project under LF Networking. If you remember, two years ago, a project collaboration with GSMA was started. It was called CNTT, which really defined and narrowed the scope of interoperability and compliance. And we have OPNFV under LFN. What we announced at Open Networking and Edge summit is the two projects are going to come together. This would be fantastic to a global community of operators who are simplifying the deployment and interoperability of implementation of NFVI manual VNFs and CNFs. - -The next announcement was around a research study that we released on open source code that was created by Linux Foundation Networking, using LFN analytics and COCOMO estimation. We’re talking $7.2 billion worth of IP investment, right? This is the power of shared technology. - -And finally, we released a survey on the Edge community asking them, “Why are you contributing to open source?” And the answer was fascinating. It was all-around innovation, speed to deployment, market creation. Yes, cost was important, but not initially. - -So those were the 5 big highlights of the show from an LFN and LFH perspective. - -**Swapnil Bhartiya: There are two things that I’m interested in. One is the consolidation that you talk about, and the second is survey. The fact is that everybody is using open source. There is no doubt about it. But the problem that is happening is since everybody’s using it, there seems to be some gap between the awareness of how to be a good open source citizen as well. What have you seen in the telco space?** - -**Arpit Joshipura:** First of all, 5 years ago, they were all using black box and proprietary technologies. Then, we launched a project called OpenDaylight. And of course, OpenDaylight announced its 13th release today, but that’s kind of on their 6-year anniversary from being proprietary to today in one of the more active projects called ONAP. The telcos are 4 of the Top 10 contributors of source code and open source, right? Who would have imagined that an AT&T, Verizon, Amdocs, DT, Vodafone, and a China mobile and a China telecom, you name it are all actively contributing code? So that’s a paradigm shift in terms of not only consuming it, but also contributing towards it. - -**Swapnil Bhartiya: And since you mentioned ONAP, if I’m not wrong, I think AT&T released its own work as E-com. And then the projects within the Foundation were merged to create ONAP. And then you mentioned actually NTD. So, what I want to understand from you is how many projects are there that you see within the Foundation? The problem is that Linux Foundation and all those other foundations are open servers. It’s a very good place for those products to come in. It’s obvious that there will be some projects that will overlap. So what is the situation right now? Where do you see some overlap happening and, at the same time, are there still gaps that you need to fill?** - -**Arpit Joshipura:** So that’s a question of the philosophies of a foundation, right? I’ll start off with the most loose situation, which is GitHub. Millions and millions of projects on GitHub. Any PhD student can throw his code on GitHub and say that’s open source and at the end of the day, if there’s no community around it, that project is dead. Okay. That’s the most extreme scenario. Then, there are foundations like CNCF who have a process of accepting projects that could have competing solutions. May the best project win. - -From an LF Networking and LFH perspective, the process is a little bit more restrictive: there is a formal project life cycle document and a process available on the Wiki that looks at the complementary nature of the project, that looks at the ecosystem, that looks at how it will enable and foster innovation. Then based on that, the governing board and the neutral governance that we have set up under the Linux Foundation, they would approve it. - -Overall, it depends on the philosophy for LFN and LFH. We have 8 projects each in the umbrella, and most of these projects are quite complementary when it comes to solving different use cases in different parts of the network. - -**Swapnil Bhartiya: Awesome. Now, I want to talk about 5G a bit. I did not hear any announcements, but can you talk a bit about what is the word going on to help the further deployment of 5G technologies?** - -**Arpit Joshipura:** Yeah. I’m happy and sad to say that 5G is old news, right? The reality is all of the infrastructure work on 5G already was released earlier this year. So ONAP Frankfurt release, for example, has a blueprint on 5G slicing, right? All the work has been done, lots of blueprint and Akraino using 5G and mech. So, that work is done. The cities are getting lit up by the carriers. You see announcements from global carriers on 5G deployments. I think there are 2 missing pieces of work remaining for 5G. - -One is obviously the O-RAN support, right? The O-RAN software community, which we host at the Linux Foundation also is coming up with a second release. And, all the support for 5G is in there. - -The second part of 5G is really the compliance and verification testing. A lot of work is going into CMTT and OPN and feed. Remember that merge project we talked about where 5G is in context of not just OpenStack, but also Kubernetes? So the cloud-native aspects of 5G are all being worked on this year. I think we’ll see a lot more cloud-native 5G deployments next year primarily because projects like ONAP or cloud native integrate with projects like ONAP and Anthos or Azure stack and things like that. - -**Swapnil Bhartiya: What are some of the biggest challenges that the telco industry is facing? I mean, technically, no externalization and all those things were there, but foundations have solved the problem. Some rough ideas are still there that you’re trying to resolve for them.** - -**Arpit Joshipura:** Yeah. I think the recent pandemic caused a significant change in the telcos’ thinking, right? Fortunately, because they had already started on a virtualization and open-source route, you heard from Android, and you heard from Deutsche Telekom, and you heard from Achronix, all of the operators were able to handle the change in the network traffic, change in the network, traffic direction, SLS workloads, etc., right? All because of the _softwarization_ as we call it on the network. - -Given the pandemic, I think the first challenge for them was, can the network hold up? And the answer is, yes. Right? All the work-from-home and all these video recordings, we have to hang out with the web, that was number one. - -Number two is it’s good to hold up the network, but did I end up spending millions and millions of dollars for operational expenditures? And the answer to that is no, especially for the telcos who have embraced an open-source ecosystem, right? So people who have deployed projects like SDN or ONAP or automation and orchestration or closed-loop controls, they automatically configure and reconfigure based on workloads and services and traffic, right? And that does not require manual labor, right? Tremendous amounts of costs were saved from an opex perspective, right? - -For operators who are still in the old mindset have significantly increased their opex, and what that has caused is a real strain on their budget sheets. - -So those were the 2 big things that we felt were challenges, but have been solved. Going forward, now it’s just a quick rollout/build-out of 5G, expanding 5G to Edge, and then partnering with the public cloud providers, at least, here in the US to bring the cloud-native solutions to market. - -**Swapnil Bhartiya: Awesome. Now, Arpit, if I’m not wrong, LF Edge is I think, going to celebrate its second anniversary in January. What do you feel the product has achieved so far? What are its accomplishments? And what are some challenges that the project still has to tackle?** - -**Arpit Joshipura:** Let me start off with the most important accomplishment as a community and that is terminology. We have a project called State of the Edge and we just issued a white paper, which outlines terminology, terms and definitions of what Edge is because, historically, people use terms like thin edge, thick edge, cloud edge, far edge, near edge and blah, blah, blah. They’re all relative terms. Okay. It’s an edge in relation to who I am. - -Instead of that, the paper now defines absolute terms. If I give you a quick example, there are really 2 kinds of edges. There’s a device edge, and then there is a service provider edge. A device edge is really controlled by the operator, by the end user, I should say. Service provider edge is really shared as a service and the last mile typically separates them. - -Now, if you double click on each of these categories, then you have several incarnations of an edge. You can have an extremely constrained edge, microcontrollers, etc., mostly manufacturing, IIoT type. You could have a smart device edge like gateways, etc. Or you could have an on-prem silver type device edge. Either way, an end user controls that edge versus the other edge. Whether it’s on the radio-based stations or in a smart central office, the operator controls it. So that’s kind of the first accomplishment, right? Standardizing on terminology. - -The second big Edge accomplishment is around 2 projects: Akraino and EdgeX Foundry. These are stage 3 mature projects. They have come out with significant [results]. Akraino, for example, has come out with 20 plus blueprints. These are blueprints that actually can be deployed today, right? Just to refresh, a blueprint is a declarative configuration that has everything from end to end to solve a particular use case. So things like connected classrooms, AR/VR, connected cars, right? Network cloud, smart factories, smart cities, etc. So all these are available today. - -EdgeX is the IoT framework for an industrial setup, and that’s kind of the most downloaded. Those 2 projects, along with Fledge, EVE, Baetyl, Home Edge, Open Horizon, security advanced onboarding, NSoT, right? Very, very strong growth over 200% growth in terms of contributions. Huge growth in membership, huge growth in new projects and the community overall. We’re seeing that Edge is really picking up great. Remember, I told you Edge is 4 times the size of the cloud. So, everybody is in it. - -**Swapnil Bhartiya: Now, the second part of the question was also some of the challenges that are still there. You talked about accomplishment. What are the problems that you see that you still think that the project has to solve for the industry and the community?** - -**Arpit Joshipura:** The fundamental challenge that remains is we’re still working as a community in different markets. I think the vendor ecosystem is trying to figure out who is the customer and who is the provider, right? Think of it this way: a carrier, for example, AT&T, could be a provider to a manufacturing factory, who actually could consume something from a provider, and then ship it to an end user. So, there’s like a value shift, if you may, in the business world, on who gets the cut, if you may. That’s still a challenge. People are trying to figure out, I think people who are going to be quick to define, solve and implement solutions using open technology will probably turn out to be winners. - -People who will just do analysis per analysis will be left behind like any other industry. I think that is kind of fundamentally number one. And number two, I think the speed at which we want to solve things. The pandemic has just accelerated the need for Edge and 5G. I think people are just eager to get gaming with low latency, get manufacturing, predictive maintenance with low latency, home surveillance with low latency, connected cars, autonomous driving, all the classroom use cases. They should have been done next year, but because of the pandemic, it just got accelerated. --------------------------------------------------------------------------------- - -via: https://www.linux.com/interviews/telcos-move-from-black-boxes-to-open-source/ - -作者:[Swapnil Bhartiya][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://www.linux.com/author/swapnil/ -[b]: https://github.com/lujun9972 diff --git a/sources/talk/20201010 5 qualities of great open source developer advocates.md b/sources/talk/20201010 5 qualities of great open source developer advocates.md deleted file mode 100644 index e8c7e8d9f5..0000000000 --- a/sources/talk/20201010 5 qualities of great open source developer advocates.md +++ /dev/null @@ -1,91 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (5 qualities of great open source developer advocates) -[#]: via: (https://opensource.com/article/20/10/open-source-developer-advocates) -[#]: author: (Jason Blais https://opensource.com/users/jasonblais) - -5 qualities of great open source developer advocates -====== -Whether you're looking to hire a developer advocate or become one, here -are the qualities to aim for. -![Women talking][1] - -The developer relations job category is less than 10 years old, and [the developer advocate role is even newer][2]. In essence, developer advocates represent the voice of the user—in this case, that's usually the developer—internally to the company and the voice of the company externally to the community. - -[Mattermost][3] depends on its developer advocates to be the bridge between the community and the organization. At Mattermost, a developer advocate's three primary areas of responsibility are: - - * Raising awareness among developers about the open source project, including educating users and helping them get the most out of the platform - * Building strong relationships with users across open source and developer communities - * Advocating for users internally with the product team by sharing the community's feedback and challenges - - - -Not everyone is cut out to succeed as an open source developer advocate. With that in mind, here are the top five qualities we've identified in outstanding developer advocates. - -### 1\. A genuine passion for helping others - -Developer advocates often start as developers or in other highly technical roles. They excel at their job but get less pleasure from creating solutions than they do by helping others do the same. - -Over time, they turn this enthusiasm into enabling and empowering other developers to be successful. They naturally evolve into developer advocates by educating and helping users get the most out of the platforms they're working with. - -Passion is one of the most important qualities of a developer advocate. To advocate for the user both internally and externally, they must put the user and the community first. This does not happen without genuine motivation to help others succeed. - -### 2\. An authentic communication style - -An outstanding developer advocate has a passion for writing and talking about technology—whether they're solving technical challenges, providing knowledge about specific frameworks (e.g., Kubernetes), or sharing solutions built on top of a platform. - -But when they share their knowledge, they must be careful not to be perceived as promoting a specific platform or product. If any group is turned off by inauthentic marketing, [it is developers][4]. Developer relations is [not the same as developer marketing][5]. That is why authenticity is critical when connecting with developer communities—particularly in open source. - -Combining these creates an authentic communicator who captures developers' attention and pulls people in. That engagement enables them to raise awareness, educate to help users get the most out of the platform, and build strong relationships with users—the three main areas that developer advocates own. - -### 3\. A natural flair for building relationships - -Developer advocates are typically extroverts. Through their authenticity and passion for helping others, they can build strong relationships with users and members of the community. - -The truly outstanding advocates have a natural flair for creating connections through their superb networking skills. They also know where the communities exist, whether it's Reddit, Twitter, meetup groups, forums, or chat channels. - -Why is having a natural flair for creating relationships so important? - -First, developer advocates bring their existing connections to developers and open source communities when they join a team. Second, they come in knowing the right social media and developer channels to reach developers and open source users. Finally, they create new relationships with community influencers and open source leaders that can give your platform an opportunity to grow rapidly. - -### 4\. A personal investment in the community - -As I mentioned, developer advocates are not only the advocates of users internally; they are also the voice of the company externally to the community. This allows them to develop their own personal brand and "street cred" that they will carry with them after they move on to another company or community. - -When a developer advocate cares about their personal brand and has a personal investment in what they do, they are typically more motivated. Not only are they responsible for cultivating the company's brand, but they are also putting their own reputation on the line. This can be frightening to some. But those who are brave and willing to personally commit have the edge needed to excel as a developer advocate. - -As a side note, developer advocates who are employed by the company they're advocating for should work as part of the community and put the community ahead of themselves. They must be willing to continuously learn from and with the community, be a team player, and never put their own brand ahead of the company or community. - -### 5\. Technical sharpness - -The final key attribute of great developer advocates is their technical sharpness. Are they knowledgeable about cutting-edge technologies, languages, and frameworks? Do they learn technologies and tools easily? Are they self-taught, self-resourced learners? - -Since other developers will look to them for guidance, it is important for developer advocates to be highly technical with several years of relevant experience in software development or DevOps. Without already being a developer (or otherwise highly technical), it would be difficult to really understand the developer mindset and know what tickles their curiosity. - -### Other characteristics - -These five qualities—a genuine passion for helping others, authentic communication capabilities, a natural flair for building relationships, a personal investment, and technical sharpness—are Mattermost's core characteristics in outstanding open source developer advocates. Are there any other must-have qualities I've missed? Let me know in the comments! - -_Thank you to Justin Reynolds for the valuable edits on this article._ - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/10/open-source-developer-advocates - -作者:[Jason Blais][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/jasonblais -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/conversation-interview-mentor.png?itok=HjoOPcrB (Women talking) -[2]: https://medium.com/@ashleymcnamara/what-is-developer-advocacy-3a92442b627c -[3]: http://mattermost.com/ -[4]: https://hackernoon.com/developer-marketing-allergies-authenticity-622014fdebfb -[5]: https://medium.com/@aspleenic/developer-relations-and-developer-marketing-they-arent-the-same-thing-35b896159825 diff --git a/sources/talk/20201016 Is open source a development model, business model, or something else.md b/sources/talk/20201016 Is open source a development model, business model, or something else.md deleted file mode 100644 index 26e8cd7e02..0000000000 --- a/sources/talk/20201016 Is open source a development model, business model, or something else.md +++ /dev/null @@ -1,130 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Is open source a development model, business model, or something else?) -[#]: via: (https://opensource.com/article/20/10/open-source-supply-chain) -[#]: author: (Scott McCarty https://opensource.com/users/fatherlinux) - -Is open source a development model, business model, or something else? -====== -Instead of asking whether open source is a development model or a -business model, start thinking about it as a supply chain for your -products. -![Net catching 1s and 0s or data in the clouds][1] - -The term "open source" was coined in 1998 at a strategy session held by [Open Source Initiative][2] (OSI). The OSI maintains the [Open Source Definition][3] (OSD), which places mandates on the distribution terms of any software that claims to be open source. The OSI also maintains a curated list of official [open source licenses][4] that meet these guidelines. - -The OSD gives a clear definition of what open source software _is_, but doesn't provide much insight into how the adoption of open source affects a company's ability to build and deliver products or services that people want and need. Stated another way, there's still tremendous debate about the best ways to build a business based on open source. - -In this first of a multi-part series, I will lay the groundwork for understanding what products are, what product managers do, and how open source can be considered a supply chain. In future articles, I will go deeper into each of these topics, but I'll start by dissecting some common, but fundamentally confusing vocabulary. - -### Development model or business model? - -Open source adoption is common in products and solutions, but the verdict is out on what this truly means for product teams. Is open source a software development model or a business model? Even today, there are huge debates in open source circles. - -People who think of open source [as a development model][5] emphasize collaboration, the decentralized nature in which code is written, and the licenses under which that code is released. Those who think of open source [as a business model][6] discuss monetization through support, services, software-as-a-service, paid features, and even in the context of inexpensive marketing or advertising. While there are surely valid arguments on both sides, neither of these models has ever satisfied everyone. Perhaps it's because we've never fully considered open source in the historical context of software products and their practical construction. - -> Instead of thinking about open source as a development model or a business model, perhaps companies should think in terms of a supply chain from which they can purchase technology. - -A [supply chain][7] includes the organizations, people, activities, information, and resources needed to create any product or service. This includes products as simple as a wool coat or as complex as an open source software project with thousands of dependencies. In [_The Wealth of Nations_][8], the father of economics, [Adam Smith][9], describes the supply chain for a wool coat: - -> "The shepherd, the sorter of the wool, the wool-comber or carder, the dyer, the scribbler, the spinner, the weaver, the fuller, the dresser, with many others, must all join their different arts in order to complete even this homely production." - -![Wool coat supply chain][10] - -(Scott McCarty, [CC BY-SA 4.0][11]) - -Most of us probably haven't heard of the roles involved in the supply chain for a wool coat, but one thing is obvious: divisions of labor and collaboration are keys to a healthy supply chain, especially with open source. - -### Product or project? - -If you accept that open source is a supply chain for building solutions, this leads to another misunderstanding around projects and products. Paul Cormier, Red Hat's CEO, makes a pragmatic distinction between [open source _projects_ and open source _products_][12]. While I agree with Paul, I am obliged to confess that most of the world doesn't recognize this crisp distinction. In 20 years of conversations with customers, partners, users, contributors, analysts, journalists, and even my own family, most people use the words _project_ and _product_ interchangeably. - -I'll attempt to bring clarity by proposing a simple definition: Products are things that people buy with currency, while projects are things people participate in, contribute to, or use. That gets part of the way to a better definition, but to truly understand, you need to define what a product _is_ in order to clearly see what a project _isn't_. - -Software products, like any other products or services, have a whole host of activities required to bring them to market. They have business plans, pricing and packaging, positioning and messaging, distribution strategies, sales enablement, portfolio alignment, build/buy/partner decisions, and roadmaps. The teams managing these products conduct focus groups, analyze addressable markets, brief journalists and analysts about how their products fit into the marketplace, walk customers through roadmaps, and, most importantly, define those roadmaps based on the needs of paying customers. Product teams spend a lot of time and money understanding their customers' problems, but this is rarely the work output of community members. - -Product teams have a fundamental choice about which suppliers they use in their products. This could mean using two, three, four, or even 10 different upstream projects in a product. It could also mean switching upstream projects when they no longer meet the needs of the customers buying the product. Finally, it could also mean positioning a partner's solution or different parts of the product portfolio to fill in gaps (i.e., address customer needs with solutions). The product team can also decide to use open source as one part of the supply chain and proprietary software as another part, thereby differentiating the product from the project. They can even make their product available only as a service; this is the power of pricing and packaging. - -Nearly all products are built by adding a layer of differentiated value to a set of commodity components that are provided by suppliers. This is true, whether they're built on open source or proprietary components. Stated another way, upstream suppliers cannot provide the same solution as downstream products. When upstream projects and downstream products tackle the exact same business problem, there is low differentiation, which creates challenges. This is akin to upstream suppliers and the downstream product company both selling tires—the upstream supplier needs to sell tires, and the downstream product company needs to sell vehicles. - -> A lack of differentiation between the supply-chain components and the downstream product is where open source companies run into problems. - -Everyday, product teams have to make pricing, packaging, build, buy, partner, and roadmap decisions driven by paying customers. This is what provides differentiation to a product and makes it fundamentally different from a community-driven, open source project. - -### Buying from the open source supply chain - -Open source technology is free as in speech, not "free as in beer." Anyone can download and use open source software pretty much however they want, but as soon as you sell a product that uses open source, you have a responsibility to the customer. That responsibility includes things like verifying the software is always patched, secure, and runs well. A product team has a commitment to the customers and is responsible for every component chosen in the supply chain. - -![Stephen Walli tweet about open source business models][13] - -(Scott McCarty, [CC BY-SA 4.0][11]) - -Stated another way, building a product on open source software is not free. It costs [either time or money][14], and everyone knows time is money, so these are essentially the same thing. Therefore, it's genuinely correct to use the word "buy" to describe the relationship between product teams and the upstream open source projects that supply technology for those products. - -From the perspective of the product team, each upstream project can be thought of as a supplier. The product team can "buy" from the open source suppliers by contributing the time and energy of engineers, documentation writers, testers, etc. Since time is money, every hour spent on upstream work can be measured in dollars. - -This cost of consuming from the open source supply chain exists whether your organization is selling a _product_ based on open source or building a _solution_ for internal consumption. Building anything on open source comes with an implicit responsibility for the components selected and used. But, unlike a traditional supply chain, a dollar may not be a dollar (fill in your currency of choice). - -Every dollar invested in an open source supply chain purchase might return $2, $3, or even $10 of value in return. The return on investment can be higher because other people and companies are also contributing value, as well as a diversity of ideas. Everyone who consumes from an open source supply chain inherits the total value. If the community is healthy, the value received is far above and beyond the contributions made. - -There's another hidden benefit to purchasing from open source suppliers. Unlike traditional suppliers, community-driven, open source projects are not profit-driven entities with sales, marketing, and go-to-market costs. This is akin to buying from non-profit entities, but, once again, it's not "free as in beer." There's definitely a cost associated with purchasing from an open source supply chain and, in turn, providing a product to your customers. - -### A better metaphor for products - -Perhaps no one has ever taken a product-centric view of open source because it grew up alongside the internet and the dot-com boom. This was a time of throwing money at ideas without having much of a business plan. Attempts to apply traditional business understanding _post facto_ have led to debate over the definition of open source versus [open core][15], as well as the roles and responsibilities of product teams. The software industry, and open source, in particular, has been notoriously confused about aligning product management and upstream engineering. The blurry line between project and product has even led to misunderstandings about what features upstream projects should focus on versus the downstream products. - -Working as a member of the product team driving the roadmap for arguably the largest open source product in the world, Red Hat Enterprise Linux, I'd like to humbly propose a new paradigm within which to think about open source software: - -> **Open source is a supply chain model.** - -It's not a huge intellectual leap, but this has profound implications on discussions, debates, and cognitive load when thinking about products that leverage open source. - -### Capturing value with open source - -In recent years, arguments have been put forth asserting that there [can only ever be one Red Hat][16]; the narrative implies that only one company can grow into a multi-billion dollar business by selling support. This narrative is problematic because Red Hat doesn't make money from support, and it might even be argued that [Red Hat Network][17] was the first SaaS of open source. Second, other companies like SUSE, Cloudera, and Chef have captured quite a bit of value. Finally, many businesses start with a SaaS model and extend into adjacent on-premises businesses, like [CloudBees][18]. - -All of these companies have been able to successfully use open source as a supply chain to create value while simultaneously capturing value by satisfying complex business problems that are not solved by the upstream project alone. Fundamentally, SaaS and hardware/software combinations are no different, although it might be argued that they are easier to monetize. - -Fellow product managers, I urge you to start thinking about open source projects as a supply chain for your products. It will give you new clarity in making product-driven decisions and focusing on business needs instead of technology. With all supply chains, product managers have to treat their suppliers fairly. For example, downstream product teams can't tell upstream suppliers what to do. Downstream product teams also have to pay suppliers enough to keep them in business and continue to supply technology. These are just two examples of the clarity that comes from treating upstream, open source projects as suppliers, and it keeps the relationship much healthier. - -![Linux supply chain][19] - -(Scott McCarty, [CC BY-SA 4.0][11]) - -There's a saying in music: _It's not the notes you play, but the notes you don't play._ Constraints breed creativity. If you know you can't differentiate your product based on the code from your upstream suppliers, your product team has to get creative. You have to identify other value worth purchasing. I'll dig into this later in the series; in the next article, I'll add clarity to the scope of what an open source product is and how to create value with it. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/10/open-source-supply-chain - -作者:[Scott McCarty][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/fatherlinux -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/data_analytics_cloud.png?itok=eE4uIoaB (Net catching 1s and 0s or data in the clouds) -[2]: https://opensource.org/ -[3]: https://opensource.org/osd -[4]: https://opensource.org/licenses/alphabetical -[5]: https://en.wikipedia.org/wiki/Open-source_model -[6]: https://opensource.com/article/17/12/open-source-business-models -[7]: https://en.wikipedia.org/wiki/Supply_chain -[8]: https://en.wikipedia.org/wiki/The_Wealth_of_Nations -[9]: https://en.wikipedia.org/wiki/Adam_Smith -[10]: https://opensource.com/sites/default/files/uploads/wool_coat_supply_chain.png (Wool coat supply chain) -[11]: https://creativecommons.org/licenses/by-sa/4.0/ -[12]: https://siliconangle.com/2019/05/10/red-hat-talks-project-vs-product-in-enterprise-open-source-rhsummit/ -[13]: https://opensource.com/sites/default/files/uploads/tweet.png (Stephen Walli tweet about open source business models) -[14]: https://twitter.com/stephenrwalli/status/1147205594966663168 -[15]: https://medium.com/open-consensus/2-open-core-definition-examples-tradeoffs-e4d0c044da7c -[16]: https://techcrunch.com/2014/02/13/please-dont-tell-me-you-want-to-be-the-next-red-hat/ -[17]: https://en.wikipedia.org/wiki/Red_Hat_Network -[18]: https://www.cloudbees.com/blog/enhanced-pricing-and-packaging-cloudbees-platform -[19]: https://opensource.com/sites/default/files/uploads/linux_supply_chain.png (Linux supply chain) diff --git a/sources/talk/20201021 How anyone can contribute to open source software in their job.md b/sources/talk/20201021 How anyone can contribute to open source software in their job.md deleted file mode 100644 index 3ae4fbf8ca..0000000000 --- a/sources/talk/20201021 How anyone can contribute to open source software in their job.md +++ /dev/null @@ -1,77 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (How anyone can contribute to open source software in their job) -[#]: via: (https://opensource.com/article/20/10/open-your-job) -[#]: author: (Catherine Robson https://opensource.com/users/crobson) - -How anyone can contribute to open source software in their job -====== -Open your job, and you'll open opportunities for software developers to -build applications that meet your needs. -![Active listening in a meeting is a skill][1] - -Imagine a world where your software works perfectly for you. It meets your needs, does things your way, and is the ideal tool to achieve great things toward your goals. - -Open source software stems from these roots. Many projects are built by engineers that have a problem and build a solution to solve it. Then they openly share their solution with others to use and improve. - -Unfortunately, building software is hard. Not everyone has the expertise to build software that works perfectly for their needs. And if the software developers building applications don't fully understand users' needs and how they do their job, the solutions they build may not meet the users' needs and may accidentally create a lot of gaps. - -I recently encountered an example of this at my dentist's office. As I was waiting in the chair, I couldn't help but notice how long the dental hygienist was taking to punch around in the software to get ready for the dentist's examination. So I asked her, "Do you feel like this software meets your needs?" She replied, "No! It's so complex, and what I actually need is never where I need it!" - -Part of the problem is that the people who built this software are probably not dentists, dental hygienists, or have any experience with a dentist other than as a patient in the chair. Many software companies have roles to help fill those gaps—product managers, product and market analysts, researchers, and others are meant to help gather requirements that tell development teams what to build. - -But we all know about learning a new domain. There's learning it from the outside, casually understanding it; then there's learning it from the inside, living it day-to-day, and really knowing it as an expert. The closer the development team can get to the real, "living it" experience, the better decisions they will make when they build software for specific users and domains. - -Open source has an ethos of sharing the work being done. Now I think it is time to evolve open source to the next level: sharing work that _needs to be_ done. Domain experts (i.e., the eventual users) need to share information about what they need to do their job so that open source developers can build software to meet their needs. - -This might sound overwhelming if you're not a software developer. Contributing to open source means that you need to write code, understand [Git][2], or cross other technical hurdles, right? Not necessarily; contributing your domain expertise is an important part of open source development. - -And you can use the tools you already have. You're already on social media. You probably have access to a word processor of some kind. And you have a work environment that can be shared openly (even in COVID times, thanks to technology). - -### Three steps to opening your job - -The following steps can help you open your job so software developers can learn your domain, understand your job and pain points, and build software that works better for you. - -#### 1\. Invite software builders into your work environment - -An ethnographic study is where parts of the software team shadow you in your job. You'll be asked to do everything you normally do on a workday, just as you always do it. Like a "fly on the wall," the software team is there to observe and understand how you do what you do. They might debrief with you throughout the day to get more insights into why you did certain things. Overall, this is meant to be non-invasive for you but very informative for the team. - -#### 2\. Share writeups about your job with software builders - -Far too often in the software industry, we focus on the software, not its use. As an example, a software requirement may come in as: "Show the history of dental work done to a tooth." This assumes that the software is required to do this job and that this history is useful no matter where it's shown in the software. - -Instead, developers need to back up and make sure they understand the job functions thoroughly. For example, a requirement could say: "A patient has a tooth with a cavity that was found during routine cleaning. While the patient is still there, the dentist needs to know what else has been done to the tooth to be able to prescribe a solution to the patient." By knowing the job that needs to be done, the software developer can build software that enables easy selection of the tooth in question, mid-exam, with gloves on. Therefore, this information should be available while in the "routine cleaning" view. - -Writing up your intent and context while you're using the software, rather than the tasks you do, can help software developers build to meet your true needs. - -If you want to go deeper, look at the [Jobs To Be Done][3] (JTBD) framework as a way to convey your expertise to software teams. - -#### 3\. Use social media to share videos, explanations, and more about your job - -Use the social media platform of your choice (e.g., YouTube, Reddit, etc.) to share information about your job. Recording and sharing a "day in the life" video openly could greatly help development teams really understand what you do and how you do it so that they can create software that serves your needs. - -### Open opportunities - -Open your job, and you'll open opportunities for software developers to build better software! Let's bring open source to the next level together by sharing more about what you need. - -You don't need to be a master coder to contribute to open source. Jade Wang shares 8 ways you can... - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/10/open-your-job - -作者:[Catherine Robson][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/crobson -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/team-discussion-mac-laptop-stickers.png?itok=AThobsFH (Active listening in a meeting is a skill) -[2]: https://opensource.com/resources/what-is-git -[3]: https://www.google.com/books/edition/The_Jobs_To_Be_Done_Playbook/1vHRDwAAQBAJ?hl=en&gbpv=1&printsec=frontcover diff --git a/sources/talk/20201023 Why it-s important to keep the cloud open.md b/sources/talk/20201023 Why it-s important to keep the cloud open.md deleted file mode 100644 index 446eceb61b..0000000000 --- a/sources/talk/20201023 Why it-s important to keep the cloud open.md +++ /dev/null @@ -1,87 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Why it's important to keep the cloud open) -[#]: via: (https://opensource.com/article/20/10/keep-cloud-open) -[#]: author: (Seth Kenlon https://opensource.com/users/seth) - -Why it's important to keep the cloud open -====== -An open cloud helps developers maintain autonomy and security while -taking advantage of the power and reach of the cloud. -![Sky with clouds and grass][1] - -There's a famous sticker featured on many laptop lids; it goes something like this: "the 'cloud' is just somebody else's computer." - -There's a lot of truth to that sentiment, but it's not exactly technically accurate. In fact, cloud computing isn't just somebody else's computer; it's somebody else's _hundreds and thousands_ of computers. - -Years ago, "the cloud" did indeed just refer to the simplified graphic in a flowchart, so the illustrator didn't have to try to accurately depict the multiple networks that comprise the World Wide Web. Now, however, the cloud isn't just describing traffic or small-time remote file storage offers. The cloud of today is a _platform_ of interconnected computational nodes working together to keep containerized Linux images, each running a distinct service (or "microservice" in developer lingo), functioning as applications distributed over the whole world. - -The cloud is a computer, no different in theory than the device you're reading this article on, but very different in construction. For instance, you don't own the cloud. You might wonder how such a concept can possibly be compatible with the idea of open source and free software, methods of computing in which the user famously owns the software they run. Surely you can't own software when you don't even own the device it's installed on? - -### Open source and the cloud - -For several years now, the Internet has been something of a software neutral zone. The model of the Internet isn't the same as "traditional" software in which there's a one-to-one, or maybe a one-per-family, relationship between the app and the user. The Internet is built of servers, which run services intended for multiple users. You sign up for an account on a site, and, in the best-case scenario, you more or less "own" your user account and data, but you don't own the site. You can't stop your Internet service and bring up the website on your computer. The software "lives" on a server somewhere. Even when the software is open source, such as WordPress or Drupal, and even if you download it and install it locally on your own computer, you still don't possess the instance you created an account on. - -For this reason, even users very conscious of the threat of non-open software tend to overlook the question of software on the Internet. It can be increasingly difficult to recognize the importance of open source when even popular open source projects are hosted on Github (which uses a non-open web stack), Slack, or Discord instead of [Mattermost][2] or [Matrix][3] for chat; Google Docs instead of [Etherpad][4] for collaboration; Trello instead of [Phabricator][5] for [project management][6]; Jira for bug tracking; Gmail for communication, and so on. For as much as open source has won within software development and server hosting, it seems to willingly lock itself inside proprietary infrastructure. - -### Why the cloud is so powerful - -The problem doesn't end with infrastructure. The reason open source projects are locking themselves into proprietary systems for support is that the cloud itself is the computer, and the computer powered by the cloud is a lot more powerful than any developer's workstation. Not only does it have more processing power, but it also has a greater reach. An application you develop to run on the cloud can serve millions of users without even one of them having to figure out how to download and install anything. Your users just launch a browser and use your app, on any device, without even worrying about whether their device is powerful enough for the task they need to be done. - -The cloud just makes sense, for computation, for delivery, and even for marketing. The problem is, it doesn't make any sense for open source. And that's why the cloud is no longer enough. The cloud needs to be upgraded to an open hybrid cloud. - -### What is an open hybrid cloud? - -When people talked about "the cloud" many years ago, it referred to the network serving as the computer. It was even then an old idea, but it was only just being realized. But because the network was the computer, the natural and correct assumption was that most users wouldn't own the computer; they'd only log in with client machines. And that's exactly the form it has taken—you own a device that browses to a cloud owned by Google, Microsoft, or Amazon. - -This came to be known as the public cloud because the infrastructure running the cloud is available to the general public. You can buy time on several public clouds, interact with it through Kubernetes, and develop apps for Linux containers. - -It didn't take long for individual companies to build private clouds—an infrastructure available only to their employees and clients. This ensured that important data remained under their control, and it often cost less than buying time on someone else's infrastructure. - -A hybrid cloud combines these two concepts—you maintain a private cloud for your own use, and you use a public cloud to provide services you can't run only privately. An open hybrid cloud is a hybrid cloud built on open source, whether it's OKD, OpenShift, Kubernetes, RHEL, Debian, Alpine, Podman, Docker, Ansible, or custom scripts. - -### Getting an open hybrid cloud - -The cloud is powerful, so it stands to reason that it can actually help solve a little problem like ensuring user independence. It doesn't happen overnight, though, and the proprietary cloud is already entrenched in services used by millions. So, as an open source enthusiast, what can you do to promote the open hybrid cloud? - -### Don't settle for closed clouds - -If you're a developer, seek out an open hybrid cloud when you're looking for a platform to build upon. If you can't find one within your price range and you can't build a small one, then support open stacks. Look at the services your project relies upon and make sure you can reimplement the stack, should you need to. - -### Use open source online - -As a user, look for [federated systems][7] for social media, and look for open source platforms like WordPress, Drupal, Nextcloud, Etherpad, EtherCalc, and others, for online collaboration. You're not running the instance you're using, but at least you know that the code is auditable and that you're not supporting an environment that forces developers to contribute to proprietary software. - -### Data liberation - -Whether or not the environment is open source, ensure that important data is secure and can be exported. We're well into the 21st century, so there's no excuse for a website to gather data about without proper encryption and no excuse to withhold your data from you. You should be able to export anything you put _into_ a site for your own backups. - -### Be open - -In an open hybrid cloud, you own your development environment and your data, and you maintain your autonomy the same way you do with a laptop running [Linux][8] or [BSD][9]. Cloud computing is the future. Let's work together to make sure the future is open. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/10/keep-cloud-open - -作者:[Seth Kenlon][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/seth -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/bus-cloud.png?itok=vz0PIDDS (Sky with clouds and grass) -[2]: http://mattermost.com -[3]: http://matrix.org -[4]: http://etherpad.org -[5]: https://www.phacility.com/phabricator/ -[6]: https://opensource.com/alternatives/trello -[7]: https://opensource.com/article/17/4/guide-to-mastodon -[8]: https://opensource.com/resources/linux -[9]: https://opensource.com/article/20/5/furybsd-linux diff --git a/sources/talk/20201027 How to define a product in the open source software supply chain.md b/sources/talk/20201027 How to define a product in the open source software supply chain.md deleted file mode 100644 index 8a13a06eeb..0000000000 --- a/sources/talk/20201027 How to define a product in the open source software supply chain.md +++ /dev/null @@ -1,75 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (How to define a product in the open source software supply chain) -[#]: via: (https://opensource.com/article/20/10/defining-product-open-source) -[#]: author: (Scott McCarty https://opensource.com/users/fatherlinux) - -How to define a product in the open source software supply chain -====== -Differentiation is what makes a product successful. Learn more in part -two of this series on open source in the software supply chain. -![Gift box opens with colors coming out][1] - -In the first article in this series, "[Is open source a development model, business model, or something else?][2]" I introduced the concept that open source is part of the supply chain for software products. But to truly understand open source as a supply chain, you must have a decent understanding of what a product is. A product can be thought of as a business, and as legendary business guru [Peter Drucker][3] said, "The purpose of business is to create and keep a customer." Drucker's statement means a business or product must be useful enough to pay for, or it will fail. Product differentiation is the thing that creates and retains customers. - -### What's in a software product? - -Even in the stone age of 1999, when I started my career, the concept of software products existed—you could go to a store and purchase boxed copies of Red Hat Linux on compact discs (though floppies were still very much in use). The idea of software products existing might sound like a joke, and it is, but in the 1940s and 1950s (when computers, as we know them, were created), software was not a component of value that was bought and sold. There was no market for software. You couldn't buy it, sell it, or access it online. - -Instead of buying software, the choice was to build or buy a physical computer; with either option, you wrote the software yourself for that specific computer. - -> _That… specific… computer…_ - -No joke. In the early days of computers, software couldn't run anywhere except for the computer you wrote it on. In fact, in the early days, you couldn't even use the same programming language on two different computers. But, as computers evolved, system software, such as operating systems, assemblers, and compilers, were created. And with the advent of this system software, application code became more reusable and portable. - -In the 1960s, cross-platform compilers and operating systems led to the concept of reusable code, such as macros and eventually libraries. At the beginning of every project, you built your own reusable functions and libraries. (Computer science courses still force you to do this so that you learn what's going on behind the scenes.) Concurrently, processors and operating systems standardized, enabling portability between computers. - -In the early days, these components were used within single organizations (e.g., a government, university, company, etc.), but the desire to share software among organizations emerged quickly. If you're interested in understanding the history of code portability from the first computers to containers, see "Fatherlinux's" [Container portability][4] series or the [History of compiler construction][5] Wikipedia page. Suffice to say, code had to be portable before anyone could have software products, open source or even containers. - -### Reusable and portable software - -Once code became portable and shareable between organizations, the next logical step was to sell it. In these early days, having software that did _something useful_ was differentiating in the marketplace. This was a breakthrough because if you needed a calculator, a compiler, or a piece of word processing software, it became cheaper and easier to buy it than to write it. So software products were born. - -This model really only worked to tackle general-purpose problems that a lot of people share—things like calculating numbers, writing documents, or compiling software; these are business problems. General-purpose software is great, but it doesn't elegantly solve specific problems related to business rules within a single industry or organization, although you can abuse Excel or Google Sheets pretty hard. For specific business problems, it's more efficient to write custom code. This need led to the rise of middleware, things like Java, service buses, and databases. Middleware was bought and sold to assist with custom software development. - -Code portability led to a marketplace for software applications and middleware. Software companies began to provide competing solutions with differentiated value. You picked the compiler or the calculator that you wanted based on features. The existence of competing solutions was great for consumers because it drove software companies to create more specialized solutions, each with unique value. Whether a product is built on open source or not, it must provide unique value in the marketplace. - -### Understanding differentiated value - -To explain differentiated value, I'll use an analogy about automobiles. Families need cars, sport utility vehicles (SUVs), or minivans. They might want comfortable seats, infotainment systems, or safety features. They often have a preference on color. Each family is different and has specific needs, so the perfect automobile would be one that the family built together as a project. - -Most families don't have the time, desire, money, or credit to buy all of the components necessary to build the perfect car from scratch, much less the time to maintain it over a given lifecycle. It wouldn't be an economical investment of time or money for a family. It would cost them way more, and take a long time to build. Instead, families buy automobiles from existing vendors, as a built solution to their transportation problem. Although the bought car will be imperfect, it will approximately meet their needs with much less time and money invested. - -Automobile vendors put a solution together with undifferentiated and differentiated components. This includes everything from the motor, fuel injectors, tires, and seats in the car, to the buying experience at the dealership, the financing, and the service program while the car is owned. All of these features and experiences are a component of the solution that families buy when looking for an automobile. The combination of all these things is what produces something that is different and, hopefully, better in the marketplace. We call this _differentiation_. The more competing solutions, the more differentiation in the marketplace, and the better the chance that a family can find a car that matches their needs more approximately. - -### Differentiation in open source - -In a traditional manufactured product or service, there is a distinction between the value provided by the supplier and the value provided by the company selling directly to the consumer. You could make a further distinction between business-to-consumer (B2C) or business-to-business (B2B) products and services, but that's beyond the scope of this series. - -The astute reader may already be thinking, "yeah, but with traditional products, the suppliers are also companies selling products with differentiation." This is completely true, and in this way, open source projects are no different. Community-driven, open source projects don't have the advantage of expensive marketing campaigns, focus groups, and sales teams to educate customers, but they must also differentiate themselves in the marketplace. - -Differentiation is an important concept for product managers, developers, and even systems administrators. Even in a broader context, the output of any sort of knowledge work—code, writing, music, or art—differentiation is what brings value and meaning to our work. Differentiation is what creates value, whether it's a software product or service, labor, or even music. - -In the next article, I'll dive deeper into how software product teams differentiate their solutions from the open source components provided by their suppliers. We'll even cover software as a service (SaaS). - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/10/defining-product-open-source - -作者:[Scott McCarty][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/fatherlinux -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/OSDC_gift_giveaway_box_520x292.png?itok=w1YQhNH1 (Gift box opens with colors coming out) -[2]: https://opensource.com/article/20/10/open-source-supply-chain -[3]: https://en.wikipedia.org/wiki/Peter_Drucker -[4]: http://crunchtools.com/container-portability-part-1/ -[5]: https://en.wikipedia.org/wiki/History_of_compiler_construction diff --git a/sources/talk/20201028 A few things I-ve learned about email marketing.md b/sources/talk/20201028 A few things I-ve learned about email marketing.md deleted file mode 100644 index 4918d3dd3e..0000000000 --- a/sources/talk/20201028 A few things I-ve learned about email marketing.md +++ /dev/null @@ -1,139 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (A few things I've learned about email marketing) -[#]: via: (https://jvns.ca/blog/2020/10/28/a-few-things-i-ve-learned-about-email-marketing/) -[#]: author: (Julia Evans https://jvns.ca/) - -A few things I've learned about email marketing -====== - -Hello! I’ve been learning a lot about business over the last few years (it’s possible to make a living by helping people learn! it’s amazing!). One of the things I’ve found hardest to get my head around was email marketing. - -Like a lot of people, I get a lot of unwanted email, and at first I was really opposed to doing any kind of email marketing because I was worried I’d be the _source_ of that unwanted email. But I’ve learned how to do it in a way that feels good to me, and where the replies to my marketing emails are usually along the lines of “wow, I love this, thank you so much!”. ([literally: here are excerpts from the last 20 or so replies I’ve gotten][1]) - -I’m going to structure this as a series of beliefs I had about email marketing that turned out not to be universally true. - -### myth 1: selling things is an adversarial relationship - -I used to think that selling things was a sort of adversarial relationship: the person selling the product wants to convince the buyer (by any means necessary) to spend as much money as possible, and that people buying things are usually kind of resentful of anyone asking them to spend money. - -I’ve learned that actually a lot of people are happy (or even actively **want**) to spend money on something that will help them solve a problem they have. - -Here’s a silly example of something illustrating this: 2 years ago, we’d hired someone to paint our new apartment. We decided to paint a lot of the walls white, and we were stuck with the impossible problem of deciding which of the 10 billion possible shades of white to paint the walls. I found a $27 ebook called [white is complicated][2], and (long story short, this blog post is not about painting) it really helped me confidently choose a shade of white!! We spent thousands of dollars on painting, so $30 was a really good investment in making sure we’d be happy with the result. - -So even though $27 for an ebook on how to choose a white seems silly at first, I was really happy to spend the money, and my guess is a lot of other people who bought that ebook are as well. - -The bigger idea here is that it’s easier to run a business when you’re selling to people who are happy to buy things based on the value they’re getting from the product. In my case, I’ve found that there are lots of programmers who are happy to pay for clear, short, friendly explanations of concepts they need to understand for their jobs. - -### a quick note on how I learned these things: 30x500 - -I originally wrote this blog post about all these things I learned, and it kind of read like I figured out all of these things naturally over the course of running a business. But that’s not how it went at all! I’ve actually found it very hard to debug business problems on my own. A lot of the attitudes I had when I started out running a business were counterproductive (like thinking of selling something as an adversarial process), and I don’t know that many people who run similar businesses who I can get advice from. - -I learned how to think about selling things as a non-adversarial process (and everything else in this blog post, and a lot more) from [30x500][3], a business class by Amy Hoy ([her writing is here][4]) and [Alex Hillman][5] that I bought a couple of years ago. 30x500 is about running a specific kind of business (very briefly: sell to people who buy based on value, decide what to build by researching your audience, market by teaching people helpful things), which happens to be the exact kind of business that I run. It’s been a really great way to learn how to run my business better. - -Okay, back to my misconceptions about email marketing! - -### myth 2: sending email is inherently bad - -The next thing I believed was that sending email from a business was somehow inherently bad and that all marketing email was unwanted. - -I now realize this is untrue even for normal marketing emails – for example, lots of people subscribe to marketing newsletters for brands they like because they want to hear about new products when they come out & sales. - -But marketing emails aren’t just “not inherently bad”, they can actually be really useful! - -### marketing is about building trust - -When I started sending out business emails, I based them on the emails I was used to receiving – I’d announce new zines I’d written, and explain why the zine was useful. - -But what I’ve learned is that (at least for me) marketing isn’t about describing your product to the audience, **marketing is about building trust by helping people**. - -So, instead of just periodically emailing out “hey, here’s a new zine, here’s why it’s good”, my main marketing email list is called [saturday comics][6], and it sends you 1 email a week with a programming comic. - -What I like about this approach to marketing (“just help people learn things for free”) is that it’s literally just what I love doing anyway – I wrote this blog to help people learn things for free for years just because I think it’s fun to help people learn. - -And people love the Saturday Comics! And it makes money – I announce new zines to that list as well, and lots of people buy them. It’s really simple and nice! - -### myth 3: you have to trick people into signing up for your email marketing list - -One pattern I see a lot is that I sign up for some free service, and then I start getting deluged with marketing emails trying to convince me to upgrade to the paid tier or whatever. I used to think that this was how marketing emails **had** to work – you somehow get people’s email and then send them email, and hope that for some reason (???) they decide to buy things from you. - -But, of course, this isn’t true! If your marketing list is actually just full of genuinely helpful emails, and you can describe who it’s intended for clearly (give people a link to the archive to see if they like what they see!), then a lot of people will be happy to sign up and receive the emails! - -If you clearly communicate who your mailing list will help, then people can easily filter themselves in, and the only people on the list will be happy to be on the list. And then you don’t have to send any unwanted email at all! Hooray! - -Here’s one story that influenced how I think about this: once I sent an email to everyone who had bought a past zine saying “hey, I just released this other zine, maybe you want to buy it!”. And I got an angry reply from someone saying something like “why are you emailing me, I just bought that one thing from you, I don’t want you to keep emailing me about other things”. I decided that I agreed with that, and now I’m more careful about being clear about what kinds of emails people are opting into. - -### marketing is about communicating clearly & honestly - -One insight (from Alex Hillman) that helped me a lot recently was – when someone is dissatisfied with something they bought, it doesn’t always mean that the product is “bad”. Maybe the product is helpful to many other people! - -But it definitely means that the person’s expectations weren’t met. A tiny example: one of the few refund requests I’ve gotten for a zine was from someone from who expected there to be more information about sed in the zine, and they were disappointed there was only 1 page about sed. - -So if I communicate clearly & accurately what problems a product solves, who it’s for, and how it solves those problems, people are much more likely to be delighted when they buy it and be happy to buy from me again in the future!. For my zines specifically, I like to make the table of contents very easy to find so that people can see that there’s [1 page about sed][7] :) - -### myth 4: you have to constantly produce new emails - -I’ve tried and failed to start a lot of mailing lists. the pattern I kept getting stuck in was: - -I have an idea for a weekly mailing list I send 2 emails I give up forever - -This was partly because I thought that to have a weekly/biweekly mailing list, you have to write new emails every week. And some people definitely do mailing lists this way, like [Austin Kleon][8]. - -But I learned that there’s a different way to write a mailing list! Instead, you: - -put together a list of your best articles / comics / whatever when someone subscribes to that list, send them 1 email a week (or every 2 weeks, or whatever) with one article from the List Of Your Best Articles - -The point is most people in the world probably haven’t already read your best articles, and so if you just send them one article a week from that list, it’ll probably actually be MORE helpful to them than if you were writing a new article every week. And you don’t need to write any emails every week! - -I think this is called a “drip marketing campaign”, but when I search for that term I don’t find the results super helpful – there’s a lot out there about tools to do this, but as with anything I think the actual content of the emails is the most important thing. - -### myth 5: unsubscribes are the end of the world - -Another email marketing thing I used to get stressed out about was unsubscribes. It always feels a little sad to send an email about something I’m excited about and see 20 people unsubscribe immediately, even if it’s only 0.3% of people on the mailing list. - -But I know that I subscribe to mailing lists very liberally, even on topics that I’m not that interested in, and 70% of the time I decide that I’m not that interested in the topic and unsubscribe eventually. A small percentage of people unsubscribing really just isn’t that big of a deal. - -### myth 6: you need to optimize your open rates - -There are all kinds of analytics you can do with email marketing, like open rates. I love numbers and analyzing things, but so far I really haven’t found trying to A/B test or optimize my numbers to be that productive or healthy. I’d rather spend my energy on just writing more helpful things for people to read. - -The most important thing I’ve learned about website analytics is that it’s unproductive to look at random statistics like “the open rate on this email is 43% but the last one was 47%” and wonder what they mean. What _has_ been helpful has been coming up with a few specific questions that are important to me (“are people visiting this page from links on other sites, or only from my links?”) and keeping very rough track of the answers over time. - -So far I’ve really never used any of the tracking features of my email marketing software. The only thing I’ve done that I’ve found helpful is: sometimes when I release a new zine I’ll send out a discount code to people on the list, and I can tell if people bought the thing from the mailing list because they used the discount code. - -### it’s important to remember there are people on the other side - -The last thing that’s helped me is to remember that even though emailing thousands of people sometimes feels like a weird anonymous thing, there are a lot of very delightful people on the other side! So when I write emails, I usually try to imagine that I’m writing to some very nice person I met at a conference one time who told me that they like my blog. We’re not best friends, but they know my work to some extent, and they’re interested to hear what I have to say. - -I often like to remind people why they’re getting the email, especially if I haven’t emailed that list for a long time – “you signed up to get announcements when I release a new zine, so here’s an announcement!”. I think the technical email marketing term for this is a list being “cold” and “warm”, like if you don’t email a list for too long it’s “cold” and your subscribers might have forgotten that they’re on it. - -### that’s all! - -When I started, I was really convinced that email marketing was this terrible, awful thing that I could not do that mostly involved tricking people into getting emails they don’t want (ok, I’m exaggerating a bit, but I really struggled with it). But it’s possible to do it in a transparent way where I’m mostly just sending people helpful emails that they do want! - -The big surprise for me was that email marketing is not a monolithic thing. I have a lot of choices about how to do it, and if I don’t like the way someone else does email marketing, I can just make different choices when doing it myself! - --------------------------------------------------------------------------------- - -via: https://jvns.ca/blog/2020/10/28/a-few-things-i-ve-learned-about-email-marketing/ - -作者:[Julia Evans][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://jvns.ca/ -[b]: https://github.com/lujun9972 -[1]: https://gist.github.com/jvns/c2aaecbbbf60b7f3adf3e0be18d54a7b -[2]: https://mariakillam.com/product/white-is-complicated/ -[3]: https://30x500.com/academy/ -[4]: https://stackingthebricks.com/ -[5]: https://dangerouslyawesome.com -[6]: https://wizardzines.com/saturday-comics -[7]: https://wizardzines.com/zines/bite-size-command-line/ -[8]: https://austinkleon.com/ diff --git a/sources/talk/20201030 My journey to becoming an open source mentor.md b/sources/talk/20201030 My journey to becoming an open source mentor.md deleted file mode 100644 index 035ffaa8c7..0000000000 --- a/sources/talk/20201030 My journey to becoming an open source mentor.md +++ /dev/null @@ -1,92 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (My journey to becoming an open source mentor) -[#]: via: (https://opensource.com/article/20/10/open-source-mentor) -[#]: author: (Mehant Kammakomati https://opensource.com/users/mehant-kammakomati) - -My journey to becoming an open source mentor -====== -I grew from a teenage open source novice to a 20-year-old frequent -contributor and mentor to new users. -![Puzzle pieces coming together to form a computer screen][1] - -I was just 16 when I made my first meaningful open source contribution. It was the first code contribution I ever made, and I learned a lot from it. I'm 20 now, and I've been strongly attached to free and open source software (FOSS) ever since. I strive to be a friend to my community colleagues and to help others continue growing, learning, and succeeding. - -### Early days - -I first heard about FOSS through the [Google Code-In][2] contest. I was 16, but I was already learning computer science fundamentals, the C++ programming language, and anything else about computers I could get my hands on. I was very excited about the contest—not just because of the free Google swag, but because it gave me the opportunity to work directly on codebases being used all around the world. I jumped into the contest feet-first and started trying to solve as many open source software tasks as I could in the code, design, documentation, and research. - -![Google Code-in Mehant Kammakomati][3] - -(Mehant Kammakomati, [CC BY-SA 4.0][4]) - -It wasn't easy. I didn't know the FOSS community culture, nor much about the software development methodologies they used, nor even how to seek help or interact with others. So, rather than focusing on tasks, I started by focusing on understanding these fundamentals. - -In a way, I spent much of my time during the contest learning more about how open source development works instead of closing tasks. But I wasn't sad about my failure to contribute code during the contest and instead focused on my success in getting acquainted with free software and open source culture. - -### Fundamentals - -I didn't stop my journey there. As a beginner, I learned: - - 1. Git - 2. GitHub - 3. Using the terminal - 4. Writing meaningful commit messages - 5. How to communicate with colleagues and partake in project discussions - 6. A new way of looking at codebases and project anatomy - 7. Basic fundamentals of computer science - 8. Important components of the technical stack and programming languages - - - -The following year, I participated again in the Google Code-In contest to implement what I'd learned and try to make better bonds with my new FOSS friends. This time, I was able to complete a good number of tasks and make some valuable contributions that were pushed into production. As a result, I was selected as one of the 50 grand prize winners out of all the participants from all over the world. Being a kid, this gave me the motivation to make FOSS one of my best friends. - -### Programs that got me closer to FOSS - -From my start, I always liked being part of FOSS, and the journey has been amazing and addictive. I wanted to learn more, and I believed participating in FOSS initiatives and programs would help this happen. [Hacktoberfest][5] is one such initiative where I was able to contribute to Microsoft open source software and various other projects in 2018 and 2019. All the lessons I learned in Google Code-In were reinforced and strengthened.  - -[Google Summer of Code][6] (GSoC) was another important, engaging, and challenging experience for me. I became part of the GSoC 2019 and 2020 programs as a student with the [Sustainable Computing Research Lab][7]. These were two fast-paced and exciting summers spent hunting down bugs, writing new features, and documenting the work. - -In 2019, [Red Hat's Open Source Contest][8] was another wonderful opportunity to work on open source engineering problems. Red Hat is one of my dream companies—it provides open source software products (particularly interesting to me are container technologies and orchestration tools), so I'm lucky to have been part of the contest. The best part was that I was paired with a Red Hat engineer to mentor me throughout the course of the contest. I contributed to the [ansible-bender][9] project, and the journey absolutely stepped up my skills to the next level.  - -![Red Hat Open Source contest certificate][10] - -(Mehant Kammakomati, [CC BY-SA 4.0][4]) - -I also made valuable contributions to the [SPDX][11] online tools for their deployment infrastructure. While I was learning about blockchain technology, I contributed to Hyperledger Fabric's Python SDK. - -### Spreading FOSS culture - -I also served as a Google Code-In mentor in 2018 and 2019 and mentored many young aspirants making their very first valuable FOSS contributions. I was able to review around 400+ tasks and had the privilege of helping hundreds of students. - -Through my time as an open source benefactor, I've learned that the open source model is the best way to host a project. It avails you of many benefits, ranging from obtaining contributions from all over the world to getting project funding. Through my time as a contributor to open source programs, I've learned the value of working to inculcate FOSS culture in our institutions and students. - -I strongly believe in FOSS, and I recommend being part of this culture. Maybe you'll find it difficult to start, but if you seek the advice of friendly participants online or in a sponsored program, you'll surely get help. The most important part of the journey is the first few steps; once you get past that, you'll soon feel responsible and proud of each and every contribution you make—code or otherwise—knowing it helps your friends around the world. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/10/open-source-mentor - -作者:[Mehant Kammakomati][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/mehant-kammakomati -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/puzzle_computer_solve_fix_tool.png?itok=U0pH1uwj (Puzzle pieces coming together to form a computer screen) -[2]: https://en.wikipedia.org/wiki/Google_Code-in -[3]: https://opensource.com/sites/default/files/pictures/google_code-in.jpg (Google Code-in Mehant Kammakomati) -[4]: https://creativecommons.org/licenses/by-sa/4.0/ -[5]: https://hacktoberfest.digitalocean.com/ -[6]: https://summerofcode.withgoogle.com/archive/ -[7]: https://scorelab.org/ -[8]: https://research.redhat.com/red-hat-open-source-contest/ -[9]: https://opensource.com/article/19/10/building-container-images-ansible -[10]: https://opensource.com/sites/default/files/pictures/redhatcertificate.jpg (Red Hat Open Source contest certificate) -[11]: https://en.wikipedia.org/wiki/Software_Package_Data_Exchange diff --git a/sources/talk/20201108 Open environments are where innovative ideas thrive.md b/sources/talk/20201108 Open environments are where innovative ideas thrive.md deleted file mode 100644 index 8850c43cae..0000000000 --- a/sources/talk/20201108 Open environments are where innovative ideas thrive.md +++ /dev/null @@ -1,104 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Open environments are where innovative ideas thrive) -[#]: via: (https://opensource.com/open-organization/20/11/environments-for-innovation) -[#]: author: (Ron McFarland https://opensource.com/users/ron-mcfarland) - -Open environments are where innovative ideas thrive -====== -Certain environments are more conducive to innovation. A better -understanding of innovation's true nature could help us build them. -![A sprout in a forest][1] - -In the [first article of this series][2], I examined the nature of the innovation process in great detail. I also discussed some sources of resistance to it. In this second part of my review of [Matt Ridley's][3] book [_How Innovation Works_][4], I will explain the ideal environment in which discoveries are born, protected, and progress into useful products and services, considering certain essential conditions for innovations to flourish. And I will argue that [open organization principles][5] are the keys to establishing those conditions. - -### Better when shared - -Unfortunately, Ridley explains, history has shown that economic instability, downturns, and recessionary periods spur people toward more self-sufficiency and protectionism at the expense of productivity. That is, our attitude toward cooperation and interaction changes; people separate themselves from outsiders and tend to restrict interaction. In this environment, people, communities, and even entire countries fear dependence on others. Collaboration breaks down, feeding costly and counterproductive recessions (it's almost like reverting back to [subsistence-living societies][6], where everyone only consumes and benefits from what they produce by themselves). - -This attitude stifles innovation, as innovation occurs primarily when people are able to work _with_ each other and utilize the principles of community, collaboration, inclusion, transparency, and adaptability. - -Periods of economic stability and expansion, on the other hand, tend to create strong feelings of safety, which encourages mutual interdependence between people. As Ridley writes, "By concentrating on serving other people's needs for forty hours a week—which we call a job—you can spend the other seventy-two hours (not counting fifty-six hours in bed) drawing upon the services provided to you by other people." We do what we are good at and what we enjoy most, and then depend on others to do the things we do not do well and perhaps even dislike. When interdependence and cooperation are commonplace in a society, there tends to be an increase in innovative economic breakthroughs, specifically because of work providing specialized services. Simply put, working together to come up with new things leads to increased human productivity for all. - -In this environment, open organizations come alive. - -So let's examine the qualities that make those environments so fertile for innovation. - -### Where innovation thrives - -Several factors are common throughout the innovation process, Ridley notes in _How Innovation Works_. Notice that open organization principles are involved in each of these factors. - -#### 1\. Innovation is gradual. - -If you look closely, you'll see that innovation does not often involve single breakthroughs. Instead, it's often [a series of discoveries over months and even years][2]. Innovations are gradual, incremental, and _collective_—over time. Unfortunately, we still tend to view innovations as the result of singular actors. This is due to several factors, Ridley explains: - - 1. Human nature and a love of heroes: People love telling stories starring single heroes with key events as turning points in a linear series (what [Jim Whitehurst][7] calls "[the innovation delusion][8]"). These stories are more exciting and inspiring, perhaps, but not necessarily historically accurate (years of testing and making trial-and-error mistakes are not as interesting!). - 2. Intellectual property laws: Contemporary intellectual property systems attempt to ascribe all credit to single inventors and magnify that person's importance, overshadowing collaborators, competitors, and predecessors who contributed "stepping stone discoveries." - - - -In truth, _innovations are the result of gradual progress_. - -If you look closely, you'll see that innovation does not often involve single breakthroughs. - -#### 2\. Innovation is serendipitous. - -More often than not, innovative ideas come when one is looking for something else or trying to solve a completely different problem. They are accidental discoveries. - -For example, [Roy Plunkett][9] was trying to improve a refrigerant fluid when he discovered Teflon. Other times, certain historical events turn researchers in directions they had not considered. This is a good reason why broad inclusivity and openness to the unexpected (adaptability) while working on a project are so important. - -Sometimes, broad peripheral vision is far more important than what you're _directly_ looking at. As serendipity plays a big part in innovation, societies that embrace a more free-roving, experimental nature do so well. This approach increases the chance of a lucky idea appearing. Innovation happens when people are free to think, experiment, and speculate. It happens when people can trade things, concepts, and ideas with each other (in other words, they collaborate—see below). This explains why innovative ideas seem to emerge more from cities than from rural areas, Ridley argues. - -#### 3\. Innovation is a process of combining existing components. - -Innovation is often the result of combining pre-existing products in new ways, or applying well-known components to unanticipated problems. Again, this occurs in places where people can meet and exchange goods, services, and thoughts (where they can collaborate). This explains why innovation happens in places where trade and exchange are frequent, and not in isolated or under-populated places. Innovation is born out of communities. - -#### 4\. Innovation is iterative. - -To innovate successfully, one must be willing to experiment and develop a high tolerance for error. One must not be shocked by set-backs; instead, we need to be overjoyed by learning from them. Most great discoveries come from data gleaned and lessons learned during failed experiments. Therefore, while collaborating, there should be an environment of _playfulness_. By just playing around, we help ideas come to the surface. This is why I prefer approaching problems with others by using the expression "let's just kick this idea around a bit." It keeps everyone open to new ideas and does not allow bias or strong narrowing positions to creep in, avoiding the tendency to shut down discussion too quickly. - -The more and faster you make errors, the better. As Ridley states: - -> "Amazon is a good example of failure on the road to success, as Jeff Bezos has often proudly insisted. 'Our success at Amazon is a function of how many experiments we do per year, per month, per week. Being wrong might hurt you a bit, but being slow will kill you.' Bezos once said: 'If you can increase the number of experiments you try from a hundred to a thousand, you dramatically increase the number of innovations you produce.'" - -This is where open organization principles are important. If you have a wide community experimenting and feeding their results back to you, imagine how quickly you will find a solution (or new opportunities, for that matter) while looking at a failure with many eyes and perspectives. - -#### 5\. Innovation is collaborative. - -No one innovates in isolation. Others always play a role—whether large or small—in your innovations. The best ideas are stored between two or more minds, not in one single mind. - -Therefore, _transparency_ to what is in everyone's minds and _collaboration_ on that content are vital. Quite often, one person comes up with a product idea, then another person finds ways to manufacture it, then a third person looks at that manufacturing process and comes up with a way to execute it in a far less expensive way. All these phases are part of the overall innovation—but we focus only on one in the stories we tell about it. More often than recognized, it was a _team_, a collective effort, that led to success. - -Moreover, Matt Ridley argues that most innovations _do not_ come from producers. More frequently, they come from _consumers_ that want to _improve_ on what they are using. So when we explore open organization communities, we must remain focused on the ways these communities incorporate feedback they receive from _outside_ themselves, perhaps from _users_ of related products, and find someone among them that wants to improve on them. - -### Free to innovate - -"The main ingredient in the secret sauce that leads to innovation is freedom," Ridley writes. "Freedom to exchange, experiment, imagine, invest and fail; freedom from expropriation or restriction; freedom on the part of consumers to reward the innovations they like and reject the ones they do not." This freedom will have to be supported by sensible regulations that are permissive, encouraging, and quick to give decisions (Ridley is critical of current intellectual property regulations, citing a negative impact on the innovation process). We have to take a good look at the hurdles blocking innovation, as this exploration process should be promoted. - -In the next part of this series, I'll provide an overview of actual cases of various innovations throughout history and explain how open organization principles played a role in shaping them. - --------------------------------------------------------------------------------- - -via: https://opensource.com/open-organization/20/11/environments-for-innovation - -作者:[Ron McFarland][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/ron-mcfarland -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/BUSINESS_redwoods2.png?itok=H-iasPEv (A sprout in a forest) -[2]: https://opensource.com/open-organization/20/10/best-ideas-recognition-innovation -[3]: https://en.wikipedia.org/wiki/Matt_Ridley -[4]: https://www.goodreads.com/en/book/show/45449488-how-innovation-works -[5]: https://theopenorganization.org/definition/ -[6]: https://opensource.com/open-organization/20/8/global-history-collaboration -[7]: https://opensource.com/users/jwhitehurst -[8]: https://opensource.com/open-organization/19/6/innovation-delusion -[9]: https://en.wikipedia.org/wiki/Roy_J._Plunkett diff --git a/sources/talk/20201109 DevOps Replaces Developers As Most Sought After Skill Set.md b/sources/talk/20201109 DevOps Replaces Developers As Most Sought After Skill Set.md deleted file mode 100644 index 8b66610ede..0000000000 --- a/sources/talk/20201109 DevOps Replaces Developers As Most Sought After Skill Set.md +++ /dev/null @@ -1,76 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (DevOps Replaces Developers As Most Sought After Skill Set) -[#]: via: (https://www.linux.com/interviews/devops-replaces-developers-as-most-sought-after-skill-set/) -[#]: author: (Swapnil Bhartiya https://www.linux.com/author/swapnil/) - -DevOps Replaces Developers As Most Sought After Skill Set -====== - -[_The_ 2020 Open Source Jobs Report][1] _just came out so we took the opportunity to speak with Clyde Seepersad, Senior Vice President and General Manager of Training and Certification at the Linux Foundation, about the significance of the report and the insights it provides on the current open source landscape. He touched on the effects of COVID-19 on hiring trends, the open source skills that are in high demand, and how the Foundation is helping organizations meet this demand through high-quality intensive training. Bottom line, he says “We still don’t have enough open source talent. The urgency of finding new ways to bring talent into the market continues to be something that should be front and center for all of us.”_ - -**Swapnil Bhartiya: What is the importance of this report? Not only for the open source ecosystem, but companies outside of the open source ecosystem, because today almost everybody’s leveraging open source in one capacity or another.** - -Clyde Seepersad: One of the things that we didn’t realize several years ago is that there is a lot of data around general employment reports and a few around IT and technology in general, but there was really this gap when it comes to what’s happening on open source talent, and we kept hearing anecdotally that people can’t hire or can’t find enough talent. - -And so what we wanted to do was put a really clear spotlight on what’s going on specifically when it comes to the talent pool around open source, to be able to share with the market a sort of non-anecdotal state of the world, but also to be able to inform our own strategy and our own mission, which is to try to ensure not just that there is fantastic code coming out of open source projects, but also that there is enough talent to implement and use it as tool. - -**Swapnil Bhartiya: What are some of the key highlights of this report?** - -Clyde Seepersad: A couple of things. One is the rise of DevOps skills. I think everybody knows cloud is hot. It’s been that way for a while, but the companion piece to that around DevOps and the importance of understanding CI/CD pipelines and also the cultural difference of working in that sort of continuous delivery. The rise of that, I think, is something that maybe most people are not quite as aware of. - -The second thing I would highlight is that there were a lot of questions about what’s happening to tech hiring in response to the COVID pandemic. We have some answers for that, that says that although hiring slowed down, it did not slow down nearly as much as people might have worried at the outset. In fact, it’s now accelerating. - -The top-level thing, which is continuing to be the case, is we still don’t have enough open-source talent. The urgency of finding new ways to bring talent into the market continues to be something that should be front and center for all of us. - -**Swapnil Bhartiya: So if we look at this report, what are the skills that are kind of not only most in demand, but also hardest to find? That is like a chicken-and-egg solution, right?** - -Clyde Seepersad: Yeah. Obviously, it’s the cloud skills, right? A lot of the smaller companies, more conservative companies, they kind of make us push them to be much more active on the cloud. What that’s done is raise the stakes in terms of people who are familiar with cloud-native development, cloud-native architecture, Kubernetes orchestration, and then what does CI/CD pipelines look like in a cloud world because obviously, there’s some changes there when you’re running that sort of infrastructure. So those interwoven skillsets, right? - -Of course, sitting underneath all of that is what operating system does the cloud run on? I think we all know now that the vast, fast 98% of instances are running on Linux. So you have this tiered approach where understanding from basic Linux competence is a baseline and then you’re building on top of that, looking for cloud-native development, cloud-native orchestration, and then what the CI/CD pipelines look like to bring that to life. - -**Swapnil Bhartiya: So when we look at this shortage of talent and, at the same time, the demand for talent, in addition to just coming out with this report, do you have any kind of advice or suggestion to the hiring managers? What can they do to attract top developers or talent to their organizations because there is heavy demand and everybody wants them?** - -Clyde Seepersad: Right. Well, some of the things actually have happened in response to the pandemic, right? One of the trends we saw last year was people wanting the flexibility to be able to work from home. Of course, now we all work from home so that helps. But what came out in the report that was really interesting is that more and more talent managers are realizing that you don’t just have to go externally for talent, that you can, in fact, upskill people who are currently in your organization. - -The data suggests that a lot more people are waking up and realizing that trolling LinkedIn for your next hire is a zero-sum game because other people are doing the same. They’re starting to invest more in training, especially online training. They’re starting to invest more in certifications for their employees. And just in general, they’re starting to be much more proactive in looking at investing into their talent pool and finding ways to provide new opportunities for development. Of course, that also comes with new job opportunities for the existing employee base. - -**Swapnil Bhartiya: I just want to talk a little bit more about COVID-19. A couple of things are happening with COVID-19: a lot of companies that are scaling down. They’re cutting budgets and everything. At the same time, since people are able to work remotely, you don’t have to relocate yourself or you don’t have to find talent in the same area. You have access to almost everybody wherever they are. So how has COVID-19 affected the hiring process itself in terms of while they do have to scale down to some extent, the beauty is, I should not say that, the world that we are living in is all powered by cloud and technology. All the purchases that I was making even in my Indian grocery, they now have a website. I can just go and place an order. It was not the case earlier. So, cloud actually enabled companies to stay in business. That also means that you do need developers and all those talents to keep those businesses running. At the same time, you have the advantage of not having to relocate. So talk a bit about it.** - -Clyde Seepersad: Yeah, that’s true. I don’t think that’s tied together, right? So as people have been forced to use the cloud more, I had the same experience you did. My local Chinese restaurant suddenly developed a website and they have an ordering business that they did not previously have. Every business is now an e-commerce business is true, right? So there’s this broader footprint. - -On the flip side of it, you also have people who are now having to work from home, where they maybe didn’t use to, either for practical or maybe cultural reasons within the company. That also then intersects with the sort of cultural change and the cultural norms of CI/CD and DevOps, right? This idea that you have to be in person together versus this idea that you have a well-documented pipeline and everybody can contribute to that pipeline and do their commits and do their code, that whole tooling ecosystem of cloud native and DevOps has actually made it, made it easier—and I would argue, possible—to do what’s happened and what we’ve seen over the past several months, which is people being productive, working from home, working with people they haven’t worked with before, onboarding new team members, and being able to get them provisioned with the right access and up skill on the right systems. It’s all really come together. In my view, we have been lucky that we’ve got the technology infrastructure that we have today because I don’t know that we would have been able to stay as productive and focused in a sudden shift to remote work if we were trying to do this even five years ago, - -**Swapnil Bhartiya: I’m a good example of that because I have been working from home ever since I moved out of India. What I realized was that I work when I feel that I’m most productive instead of hey, I have to clock in at 9:00 AM and I have to clock out at 5:00 PM. I have to sit there and do something. It doesn’t matter how I feel. And then sometimes, there are personal issues. Somebody is sick in the family and your mind is there, but you have to come to the office. I think remote working offers the best balance between work and life. Of course, it is actually more challenging because you may end up working all the time, but still, it offers a better balance. Earlier you were talking about how you don’t have to go out to hire people; you can also internally train people. So when we look at organizations and they look at all these new cloud-native technologies and they want to retain or prepare their own workforce, what resources are available there, especially from the Linux Foundation so that they can better equip their own workforce when there is already a shortage of a lot of talent?** - -Clyde Seepersad: Yeah, it’s a good question, Swapnil. From a practical perspective, the portfolio that we have provided, which is very heavily focused on self-paced e-learning that you take online, but at the same time, very skills-based, very lab-intensive online training, because ultimately, what do you care about as a colleague or as a hiring manager? It’s not whether they check the box and they have a certificate saying they completed a course. What you care about is the skills, right? Did they actually develop those skills? So, we’ve got a pretty big portfolio of very hands-on, self-paced e-learning programs to help people develop the skills. And then we’ve continued to build our portfolio of performance-based certification exams. So this is not your grandad’s pick an answer out of a lineup, right? These are live systems with variable questions, and you have to demonstrate your skills under the pressure of time, under the pressure of being proctored by an independent person. I think it’s that one-two punch of really focusing on skills. - -I joke with people all the time. We get feedback sometimes that our courses aren’t don’t have enough video. And I say, “Well, true, because we’re not trying to entertain you. We’re trying to develop skills and the way you develop skills is not by staring at a screen and listening to a video. The way you develop skills is by doing a lab.” So we’ve got a very lab-centric mindset in terms of the training side of it and that carries on into the certification side of it, where it’s all about performance. Show that you can do the work, take the time to develop the skills because that’s what your colleagues are going to be looking for. That’s what your employers are going to be looking for. That’s what’s going to benefit you personally, as an individual — to be able to have that broader skill set and to be able to do that in a remote way and not have to rely on a senior trainer coming onto site and working with you. I think that’s going to be the new normal. - -**Swapnil Bhartiya: The advantage of this crisis is that people are realizing that they don’t have to move. Actually, they can move to the ideal pace they wanted to live. It could be a big ranch, it could be a beach, and they can work for companies who are operating in Silicon Valley, which also means you can also cross national boundaries. The whole idea of hope is open source is the best and the brightest people from around the globe. So how do you enable these people? People come from different cultural backgrounds, different education backgrounds, and different languages. Do you also help them irrespective of where they’re coming from, whether it’s internationalizing or supporting different languages so people can get training?** - -Clyde Seepersad: Yeah. Our LS training, we do that. Obviously, the online format helps because it’s truly available 24/7 globally, nights and weekends. So that really has expanded the footprint of what we’re able to do and who we are able to reach. We’ve also done some translations, particularly for the certification exams to make those available in languages that we know folks may not otherwise be comfortable with, for Japan and China, for instance. - -What we’re trying to do is mirror what we’re seeing in the workforce. The shift towards more remote work has actually opened up the pipeline. When you think about hiring and talent management, if you think about somebody who is in the US or in Western Europe, your pool is not as limited. You really can reach out to this global pool of talent in non-traditional markets. We’ve seen sectors get hot. Obviously, India has a lot of workshops today. There’s a ton of stuff happening in Eastern Europe now, but it really is global, right? We’ve got folks on our team in South America being super productive in this new remote way of working. I think that’s becoming more and more typical. Because of the rise of cloud native, because of the rise of Cloud Native, because of the rise of this sort of collaborative DevOps mindset, we are able to collaborate across regions, across countries, across time zones, much more effectively than they ever have before. - -**Swapnil Bhartiya: Awesome. Clyde, thank you so much for talking to me today about not only this report, but also how to help hiring managers not only get more talent, but also not retrain their own employees. I look forward to talking to you again. Thank you.** - -Clyde Seepersad: Hey, it’s always a pleasure to be with you, Swap. Thank you. - --------------------------------------------------------------------------------- - -via: https://www.linux.com/interviews/devops-replaces-developers-as-most-sought-after-skill-set/ - -作者:[Swapnil Bhartiya][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://www.linux.com/author/swapnil/ -[b]: https://github.com/lujun9972 -[1]: https://www.prnewswire.com/news-releases/2020-open-source-jobs-report-reveals-spike-in-demand-for-devops-talent-continued-dearth-of-open-source-skills-301159394.html#:~:text=The%202020%20Open%20Source%20Jobs%20Report%20examines%20trends,and%20how%20employers%20attract%20and%20retain%20qualified%20talent. diff --git a/sources/talk/20201111 Why I use Home Assistant for open source home automation.md b/sources/talk/20201111 Why I use Home Assistant for open source home automation.md deleted file mode 100644 index 6d85628c8d..0000000000 --- a/sources/talk/20201111 Why I use Home Assistant for open source home automation.md +++ /dev/null @@ -1,105 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Why I use Home Assistant for open source home automation) -[#]: via: (https://opensource.com/article/20/11/home-assistant) -[#]: author: (Steve Ovens https://opensource.com/users/stratusss) - -Why I use Home Assistant for open source home automation -====== -Home automation can be a slippery slope. The right open source tools can -get you on firmer footing. -![Houses in a row][1] - -Home automation is a slippery slope; you have been warned! In this multipart series, I will discuss home automation using the open source project Home Assistant. This introductory article will cover my journey to [Home Assistant][2], what the application does, and why it's important. - -### How my journey began - -Some time ago, when I set out on this journey, my goal was not lofty. I was solving a need. You see, I have a fairly sizable [homelab][3]. Nothing on the scale of some notable YouTubers, but I have eight machines ranging from 16GB RAM all the way up to 96GB. I have a Netgear 10G Ethernet switch as the backbone of my networking infrastructure. However, I have a small problem. Every once in a while, this switch's state table fills up, and then it crashes, taking the network with it. This is a known issue with this model (although it was not known to me ahead of time). The only way to resolve the issue, without replacing the switch, is to power it off for a few seconds and then power it back on. - -This would not seem like a big deal. Especially because I live in an apartment, so I don't even have to travel up or down a flight of stairs to do this. However, I work for Red Hat as a senior OpenShift consultant, which means I am often on the road (at least pre-COVID). I use my lab almost every day for work-related activities, and my family uses the network as well for things like playing games, watching our Blu-ray collection, etc. So, it's a giant pain to have the network go down when I don't have physical access. My solution was to get a smart plug and join it to a completely different network with nothing else on it, completely firewalled off from other equipment. If the Netgear switch needs to be rebooted, I should be able to access the smart plug remotely to reboot the switch. - -### My journey away from the cloud - -Being privacy-conscious, perhaps bordering on the tinfoil hat breed, I am immediately uncomfortable with a "cloud"-connected anything. We run [Plex][4], [Kodi][5], [Nextcloud][6], and a host of other services because, well, I am "that guy." But I'm not "anti-cloud." In fact, a large part of my day job is working with the big three: AWS, Google Compute, and Azure. But when it comes to standing up services that I rely on, I have an almost irrational need to host things locally. - -After doing a significant amount of digging and speaking to my coworker Alex Kretzschmar (who also hosts the [Self-Hosted][7] podcast), I discovered alternative firmware projects, such as [Tasmota][8] and [ESPHome][9], available for certain wireless chipsets. I'll cover the different chipsets and protocols (Zigbee, WiFi, Z-Wave, and the like) in a future article, but suffice it to say, you are not stuck buying products that are dependent on the cloud. There are online stores such as [CloudFree][10] that sell devices pre-flashed with Tasmota. There are even companies like [Shelly][11] that produce high-quality products with an optional cloud component, but the buyer maintains local control. - -Anyway, back to my story. I bought a plug, flashed the firmware to run Tasmota, and remotely power-cycled my switch on occasion, and that was the end of it, right? Well, if it was, I imagine I would not be writing this article. I currently have 43 Internet of Things (IoT) devices—from sensors I built to smart bulbs, smart LED strips, infrared blasters, and more. Remember how I said home automation is a slippery slope? - -Did I mention that I have had virtually no experience with soldering, electronic theory/repairs, or anything remotely related to home automation? In fact, outside of Linux and related technology, I am one of the least "handy" people I know. Sure, I can punch a hole in a wall or put some screws in a board, but up to the age of 30, the only tools that I ever owned were a Dremel and some screwdrivers for installing computer components. - -Why mention this? So you understand exactly how far behind square one I was when I started. If I can take this on, so can you! - -### Centralized local control - -Great, I have a ton of IoT devices, and I can toggle things on and off from a phone. For a while, I was satisfied with simply calling up the Tasmota web UI and using its sparse but functional controls. - -![Tasmota user interface][12] - -(Steve Ovens, [CC BY-SA 4.0][13]) - -Even my wife, God bless her willingness and patience while I constantly learned and attempted new things, got used to using the Tasmota interface. After a while, as the number of devices grew, this method of managing things became untenable and did not scale well at all. - -I began to poke around to learn how other people were managing their "smart homes." Let's be honest; at this point, it wasn't a smart home as much as a small but growing number of lights we could remotely control. - -The big open source projects in this area are [openHAB][14] and [Home Assistant][15]. This series won't compare them in any manner. Partly, it's because I am not qualified for this, as I have only been using Home Assistant for the last year or so, but also because for me to feel comfortable making such a comparison, I would have to set up openHAB as a drop-in replacement and, frankly, I have too much invested in Home Assistant to explore this avenue. - -### About Home Assistant - -You may be wondering what Home Assistant is and what it has to offer. Imagine a house that reacts to its inhabitants, like in sci-fi movies. Perhaps you have a couple of bedside lamps, a TV, some floor lighting, a fan, and a few other gizmos in your bedroom. As you walk into the bedroom, the lights turn on. Big deal, you say; we have had this technology for some time. Of course, you are right. But what if it's late and your significant other is already in bed? You might be in for a rather cold greeting if the lights come on as you enter the bedroom. Yikes! - -What if, instead, when you walk into the room at night, the floor LED lights turn on to a soft glow—enough so that you can move around without killing yourself but not bright enough to wake a sleeping partner. You climb into bed, and a few minutes later, the floor lighting turns off. This is what Home Assistant can do for you. - -"But wait!" I hear you screaming at your monitor. "I can just ask Alexa or Google to turn off my lights for me." You're correct again, of course. However, what happens when these services suffer some sort of disruption? Also, you may need to consider how loudly you need to speak to trigger the listening device. And remember that thing I said about privacy? Do you really want these big companies to learn your habits? Even discarding the privacy issue, consider that others may use your home as well. This means visitors need to know what commands you have available for controlling your smart devices. - -Lots of "smart" products on the market can set timers, schedules, and scenes, but none of them can really _react_ to any given situation. This is where a home automation hub like Home Assistant comes into play. - -At its core, Home Assistant is software that helps centralize all of the sensors, gizmos, and gadgets you have in your home. With all of these products working together in concert, you can set all kinds of conditions that would not otherwise be possible. - -Has someone entered the room? Is it a certain time of the day? Is the room warmer than a certain value? Is someone in bed? All of these data points are of limited use on their own, but together, you can use them to set the brightness of a light at dusk, turn a fan on because it's above 26ºC (80ºF) in the room, but don't turn on Steve's desk lamp because his side of the bed is occupied. - -If you can imagine it, you can accomplish it using Home Assistant and the right sensor inputs. - -### Sustainable and open source - -One thing I like about Home Assistant is that it seems to be reaching a critical mass of adoption from various vendors. But more important to me is that the company behind it, [Nabu Casa][16], creates a focal point for the community. The company hired developers directly from the community, and it does not penalize you if you don't pay a monthly fee. The revenue Nabu Casa generates comes from value-added items, like being able to access your local Home Assistant easily and from anywhere in the world. - -This is important because it means that there is a path forward for the project, and it has a sustainable income for future development. Unlike "open core" models, Home Assistant is fully open source, which means that if the community disagrees strongly enough with Nabu Casa's direction, it could fork Home Assistant at its current state and take a divergent path. Because my family has chosen to make this piece of software integral to how we interact with our devices, that Home Assistant has a revenue stream and is fully open source are invaluable to me. - -In the next article, I will discuss some of the common standards for IoT devices as well as the benefits of local control. Future articles will walk through the basics of installing Home Assistant, setting up essential add-ons (e.g., MQTT), Node-RED, the Community Store, making backups, and more. - -In the meantime, comment or [tweet][17] at me if you would like to explore something specific in-depth. If I have used it, I can talk about it. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/11/home-assistant - -作者:[Steve Ovens][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/stratusss -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/house_home_colors_live_building.jpg?itok=HLpsIfIL (Houses in a row) -[2]: https://www.home-assistant.io/ -[3]: https://opensource.com/article/19/3/home-lab -[4]: https://www.plex.tv/ -[5]: https://opensource.com/article/19/1/manage-your-media-kodi -[6]: https://nextcloud.com/ -[7]: https://selfhosted.show/ -[8]: https://tasmota.github.io/docs/ -[9]: https://esphome.io/ -[10]: https://cloudfree.shop/ -[11]: https://shelly.cloud/ -[12]: https://opensource.com/sites/default/files/uploads/tasmota_ui.png (Tasmota user interface) -[13]: https://creativecommons.org/licenses/by-sa/4.0/ -[14]: https://www.openhab.org/ -[15]: https://opensource.com/article/18/3/smart-home-assistant -[16]: https://www.nabucasa.com/ -[17]: https://twitter.com/linuxovens diff --git a/sources/talk/20201112 Improve open source community sustainability by tracking these two metrics.md b/sources/talk/20201112 Improve open source community sustainability by tracking these two metrics.md deleted file mode 100644 index 7ac4f2becb..0000000000 --- a/sources/talk/20201112 Improve open source community sustainability by tracking these two metrics.md +++ /dev/null @@ -1,146 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Improve open source community sustainability by tracking these two metrics) -[#]: via: (https://opensource.com/article/20/11/open-source-community-sustainability) -[#]: author: (Kevin Xu https://opensource.com/users/kevin-xu) - -Improve open source community sustainability by tracking these two metrics -====== -Focusing on metrics around community ownership and incentives can -increase your odds of building a sustainable open source project. -![Person using a laptop][1] - -In early 2020, I wrote an article on [three metrics][2] for tracking and measuring offline, in-person community-building activities. Little did I (or the world) know then that offline, in-person activities of any kind would soon become unfeasible for the foreseeable future. - -So, I started thinking: With open source projects being online by default, and with everything else moving online and virtual, what should creators of open source technologies measure as we continue in this COVID and (hopefully soon) post-COVID world? - -There are plenty of metrics you _can_ track—stars, forks, pull requests (PRs), merge requests (MRs), contributor counts, etc.—_but more data doesn't necessarily mean clearer insights_. I've previously shared my skepticism about the value of these [surface-level metrics][3], especially when assessing an open source project's health and sustainability. - -In this article, I propose two second-order metrics to track, measure, and continually optimize to build a strong, self-sustaining open source community: - - * Breakdowns of PR or MR reviewers - * Leaderboards of different community interactions - - - -### Why these metrics? - -The long-term goal of any open source community-building effort is to reach a tipping point where the project can live beyond the initial creators' or maintainers' day-to-day involvement. It's an especially important goal if you also are building a commericial open source software (COSS) company around that open source technology, whether it's bootstrapped or venture capital-backed. Your company will eventually have to divert resources and people power to build commercial services or paid features. - -It's a lofty goal that few projects achieve. Meanwhile, maintainer burnout is a real problem. The latest and most high-profile example is Redis creator Salvatore Sanfilippo, who shared his [struggles as an open source maintainer][4] last year and [bowed out as CEO][5] of Redis Labs earlier this year. Maintainers of various projects, big or small, struggle through similar challenges every day. - -Focusing on the two metrics above, especially early in your open source journey, can increase your odds of building something sustainable because they illuminate two important elements that drive sustainability: **ownership** and **incentive**. - -#### Breaking down PR/MR reviewers = Ownership - -Tracking who in your community is actively reviewing contributions is a good indicator of ownership. In the beginning, you, the creator, do the bulk of reviewing, but this will be unsustainable over time. Being intentional about building your community so that more people have the _contextual knowledge, confidence, and welcoming attitude_ to review incoming PRs/MRs (which should increase in frequency as your project gains traction) is crucial to long-term sustainability. - -There's a customer service-like element to reviewing contributions, which can deteriorate if not enough people feel ownership to do it. And one of the worst signals you can give to an otherwise enthusiastic newcomer is a PR or MR left unattended for two or more weeks. - -#### Community interaction leaderboards = Incentive - -Tracking a few community-facing interactions and possibly gamifying them within your community with rewards can help drive the right incentives and behaviors among community members with all levels of experience. Some of the interactions you can track are the number of PRs/MRs filed, comments, reactions, and reviews (which has some overlap with reactions). These interactions may have different values and quality, but the bigger goal here is _to understand who's doing what, who's good at doing what_, and intentionally _foster more behaviors based on people's strengths and interests_. - -Perhaps some people are great at providing helpful comments but don't have enough context (yet) to review a PR/MR. It would be good to identify who they are and provide them with more info so that they can become a reviewer one day. Perhaps some people are super-engaged with monitoring the project, as shown by their frequent reactions, but don't feel comfortable chiming in with comments and suggestions. It would be good to know who they are and help them gain more context into the project's inner workings, so they can add more value to a community they clearly care about.  - -### How to use the metrics - -So how can you track and read into these metrics? I'll illustrate with an example comparing two open source projects: [Kong][6], an API gateway, and [Apache Pulsar][7], a pub-sub messaging system. - -In May 2020, I used [Apache Superset][8], an open source data visualization tool, along with a tutorial written by [Max Beauchemin][9], one of the project's creators, to crawl and visualize some data from Kong, Apache Pulsar, and [a few other projects][10]. Using [the tutorial][11], I crawled two years' worth of data (from May 2018 to May 2020) to see changes over time. (Note: The tutorial is an example of Superset's own data with some hard-coded linkage to its history inside Airbnb and Lyft, so to use it, you will need to do some customization of the dashboard JSON to make it work more generally.) - -Two caveats: First, the data was last gathered in May, so it will surely look different today. Second, the projects were open sourced at different times, and this comparison is not a judgment on the current state or potential of either project. (Kong's first commit was in November 2014, and Pulsar's was in September 2016. Of course, both were worked on in private before being open sourced.) Some of the differences you see may simply be due to the passage of time and community effort paying off at different times; _community building is a long, persistent slog_. - -#### PR reviewer metrics - -The following two charts show Kong and Pulsar's PR reviews by GitHub handle: - -![Kong PR reviews by GitHub handle][12] - -Kong's PR reviews by GitHub handle (COSS Media, ©2020) - -![Pulsar's PR reviews by GitHub handle][13] - -Pulsar's PR reviews by GitHub handle (COSS Media, ©2020) - -Based on this data, I observe that Kong has a better balance of people reviewing PRs than Pulsar has. That balance was achieved over time as the Kong project grew in maturity. The most important thing to note is that neither of Kong's creators, [Aghi][14] nor [Marco][15], is anywhere close to being the top reviewers. _That's a good thing!_ They certainly were during the early days, but their involvement became less visible as the project matured, as it should. - -As a younger project, Pulsar isn't at the same level yet but is on its way to achieving that balance. [Sijie][16], [Jia][17], and [Penghui][18] are doing the bulk of the reviewing for now; all three are project management committee members and lead SteamNative, Pulsar's COSS company. Other major players, including Splunk (especially after it [acquired][19] Streamlio), also contribute to the project, which is a good leading indicator of eventually achieving balance. - -One factor I'm intentionally glossing over is the difference in the governance process of an Apache Software Foundation project and a non-ASF project, which would impact the speed and procedure for a contributor to become a reviewer or maintainer. In that regard, this comparison is not 100% apples-to-apples. - -#### Community interaction metrics - -Following are two leaderboard charts showing Kong and Pulsar's community interactions by GitHub handle in the 90 days since the most recent data gathered (roughly from March to May 2020): - -![Kong's 90-day leaderboard chart][20] - -Kong's 90-day leaderboard chart (COSS Media, ©2020) - -![Pulsar's 90-day leaderboard chart][21] - -Pulsar's 90-day leaderboard chart (COSS Media, ©2020) - -These leaderboards reflect the same "level of balance" shown in the previous chart, which makes sense. The more interesting takeaway is who is doing what kind of interaction, how much _interacting_ is happening, and who seems to be doing it all (Sijie!). - -As far as building the right incentive structure, this leaderboard-type view can help you get a sense of where interactions are coming from and what sort of reward or motivational system you want to design to accelerate positive behaviors. - -This data is also useful for internal management _and_ external community building. As close watchers can tell, many of the leaders on these charts are employees of the projects' COSS companies, Kong Inc. and StreamNative. It's quite common for active community contributors (or enthusiasts) to become employees of the company commercializing the project. Regardless of where these folks are employed, to foster a sustainable project beyond its initial creators (which in turn would influence the sustainability of the COSS company), you would need to measure, track, and incentivize the same behaviors. - -Also, I'm aware that the Pulsar chart does not have a "reactions" column, which could either be because there wasn't much reaction data to merit a top-10 entry or due to my own faulty configuration of the chart. I apologize for this inconsistency. - -### Tips on driving balanced sustainability - -No matter how pretty the charts are, data doesn't tell the whole story. And no matter how successful a particular project is, its experience should not be templatized and applied directly to a different project. That said, I'd like to share a few actionable tips I've seen work in the wild that can help you improve these two metrics over time: - - * **Provide high-quality documentation:** In a previous article, I focused on [documentation][22], and I encourage you to give it a read. The most important point is: a project's documentation gets the most amount of traffic. It's the place where people decide whether to continue learning about your project or move on. _You never want to give people a reason to move on_. Generally, I recommend spending 10% to 20% of your time writing documentation. Putting it in context: if you are working on your project full-time, it's about half a day to one full day per week. - * **Make your contributor guide a living document:** Every project has a CONTRIBUTING.MD document (or a variation of it). But projects that grow and mature make that document the best it can be and continually refresh, update, and refine it. Why? Because that's where people who are enthusiastic about participating in the project go. If the guide is clear, succinct, and actionable, you'll get contributions in no time. If it's outdated, convoluted, and lacks an easy onramp (e.g., beginner issues, simple bugs, etc.), then that enthusiasm will go somewhere else. _Make your CONTRIBUTING.MD a killer feature_. - * **Set clear quality guidelines:** There _is_ such a thing as a "noisy contribution"—low-quality PRs/MRs that require more energy than it's worth to review (and oftentimes reject). However, the responsibility of communicating to the public what is and is not a "quality contribution" is on you, the creator or maintainer, because you have the most context and institutional knowledge about the project, by far. _Make your expectations clear, and don't compromise on quality._ Make it a prominent section of your CONTRIBUTING.MD or a separate document to give it more visibility. Combine it with your project's roadmap, which should be part of your public documentation anyway, so your new contributors know what's expected of them and why. - - - -I hope this provides some useful insight into the two second-order metrics that matter when building a sustainable open source community and some actionable items you can use to track and improve them. - -* * * - -_This article originally appeared on_ _[COSS Media][23]_ _and is republished with permission._ - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/11/open-source-community-sustainability - -作者:[Kevin Xu][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/kevin-xu -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/laptop_screen_desk_work_chat_text.png?itok=UXqIDRDD (Person using a laptop) -[2]: https://opensource.com/article/20/3/community-metrics -[3]: https://softwareengineeringdaily.com/2019/04/04/project-health-assessing-open-source-projects-with-more-context/ -[4]: http://antirez.com/news/129 -[5]: http://antirez.com/news/133 -[6]: https://github.com/Kong/kong -[7]: https://github.com/apache/pulsar -[8]: https://superset.apache.org/ -[9]: https://github.com/mistercrunch -[10]: https://twitter.com/kevinsxu/status/1275072801511059456 -[11]: https://preset.io/blog/2020-04-15-github-community-dashboard/ -[12]: https://opensource.com/sites/default/files/uploads/kongpr-reviews.jpg (Kong PR reviews by GitHub handle) -[13]: https://opensource.com/sites/default/files/uploads/pulsarpr-reviews.jpg (Pulsar's PR reviews by GitHub handle) -[14]: https://github.com/sonicaghi -[15]: https://github.com/subnetmarco -[16]: https://github.com/sijie -[17]: https://github.com/jiazhai -[18]: https://github.com/codelipenghui -[19]: https://www.splunk.com/en_us/blog/leadership/splunk-to-expand-streaming-expertise-announces-intent-to-acquire-streamlio-open-source-distributed-messaging-leader.html -[20]: https://opensource.com/sites/default/files/uploads/kong_leaderboard.jpg (Kong's 90-day leaderboard chart) -[21]: https://opensource.com/sites/default/files/uploads/pulsarleaderboard.jpg (Pulsar's 90-day leaderboard chart) -[22]: https://opensource.com/article/20/3/documentation -[23]: https://coss.media/2-things-to-measure-and-improve-open-source-community-sustainability/ diff --git a/sources/talk/20201113 3 ways managers build team culture around open source.md b/sources/talk/20201113 3 ways managers build team culture around open source.md deleted file mode 100644 index b7f52a78aa..0000000000 --- a/sources/talk/20201113 3 ways managers build team culture around open source.md +++ /dev/null @@ -1,67 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (3 ways managers build team culture around open source) -[#]: via: (https://opensource.com/article/20/11/selfless-culture) -[#]: author: (Shishir Kamboj https://opensource.com/users/shishirkamboj) - -3 ways managers build team culture around open source -====== -Contributing to open source prevents complacency and teaches people the -value of giving to the greater good. -![Teammates shaking hands and smiling in an office][1] - -Whether you are a senior leader or an individual contributor, you make decisions based on your personal, peers', and colleagues' experiences and feedback. If the people around you are evolving, you will grow with them, as will the organization you support. If the backgrounds and knowledge of the people around you are diverse and changing, you and your team will benefit. - -I've noticed that my skillset and contributions give diminishing returns if I am not challenged. Human beings tend to get into their comfort zones quickly. We get used to working a certain way, and we start to depend on key people to make decisions for us. This leads to complacency, which does not change unless we are challenged due to market shifts or other external forces. - -A selfless approach contributes to growth in career and skillsets as well as helps others grow. When we not only promote ourselves but the right person for the right job, we can be better team players. Our focus becomes what is right for the organization, not what is right for us. It helps both individuals and organizations when we are more flexible and ready for change. - -The big question is: How can you create opportunities for change and create a selfless approach on your team? It may be difficult to ask your employees to be completely selfless. But as leaders, we can align our teams' and employees' growth to the organization's development. The following are a few ways to achieve this. - -### 1\. Help employees create a career - -Invest in your teams. Set a career path for each team member. You may find employees who are happy working on the same things year after year. While I agree that it is essential to have expertise, this can easily lead to complacency and hoarding. I see these as significant concerns. - -When you like what you do, you can excel at it. You should achieve consistent improvement in the knowledge and exposure you get. It helps if you have a forte in an area where you are a point person across the board. At the same time, it's essential to move forward while looking for new avenues to contribute. Working on open source software is an excellent way to make that happen. - -In one of my earlier roles, I led an infrastructure services team. For a long time, this group focused on data center design, hardware, and network engineering. As cloud services started emerging, the team found itself in an identity crisis. The group had not added any new skill sets over the previous few years. The team's motivation scores were at an all-time low. Work became more limited as deployments shrunk to legacy applications. - -It was imperative to invest in the team to help boost morale and connect with the company's vision. The team members needed to see how they added to the company's growth while gaining knowledge and new skills. - -As we investigated our customers' pain points and their needs, we realized an open source strategy around cloud computing would be an ideal investment area. The team's experience made the transition challenging, but the members were ready for the change. The group swiftly jumped on the initiative and brought much success to themselves and the organization. - -Carving out time for your team to work on open source software and contribute upstream is a great way to put your team members out there and help them gain different experiences while working with the broader community. It is imperative for leadership to move team members around to transition them to something new. It is also necessary to remind your team that every initiative, technology, or project follows a curve that starts with innovation, then shows heightened expectation, goes into a growth phase, and eventually declines. - -This point is even more critical for managers and leaders. Sometimes I see leaders who are stuck in the status quo. A leader's attitude can impact a team's culture—negatively or positively. - -### 2\. Correlate the team's success with the organization's success - -Leaders can motivate teams by showing appreciation to contributors. It is critical for teams to understand the impact their work has on customers and the world. It's also vital for them to correlate their role with the company's success. Every employee should know the value they bring to the table. - -Understanding the financial value your team brings to the company is part of this. Share how the product or service your team provides contributes to revenue. This will show how your team how critical their product or service is for your customers and how it impacts the customer experience. This has really worked for me and the teams I lead. - -### 3\. Bring pride to what you do - -Bringing pride to your work is a crucial element in developing ownership. If you take pride in what you do, you will enjoy it more. Employees who are proud of their work will be more eager to share and also look for ways to improve. As a manager or leader, it is your responsibility to bring visibility to your team's work. Appreciation for your team goes a long way, especially if you show your gratitude in front of the broader organization. - -Open source community participation can provide opportunities to contribute to a greater good, give visibility to your work, challenge your thought process, and drive you to think out of the box. What suggestions do you have to helping teams overcome complacency and become more selfless? Please share your thoughts in the comments.  - -Learn how companies can get started in contributing to open source projects, including encouraging... - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/11/selfless-culture - -作者:[Shishir Kamboj][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/shishirkamboj -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/handshake_teamwork_meeting_office_space.png?itok=6H0GEyoc (Community and team smiling) diff --git a/sources/talk/20201113 How to create trust in artificial intelligence using open source.md b/sources/talk/20201113 How to create trust in artificial intelligence using open source.md deleted file mode 100644 index 9c9340d3fc..0000000000 --- a/sources/talk/20201113 How to create trust in artificial intelligence using open source.md +++ /dev/null @@ -1,60 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (How to create trust in artificial intelligence using open source) -[#]: via: (https://opensource.com/article/20/11/ai-open-source) -[#]: author: (Rebecca Whitworth https://opensource.com/users/rsimmond) - -How to create trust in artificial intelligence using open source -====== -Opening up the "black box" helps remove uncertainties about AI outcomes, -providing insight into the modeling process and identifying biases and -errors. -![Brain on a computer screen][1] - -Artificial intelligence (AI) is being used more frequently in our daily lives, with systems such as Siri and Alexa becoming commonplace in many households. Many households themselves are "smart," powered by devices that can control your lights, heating and air, and even the music playing. And those music players are powered by AI that recommends songs and artists you may like. - -However, these systems are often referred to as "black box" systems because we do not know how the data is processed—how do the users know why the model has made that prediction? The advent and widespread adoption of deep neural networks, while providing impressive results, made this even more critical, since humans can't logically interpret how information is processed within thousands of neurons. - -A more safety-critical example of AI systems is when doctors use them to reduce stress loads. These systems do this by quickly ingesting data at a rapid rate; for example, thousands of medical journals could be read and parsed by AI exponentially faster than by a human. This data can then be used to train predictive models, which are used to help doctors diagnose patients, this time armed with far more data points than were available before and in a quicker time. People assume that, with all this information, a machine can make "better" decisions than humans. However, how can we trust a machine to make such critical decisions when we do not fully understand the data processing techniques? - -Open source supports many methods and applications that can lead to better trust in AI systems. In this article, we will explore some of those open source projects as well as the open source mentality, and how by becoming part of the open source community, you can gain more trust in your AI. - -Projects like [LIME][2] and [SHAP][3], which are open source, can explain the outcome of a prediction. To illustrate how this works, let's look at a loan request use case. Based on an AI outcome, a bank rejects a customer who has made a loan request, but why did the algorithm return that outcome? Projects like these aim to make the model more explainable by showing feature importance graphs, i.e., which features were significant to the outcome of the model. Features are the inputs that generate the prediction. In this example, if an important feature used to reject the loan had been "gender," then this would mean the model is biased or incorrect. If the model is known to be wrong, then retraining it will give improved predictions. - -These projects help to build trust in AI systems by explaining the black box model and introspecting decision-making. By open sourcing projects such as this, we can ensure confidence in the system due to the openness of the predictive modeling process. It can give stakeholders confidence that the model is correct and that its recommendations can be trusted, so there is less business risk. - -Open source can stop unfairness, such as the gender-bias example above, by iteratively testing the system's potential outcomes quickly and effectively. If the model is biased, then a notification to the community can be made in a timely fashion, as there are more developers in the community than there would be if the project was closed source. Therefore, if there is trust in the community, then there can be trust in the system. - -Open source platforms leverage ideas from a broad group of peers and offer greater opportunity to innovate and create worthwhile features in a system. These ideas focus the project in a user-driven direction, and improvements come from the developers/users themselves. The system is trustworthy because it has a user-centric design pattern and fosters knowledge of system development and execution. Essentially, the people who have made the system can trust the system. - -When an AI system fails, people may be offended or misled. The project or organization loses people's confidence, and it creates distrust of the system overall. Credibility can be protected by making an AI project open source, because with more testers in the community, the more the data and performance can be verified. - -By leveraging the community-focused nature of open source, we can also ensure that more people with a wider variety of skill sets routinely check the codebase. Predictive models are very good at recognizing patterns; however, they can fail when faced with an outlier. Humans, on the other hand, are very good at being able to recognize and respond to anomalies and nuance. Therefore, having humans involved in the AI system is integral to stopping mistakes, which, in the example use case of the doctor, could actually be deadly. It is essential to have domain experts to check the system's outcomes, and the more, the better. - -Community-focused feature development can also improve trust by ensuring that the project meets company regulations. The community can include stakeholders from the business who can then lead the development focus and reduce business risk. - -A closed approach to AI can lead to inadequate feature design choices that are not relevant to the current needs of the community and businesses. Such features can be harmful to the system; for example, if a medical system's patient diagnostic function has poor accuracy due to lack of testing, then this will mean more human intervention and, ultimately, less trust. - -A closed approach can also stifle creativity and freedom to develop innovative ideas, and it stops the feedback loop on ideas from community users or people outside of the company. A feedback loop is useful, as the people who are developing it have a greater knowledge of the system and how it works, and if the community knows it works, then they are more likely to use it. - -Trusting AI can be hard when people use black box models, due to the lack of understanding of what they are doing and how they work. Open source mentality and models help users and developers to create more trust in AI by opening up the black box, encouraging iterative and collaborative development, and using the community to ensure proper functionality and fewer bugs. Open source allows AI to reach its potential in a trustworthy and meaningful way for users. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/11/ai-open-source - -作者:[Rebecca Whitworth][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/rsimmond -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/brain_computer_solve_fix_tool.png?itok=okq8joti (Brain on a computer screen) -[2]: https://github.com/marcotcr/lime -[3]: https://github.com/slundberg/shap diff --git a/sources/talk/20201114 How I channel my inner Star Trek character at work.md b/sources/talk/20201114 How I channel my inner Star Trek character at work.md deleted file mode 100644 index ed902f4bfd..0000000000 --- a/sources/talk/20201114 How I channel my inner Star Trek character at work.md +++ /dev/null @@ -1,57 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (How I channel my inner Star Trek character at work) -[#]: via: (https://opensource.com/article/20/11/inner-star-trek) -[#]: author: (Jen Wike Huger https://opensource.com/users/jen-wike) - -How I channel my inner Star Trek character at work -====== -I am more of a Deanna Troi in my role as a community manager. How about -you? -![Open source stars.][1] - -In a recent [Twitter thread][2], I self-identified as "some days Deanna, some days Riker." Others shared their own "Star Trek Spectrum," from Worf to O'Brien and McCoy to Neelix. That led me to think more about Deanna Troi: the half-human, half-Betazoid empath who served as Lieutenant Commander and the ship's counselor for most of _Star Trek: The Next Generation_. - -Ever since my middle school days, I felt a kinship with her as I watched her observe and respond to situations and the people in them. Today, as an open source community manager, I think about how these traits are vital to the role of nurturing and guiding a group of people. Here's how I channel my inner Deanna Troi at work. - -![][3] - -opensource.com - -### Holding space - -Instead of speaking the next word, I take a breath. I try not to rush in with something to say in response to the things that happen and in response to conversations with the people that make up our community. I listen, and then when the time is right, I speak. That can be hard especially when I am feeling confident in how to move forward and am eager to show the way. I've learned that taking a beat and slowing down, rarely does harm if coupled with clarity around the situation. Sometimes it is important to act quickly, to step in and guide the community around an issue, but even swift action can be accompanied with thoughtful deliberation.  - -To achieve this, also give yourself space to think and slow down. If you need to think through something, go for a walk, make a tea or meal, and say no to that next meeting to give yourself the time you need to do your job with integrity.  - -### Radical empathy - -Truly hearing and listening to others, then digesting that information, often leads to empathy. Even when we don't feel the same way—often due to differing perspectives—we can get closer to empathizing with others when we listen closely and fully. And why would we want to do that? Because understanding someone allows us to relate to them, and then we can find a solid place from which to nurture and guide them. - -Getting to know each person individually is something I recommend, and if the community you are a part of is too big for that, don't shut down the idea of reaching out at all. Start from where you are, and connect with the next closest person—you have a meeting set up to onboard them, you interacted on social media, you fixed a bug they submitted, etc. This kind of growth is authentic and sustainable. - -### Tapping into intuition - -At first glance, it may seem that those best fit for a role at the helm are those who identify as extroverted and easily heard, however, I've found those who know how to silence the noise and follow their own inner certainty are those who can inspire others to do the same. And that is where the power is, inside all of us, not just one of us. - -Open source communities are continuing to be called upon to innovate, act, and lead, and these traits are important not just for leaders to cultivate but for everyone involved in working together as a group to achieve a goal or collaborate on a project. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/11/inner-star-trek - -作者:[Jen Wike Huger][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/jen-wike -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/osdc_520x292_opensourcestars.png?itok=hnrMETFh (Open source stars.) -[2]: https://twitter.com/JenWike/status/1318188923298906113 -[3]: https://opensource.com/sites/default/files/pictures/deannacover001.jpg diff --git a/sources/talk/20201125 Got something to say- How to get started writing.md b/sources/talk/20201125 Got something to say- How to get started writing.md deleted file mode 100644 index 8af5d1ea10..0000000000 --- a/sources/talk/20201125 Got something to say- How to get started writing.md +++ /dev/null @@ -1,87 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Got something to say? How to get started writing) -[#]: via: (https://opensource.com/article/20/11/how-write-article) -[#]: author: (Jen Wike Huger https://opensource.com/users/jen-wike) - -Got something to say? How to get started writing -====== -A community manager and editor shares her inspiration and tips for -finding and sharing your expertise with others. -![A person writing.][1] - -Well, I suppose after all this talk of how to find your story and then write your story, I should make a post about how to do just that. I've broken it down into three sections: how to find your story, how to write your story, and how to share it and get it published. - -During the All Things Open virtual event this year, I was invited to share my tips, and now you can watch that. It's about 20 minutes with some questions and commentary at the end. - -You may have a clear reason why you want to write, or you may need some prodding. My belief is that we all have something valuable to share. Really. And the reasons are made clear in the survey answers in [this document][2]. One reason that resonates with many in the tech world is "because my manager wants me to," which could lead to a promotion or increased thought leadership in your field. Another great one for those working on an open source project is, "it is an act of giving back to the community... with the simultaneous goal of getting your name out in the community and building connections for other career opportunities." - -### How to find your story - -Do your homework, but this time hopefully it's a bit more fun and a bit less time-consuming. By all means, take the afternoon or the week to complete [this worksheet][3], but if you have an hour during work, this can fit into your busy schedule. Although I'm happy to take a look and help guide you once you get started, no one is grading your responses. They're yours, and their only goal is to get you closer to that elusive article. Whether it's your first, or your 100th, we all have reasons why it can be difficult to write. - -The [worksheet][3] asks a variety of questions in a "choose your own adventure" type way. You can answer all of the questions, or skip to the parts that interest you most. It starts with asking: - - * What do you do at your job? - * What are you passionate about? - * What communities are you or do you want to be a part of? - - - -After you complete the worksheet to your liking, take a break. A few minutes, a few hours or days, and go back to it. What jumps off the page and still rings true? Perhaps it's now plainly obvious what your article should be about. If you still need a way to prioritize your choices, label each one with one of these time-based categories: - - * Easy to write (you know this topic backward and forwards) - * Quick to write (explaining is fast and a short read) - * Hard to write (you may need to think through the process and list out many details) - * Time-consuming to write (this may take some additional research in addition to being highly detailed) - - - -### How to write an article - -First, sit down and make yourself write an outline. I know, I know... boring! But this can save you a lot of time. Once you've landed on an outline that works for you and your topic, once you sit down and start writing, there's a better chance you'll get into the flow, following your outline, and knock it out in less time than you imagined. And in an amount of time that feels good to you and gives you a good feeling about writing, especially again and again. - -Then, share it with a friend or an editor. Friends can be a quick and easy outlet, especially if they are of the writer sort. And, I encourage you to send it to an editor if you have a particular publication in mind for where you'd like to try to get it published. While you wait, buff up on your writing by taking a look at [a solid style guide][4]. - -Once you get to a place where you feel ready to get writing, review the format of an article and identify who your audience is. The format of an introduction that describes what the article is about and what the reader will learn, the body of the article focused on walking the reader logically through the steps or phases with straightforward headers, and a conclusion that gives final thoughts and a summary. - -I like to write using a shareable document for easy collaboration and editing with others and editors. - -### How to get your article published - -First, decide whether you want to self-publish, on your own blog or a place like Medium, or if you want to get your article published on a publication like Opensource.com or Linux Today. - -If you're reaching out to a publication, try to find information about how they would like you to submit your article. Some have webforms, some want you to simply send them an email. Some, like us, [have both][5]. Let them know who you are, what you wrote about, and perhaps why you wrote about it. - -For example: My name is Jen Wike Huger. I'm a community manager and editor for Opensource.com, so my expertise is writing and working with authors. My article is about how to find your story, writing, and getting published. - -### Wrapping up - -The slide deck, worksheet, survey answers, and style guides for writing are [on GitHub][6]. - -The slides are from the All Things Open presentation. The worksheet is to help you decide what to write about, to find your story. The survey answers will inspire you and answer the question: Why should I write about what I know anyway? And the style guides will help you before and during the actual writing process, covering grammar, formatting, and more. - -There are a ton more details baked into every part of this, so if you have specific questions, I welcome them in the comments, via email, or on Twitter. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/11/how-write-article - -作者:[Jen Wike Huger][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/jen-wike -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/rh_003784_02_os.comcareers_resume_rh1x.png?itok=S3HGxi6E (A person writing.) -[2]: https://github.com/JenWike/getpublished/blob/main/Why%20write_.txt -[3]: https://github.com/JenWike/getpublished/blob/main/Worksheet_%20How%20to%20find%20your%20story.odt -[4]: https://github.com/JenWike/getpublished/blob/main/styleguides -[5]: https://opensource.com/how-submit-article -[6]: https://github.com/JenWike/getpublished/ diff --git a/sources/talk/20201127 4 questions about AI ethics and how open source can help.md b/sources/talk/20201127 4 questions about AI ethics and how open source can help.md deleted file mode 100644 index 7417e413bc..0000000000 --- a/sources/talk/20201127 4 questions about AI ethics and how open source can help.md +++ /dev/null @@ -1,85 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (4 questions about AI ethics and how open source can help) -[#]: via: (https://opensource.com/article/20/11/ai-ethics) -[#]: author: (Sahana Sreeram https://opensource.com/users/sahanasreeram01gmailcom) - -4 questions about AI ethics and how open source can help -====== -Open source resources could provide effective solutions to some key -ethical considerations for artificial intelligence. -![A robot arm illustration][1] - -As a high school student, I've become very interested in artificial intelligence (AI), which is emerging as one of the most impactful innovations of recent times. This past summer, I was selected for the [AI4ALL][2] program, where we learned how to develop AI systems using Python. - -For my final project, I created an object-detection program and integrated it with a virtual drone simulation. Throughout the project, I was able to use open source frameworks, including [TensorFlow][3], [Keras][4], [Scikit-learn][5], and [PyTorch][6], to aid in developing the object-detection machine learning (ML) algorithm process. - -By doing this project and using other open source frameworks like [Linux][7], [Apache Kafka][8], and [ElasticSearch][9], I realized the impact of open source technologies on AI system development. Access to these powerful, flexible technologies enables people to experiment with and develop AI systems. - -I discovered another important aspect of AI when I attended a seminar at [William & Mary][10] about AI and ethics. As we discussed some of the ethical concerns surrounding AI systems, I started wondering: How do I make sure that the systems I'm developing are ethical? - -To answer my question, I interviewed three experts: [Alon Kaufman][11], PhD, CEO of Duality Technologies; [Iria Giuffrida][12], PhD, a law professor at William & Mary; and an executive in the fintech industry (name kept confidential upon request). I am very grateful to these experts for giving me their valuable time, fueling my curiosity, and inspiring me with their journeys in this field. - -### How important of a role does ethics currently play in AI systems? - -As more advances are made with AI, society is starting to appreciate the importance of ethical implications. However, the discussions about ethical values in AI system development are still an academic exercise, Dr. Kaufman says. Today, much of AI, and especially ML models, remains a "black box" because advanced algorithms and complex AI technologies (such as deep learning) produce models that are not self-explainable. Without having explainable AI/ML models, it's hard to introduce ethical considerations into the conversation.  - -For Dr. Kaufman, the industry's focus today is on data security and protection. As more smart technology is developed, it's getting easier to acquire data. The large amounts of data handled in AI systems make them vulnerable to cyber breaches. - -While it is certainly vital to build data protection measures for AI systems, it is becoming critical to shift the focus to other ethical implications, such as privacy and machine bias. - -### Is ethical AI development a good goal for the future, or is it wishful thinking? - -The short answer is that it is a reasonable goal to create ethical AI systems, but it will take time. - -"Ethics" is a difficult concept to define. One approach is to look at ethics through a three-pronged methodology: security, privacy, and fairness. Most of the industry is now focused on security, and a practical next step could be to address the issues of privacy and ensuring data anonymity. "Privacy-enhancing technologies, such as secure computing and [synthetic data][13] could offer assistance in this process," explains Dr. Kaufman. Only after finding solutions to the security and privacy areas of ethics is it reasonable to venture into machine fairness and bias. - -There are many factors to consider in the development of unbiased AI. "The first step is the deployment of active-learning models into society, followed by the actual development of [fair systems][14]," says the fintech industry expert. He explains that when ML equipped with active learning is deployed, society's own biases are often imposed on the model, even unknowingly, creating very flawed systems. When developers create AI systems, their preconceived notions must never be injected into the system code, says Dr. Kaufman. These are some of the key areas that must be addressed in developing unbiased models. - -### How early should students be exposed to ethical considerations in AI/ML? - -It's increasingly important to learn not only about computer science principles but also about how to build ethical models. Professor Giuffrida says computer scientists and AI developers have not explicitly been trained to think about the ethics behind their systems. This is why the development of bias-proof systems cannot be a linear process, she says; they must go through multiple review levels to minimize injecting bias in the machine process. - -Professor Giuffrida emphasizes that AI development should be treated as an interdisciplinary study, meaning that it is not just developers who are in charge of creating accurate and ethical systems—that's an enormous responsibility to put on one group. But introducing ethical concepts to aspiring AI engineers at a foundational level could accelerate building sustainable, functional, and ethical systems. - -### Will ethics come at the expense of innovation? - -This was the main question I kept coming back to throughout the interviews. During the AI4ALL course, we explored the recent [Genderify fiasco][15], which was AI software intended to identify a user's gender based on several data points, including name, email address, and username. When launched for public use, the results were highly inaccurate—for example, the name "Meghan Smith" was assigned female, but "Dr. Meghan Smith" was assigned male. These biases led to the service's failure. More comprehensive ethical reviews and tests conducted before launch could make this type of product successful, at least initially. - -All three experts voiced the idea that ethical boundaries are becoming necessary. According to the fintech executive, "Reasonable ethical constraints will not limit innovation—companies must eventually figure out how to innovate within these boundaries." In this fashion, ethical considerations could increase sustainability and success for a product—rather than putting a complete stop to AI development. Venture capitalist Rob Toews offered an interesting perspective on [regulating AI][16], and I recommend this article if you want to learn more about this topic. - -Ultimately, introducing ethics into pure AI is a daunting but necessary step to secure AI's viability in our world. Open source resources could provide effective solutions to some key ethical considerations, including comprehensive system testing. For example, the [AI Fairness 360][17] open source toolkit by IBM assesses discrimination and biases in ML models. Open source communities have the ability to develop tools like this to provide greater coverage and support for ethical AI systems. In the meantime, I believe it is my generation's responsibility to build bridges between creating revolutionary AI technologies and considering ethical implications that will stand the test of time. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/11/ai-ethics - -作者:[Sahana Sreeram][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/sahanasreeram01gmailcom -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/robot_arm_artificial_ai.png?itok=8CUU3U_7 (A robot arm illustration) -[2]: https://ai-4-all.org/ -[3]: https://www.tensorflow.org/ -[4]: https://keras.io/ -[5]: https://scikit-learn.org/stable/ -[6]: https://pytorch.org/ -[7]: https://www.linux.org/ -[8]: https://kafka.apache.org/ -[9]: https://www.elastic.co/ -[10]: https://www.wm.edu/ -[11]: https://www.linkedin.com/in/alon-kaufman-24067b154/ -[12]: https://law2.wm.edu/faculty/bios/fulltime/igiuffrida.php -[13]: https://en.wikipedia.org/wiki/Synthetic_data -[14]: https://en.wikipedia.org/wiki/Fairness_(machine_learning) -[15]: https://www.theverge.com/2020/7/29/21346310/ai-service-gender-verification-identification-genderify -[16]: https://www.forbes.com/sites/robtoews/2020/06/28/here-is-how-the-united-states-should-regulate-artificial-intelligence/?sh=1c242ebc7821 -[17]: https://aif360.mybluemix.net/ diff --git a/sources/talk/20201127 Comparing the similarities and differences between inner source and open source.md b/sources/talk/20201127 Comparing the similarities and differences between inner source and open source.md deleted file mode 100644 index 98bfd01bb2..0000000000 --- a/sources/talk/20201127 Comparing the similarities and differences between inner source and open source.md +++ /dev/null @@ -1,87 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Comparing the similarities and differences between inner source and open source) -[#]: via: (https://opensource.com/article/20/11/inner-source) -[#]: author: (Nithya Ruff https://opensource.com/users/nithyaruff) - -Comparing the similarities and differences between inner source and open source -====== -Open source principles can be applied within a company to access the -benefits of collaborative development. Here's how. -![two women kanban brainstorming and brainmapping with post-it notes on a whiteboard ][1] - -Open source software (OSS) has been around since the 1990s and has thrived, quickly growing to become mainstream. It is now more well understood around the world than it has ever been before. Some refer to it as FOSS to highlight the Freedom part of open source (Free and Open Source Software). And in 2014, at OSCON, the term "inner source" was debuted, and people started talking about how to use the principles of open source, but inside of a company. It raised several questions for those unfamiliar with the term, which I hope to answer with this article. For example, what is similar about the two, what is different, the company roles involved in the two, is inner source taking the energy away from open source, etc. These are all fair questions, and as my organization practices both and is involved in both movements, I want to take some time to share insight with this audience as a developer, as a company, and as an open source enthusiast. - -There are two principal elements that make open source successful. The first is that it is licensed under OSS licenses that promote and support free distribution of the source with the binaries for people to use any way they want. When GPL (General Public License) was introduced in the 1990s, it was revolutionary—no charge, source included, and no restriction on use. That helped proliferate open source projects like Linux and allowed rapid innovation. - -The other particularly essential element is the way open source software grows and develops. It happens through a community of people who are most often not in the same organization or geographic location. They come together because they believe in the solution or mission of the project. Because these people came from different development cultures but needed to work on common projects, they evolved norms for working together, such as how they communicate with each other, how decisions are made, and how to review new submissions. This codification of how disparate teams work without being in the same organization is unique and powerful. This type of development is known as "collaborative development." - -Not all communities are effective, but the ones who figure out how to work together often have some common elements: - - * Governance: They work out how the project will govern itself—decisions, roles, reviews, meetings, mission, budgets, organization structures, etc. - - * Communication: They figure out how to work with people across time zones, across cultures, and organizations. For example, documenting decisions on a mailing list vs. live discussions. Providing people with 24 to 48 hours to review and respond to a question or decision is another good practice established to allow people in different zones and different work situations to collaborate. - - * Common tools: Review and communication are imperative to development. Tools such as GitLab and GitHub build in collaborative practices to enable working across teams. - - * Architecture: Projects are often architected for maximum engagement into components, API (Application Programming Interface), sub-systems so that not everyone needs to know everything, or they don’t change the whole project when they make changes. - - - - -Both in response to digital challenges as well as changing customer expectations, enterprises outside of the tech vendor space, in particular, have been transforming how they build products and services as well as how they engage with their customers. And with the 2020 COVID-19 pandemic, many companies and organizations have gone virtual and fast-tracked their digital transformation plans to meet changing customer and market needs. And some accelerated their plans to capture new opportunities and support changes in how customers consumed their services. Teams that relied on physical proximity, hallway conversations, and other elements of development were faced with a need to change how they worked. Many of them realized that they could turn to the collaborative development model of open source for examples of how to work remotely and effectively. - -Even before the COVID-19 pandemic, because of early digital transformation plans, companies had already begun adopting and working with open source and had realized the benefits of open innovation. The need to go faster, reduce costs, breakdown silos across the company, and reuse vs. reinvent has created a spur to do more collaborative development or open source-style community development inside the company walls. - -The benefits of collaborative development can be applied in many ways: - - * Collaboration among remote and geographically distributed organizations - - * Creating a more open and collaborative culture inside a company - - * Creating communities around common interests and common problems - - - - -The traditional way companies develop software inside companies is quite different from the open source collaborative model. Because of how budgets, organization structures, and incentives work, teams work in silos, are top-driven, and have no incentive to share and collaborate across the organization. Teams often report to the same organization, resulting in low documentation of decisions and low leverage of experts across the company. - -Many organizations have been experimenting with collaborative development for some time. At Comcast, for example, teams called it enterprise source. But then the term "inner source" was created by Tim O’Reilly, founder, CEO, and publisher at O’Reilly publishing in 2001. (This [interview][2] with Tim is a remarkable story of how he came to coin this term). He talks about how the modularity of code and the access to source was a huge driver for collaboration, even more than the license itself. He calls it the "Architecture of Participation." Soon after, in 2015, Danese Cooper, who was running the OSPO (Open Source Program Office) at PayPal at that time, [introduced this term][3] at OSCON. She also shared what PayPal had been doing inside the company to break down silos and to create collaboration. The [InnerSource Commons][4] non-profit foundation was also established to allow people to collaborate on their experiences, patterns, and best practices. Here is a more formal definition of inner source: - -> "Inner source is an adaptation of open source practices to code that remains proprietary and can be seen only within a single organization, or a small set of collaborating organizations. Thus, inner source is a historical development drawing on the open source movement along with other trends in software." -> -> —From [_Adopting InnerSource_][5], O’Reilly Publications - -The biggest similarities between open source and inner source involve the collaborative development model. Working across teams inside an organization on common source code is a culture change for a traditional enterprise. Both versions of it need sponsorship and support from the top to thrive inside an organization. - -The biggest differences are what motivates one to start an inner source project over an open source project. The often-repeated wisdom of open source communities is that people get into it because they have an "itch to scratch." Often, trying to solve a technical issue is the reason that they start a new project. With inner source, there may be more of an organization-wide reason to start opening their code and collaborating with other teams. One main reason is to enable another team to work more effectively with the platform or to reduce a duplicate effort. Some organizations have chosen a default approach of opening all repositories for anyone in the company to see and use or collaborate on. One huge driver has been to stage it as an inner source project before fully open sourcing it. This allows the team to hone a good collaboration strategy and practice before open sourcing. - -I like the model that PayPal used—having inner source and open source be a part of the same organization. There are shared practices, skills, and tools that can be used across the two. At Comcast, both practices live in the Open Source Program Office. The inner source team has built a guild with members of architecture, security, and leadership to develop the practice and governance of our inner source projects. You can listen to Comcast Open Source Program Manager and InnerSource leader Brittany Istenes [talk][6] to hear more about what we did with the guild and scaling inner source back from the InnerSource Commons Fall 2020 Summit. - -While some people criticize the inner source movement and say that it has distracted from the open source movement, it has actually accelerated open source collaborative practices inside organizations. While most companies use open source, few were deeply engaged in communities or understood how open collaboration works. The fact that the collaborative development model can be used inside a company to do product or organizational work has led to a deeper understanding and better development practices at Comcast. I see a natural growth from this to more contributions and more engagement with open source communities as teams feel more confident in engaging through their inner source work. - -No matter what you call it—inner source, enterprise source, collaborative development—more collaboration inside the company is a particularly good thing. Better development practices, documentation, onboarding, and mentoring are often direct results. If you are interested in more information, check out [innersourcecommons.org][7] for great talks from several companies practicing inner source, including Comcast. I believe that inner source is the next phase of open source development. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/11/inner-source - -作者:[Nithya Ruff][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/nithyaruff -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/whiteboard-brainstorming-brainmapping-design-thinking-postits-kanban.png?itok=Is2Tg1Jk (Brainstorming with post-it notes on a whiteboard) -[2]: https://www.youtube.com/watch?v=2HR0D8_tKoA&t=573s -[3]: https://www.youtube.com/watch?v=r4QU1WJn9f8 -[4]: https://innersourcecommons.org/ -[5]: https://www.oreilly.com/library/view/adopting-innersource/9781492041863/ch01.html -[6]: https://www.youtube.com/watch?v=RenQ8B7aX84 -[7]: http://innersourcecommons.org diff --git a/sources/talk/20201128 Why failure should be normalized and how to do it.md b/sources/talk/20201128 Why failure should be normalized and how to do it.md deleted file mode 100644 index 5ec94852ce..0000000000 --- a/sources/talk/20201128 Why failure should be normalized and how to do it.md +++ /dev/null @@ -1,90 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Why failure should be normalized and how to do it) -[#]: via: (https://opensource.com/article/20/11/normalize-failure) -[#]: author: (Lisa Seelye https://opensource.com/users/lisa) - -Why failure should be normalized and how to do it -====== -"Everybody is perfect, except you." This toxic thought can creep in and -ruin your confidence. Here's how to normalize failure during the -learning process and remember that everyone makes mistakes. -![failure sign at a party, celebrating failure][1] - -All of your heroes have failures under their belts—from minor mistakes to major disasters. Nobody knows how to do everything automatically, and the process of learning is usually a messy one. So why is the perception that everyone but you knows what they’re doing so common? Why do we externalize our successes but internalize our failures? - -How does it make you feel when you struggle to learn something new, then see another person take their Jira card away and return at the end of the sprint with something fully fleshed out and working, gushing about it at the demo? Sure, you closed your card too, but it was really hard! There was a new algorithm, a new programming language, a new system all to be learned. How did she make it look so effortless? - -The truth is, she might have struggled with the same issues you did and wondered how you made it look so effortless! - -### Failure is normal, healthy, and invisible - -Whether we call them mistakes, bad assumptions, or some other euphemism, it's hard not to judge ourselves or expect better of ourselves, especially compared to other people. - -My background is largely in Linux systems administration, and in this line of work, it is often a matter of "when" and not "if" we will have a production service disruption. Those service disruptions can happen for various reasons—sometimes it's because a person made a mistake. Setting aside the discussion around controls to mitigate human error, we can see plain as day that I, Lisa Seelye, made a mistake that directly caused a production problem. - -Whenever a group of sysadmins gets together, we usually end up talking about our work, and inevitably, we get around to stories of production service disruptions that we’ve been a part of (or caused). It’s cathartic to hear how badly other people have messed up and then look around and see that we are all human and making mistakes is part of that. - -I feel that this kind of sharing is vital to the success of people in the information technology sector. - -### Why should we share? - -In addition to sharing our mistakes in order to normalize them, I also believe that it is equally important to share our learning processes—this is both to drive home the idea that we all start somewhere and that learning is often filled with failures and misconceptions. - -As an individual, I need to remind myself that it may only appear that my peers return from a week working on a card with a fully fleshed-out solution. Reality may, in fact, be that they don’t understand the requirements, the codebase, the language, the algorithms needed, etc. Either way, it’s a logical fallacy to believe they do not face these challenges because of the appearance of the final product. - -### But why should we share? - -We should share our learning experiences because we all benefit from hearing about the challenges other people face and how they overcome them. If the Jira card wasn’t clear, then we can do better. If the algorithm wasn’t clear, then maybe education can be done around it. - -Most importantly, we need to normalize that it’s okay not to know everything, that it’s okay to still be learning, and to ask for help. Setting an example for new or more junior engineers is important. In our industry, we deal with extremely complex systems that can interact with one another in strange or unexpected ways. In many cases, it is simply not possible for one person to know everything. Being open about our learning processes and our mistakes can lead to tighter bonding. - -Do new engineers on your team have the set expectation that it’s okay to interrupt and ask questions? Saying it on day one is easy, but practicing the value is another thing. How are approachability and openness demonstrated in your team? - -### My learning opportunities - -It could be very easy to title this section "my mistakes" and then rattle off all the times I’ve made mistakes, but that doesn’t quite illustrate the point. I recognize these mistakes, but they’re also events that expanded the understanding of my craft. While I didn’t set out to intentionally do any of these things, I certainly learned from them. - -I have accidentally dropped (deleted) a customer’s database. It was lucky for everyone that it was a beta-phase database and no further harm was done. I learned a valuable lesson that day: be very watchful of what code is doing, and be careful about what environment you are working in. - -One day, while performing routine maintenance with an odd DNS setup, I accidentally broke the ability for customers to provide credit card information to the secure site. We had two "payments" DNS records that served to override a wildcard DNS record, and I assumed that the second "payments" record was still present. It wasn’t. And then the wildcard record took over, and the DNS started behaving like "payments" wasn’t special at all anymore. Of course, I had no idea this was happening at all—it wasn’t until my maintenance was over that I learned of the folly. - -Customers weren’t able to provide payment information for almost two hours! I learned my lesson, though: when there is something special about a particular configuration, be sure to make sure it stays special throughout its lifetime. When DNS gets involved, all kinds of things can break. - -Before I started speaking at conferences, I was an attendee, and I watched talks online. Pivoting to speaking myself, I was worried that I’d say too many "umms" and "uhs" and that my jokes would fall flat. The speakers I enjoyed over the years seemed to not have those problems at all, while I was unpolished. - -But once I got up on stage, I found that my perception had changed. I had practiced my talk with an audience and listened to their feedback—turns out I had a little polish. In front of the audience, I did misspeak and not say something exactly how I wanted, but it didn’t matter. What I didn’t realize from my vantage point in the audience is that the audience wants the speaker to succeed, and the speaker can shift directions in their talk without the audience knowing. - -I certainly have made and continue to make those sounds, and I have even had to correct major factual information the night before a talk, but the audience never knows. The audience sees what I show them and, because they want me to succeed, they forgive my "umms" and "uhs." - -I admit that I am not perfect. I ship bugs, and I try to learn from them. - -### How to share - -Sharing the difficulties we’ve encountered along the learning process or in our day to day career is important, though just as important is how they are shared. I share the things I’ve learned (the hard way) with frankness and no self-judgment. It is in this spirit that I think we should all share. I’m not a bad person because I’ve made mistakes, and neither are you. - -How, then, should we share? Who is the audience? - -In the midst of a production service disruption, like with the DNS payment situation above, there’s no room for coyness or hiding anything. The most important thing is to make key stakeholders aware and then rally to fix the situation. The audience is first internal—your team, business leaders, the support team. Next, the audience is outward-facing—the customers. It is wise to involve communications experts when crafting that outward message. - -When sharing with a junior engineer, we need to normalize the learning process. People aren’t born knowing how pointers in C work, so we all need to learn what the pitfalls of pointers are. It’s okay to need to learn new skills at any skill level, and it’s also okay to need to reinforce those skills. The message we send should be free of judgment. - -So write a blog post, make a Twitter thread, share frustrations in Slack channels, ask for help. Together we can dismiss the myth that everybody's perfect, except you. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/11/normalize-failure - -作者:[Lisa Seelye][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/lisa -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/fail_failure_celebrate.png?itok=LbvDAEZF (failure sign at a party, celebrating failure) diff --git a/sources/talk/20201206 Openness is the key to innovation, history shows.md b/sources/talk/20201206 Openness is the key to innovation, history shows.md deleted file mode 100644 index 9bb9775817..0000000000 --- a/sources/talk/20201206 Openness is the key to innovation, history shows.md +++ /dev/null @@ -1,106 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Openness is the key to innovation, history shows) -[#]: via: (https://opensource.com/open-organization/20/12/open-innovation-history) -[#]: author: (Ron McFarland https://opensource.com/users/ron-mcfarland) - -Openness is the key to innovation, history shows -====== -History demonstrates the kinds of organizational structures that foster -innovation: open, communal, and humble. Here are just two examples. -![Team checklist][1] - -In the [first part of this article series][2]—an extended review of the book [How Innovation Works][3] by [Matt Ridley][4]—I examined Ridley's characterization of innovation: it's gradual, incremental, and collective, and involves extensive collaboration between parties. This, I argued, is why [open organization principles][5] are so important and play a major role in fostering innovation. - -In [part two of the series][6], I reviewed Ridley's assessment of the environments where innovation and discovery thrive, and I demonstrated some essential characteristics of the innovation process. - -Now, in this concluding part of my review, I bring these ideas alive by recounting case studies of innovative discoveries throughout history. - -### Innovation throughout history - -In _How Innovation Works_, Ridley mentions that innovation is mostly a "bottom-up phenomenon." For example, throughout the 19th century, as Britain and Europe developed new railways, the steel industry, new applications for electricity, the textile industry, and many other breakthroughs, governments weren't involved. Only after the fact did governments play the role of regulator and standards creator. Sometimes, governments even played the role of the customer or user. - -The same was true in America in the early 20th century. There were few public subsidies for research and development before 1940. And after World War II, the Japanese miracle was a function of private corporations backed by a vast ecosystem of small enterprises. Most efforts resembled open organizations—a modest group of dedicated hands-on, ground floor members. That's where most innovation originated, on the ground floor according to open organization principles. - -By contrast, the Soviet Union was a very clear case of a public governmental entrepreneurial state; it funded a great deal of research centrally, and allowed virtually no involvement from private enterprise. Innovation in transportation, food production, health care, and consumer products suffered as a result. (In this environment open organization principles were not in use.) - -Innovations come from humble places, Ridley's argues, and large, bureaucratic corporations were not particularly good at developing innovative products. Instead, small, loosely assembled communities (open organizations with front line teams) have been more innovative throughout history. They have been far more capable of exploring new concepts, particularly if they have a wide base of contributions to work with. - -Let me review two historical examples of this, drawn from Ridley's work (one brief, one lengthier). - -### Lighting every house (the light bulb) - -Who invented the light bulb? Easy answer: Thomas Edison. - -But at least a dozen other people were working on similar technologies around the same time, even before Edison, as Ridley documents in detail in _How Innovation Works_. Edison, however, [gets recognition for the invention][2]. - -Through some 50,000 trial-and-error experiments, a full complement of staff developed a usable, affordable light bulb for interior and room lighting (Edison's team tested roughly 6,000 plant materials until it found the right kind of bamboo for the bulb's filament). The invention made both oil lamps and gas lamps things of the past. Perhaps better than anyone else at the time, Edison knew that innovation was largely a team effort. He hired groups of skilled craftsmen and scientists (totalling 200 people in all) and worked them incredibly hard. Their collaboration, iterative and adaptive testing, and sharing eventually led to the registration of more than 400 patents in six years. Edison supported his innovative teams extensively, stuffing his workshops with every kind of material, tool, and book. His goal was not simply to inspire invention; it was to turn ideas into practical, reliable, and affordable items—the result of extensive application of open organization principles. - -### Two approaches to flight (the powered aircraft) - -Now let me offer a more detailed example, one focused on the innovation of powered aircraft. To better illustrate the advantage of an open organizational approach, I'll juxtapose two approaches to this innovation. - -#### Samuel Langley's approach - -In 1903, the East Coast of the United States saw the first airplane flight by Samuel Langley. It impressed the US government, which expressed a desire to invest in the development of powered flight (powered flight, of course, would allow people to travel longer distances). - -Innovations come from humble places. - -Initially, the American government supported Langley's experiments with an investment of $50,000. Later, it offered another US$20,000. Langley had convinced the government he could build a powered plane that would stay in the air longer than a simple glider (Langley was a professor from New England, an astronomer, and a well-connected head of the Smithsonian Institute in Washington, DC, so his reputation would have seemed to support his claims). - -Because of his confidence, he decided to _keep all his research and experiments confidential_. He could not have been more closed in his approach to research and experimentation. - -This went on for seven years, until a test plane was finally ready for presentation to the government. Langley was not a hands-on experimenter and was not willing to pilot his prototype plane himself (he commissioned Charles Manly). The plane crashed after flying just a short distance, to everyone's disappointment. Langley's reputation never recovered. The fiasco led to the US government pulling all funding for the project, and it gave up on powered flight after a decade of wasting money. - -From the perspective of someone thinking with open organization principles, Langley would seem to have done everything wrong. He spent lots of money, depended on a single authority (the government), consulted with very few outside people, and built the full aircraft from scratch instead of building and testing components in an incremental way, by experimenting with different designs, shapes, sizes, and weights. He built _no community_ to work on the project. He _included_ only the minimum necessary outsiders. He was _not transparent_ of his activities or concerns. He did not establish step-by-step milestones in which he could make _adaptations_ if need be. And, he _collaborated_ with as few people as possible. - -#### The Wright brothers' approach - -But just south of Langley's failure, in an area called [Kitty Hawk][7], with almost nobody watching, two brothers from Ohio were busy achieving innovation in powered flight, and by spending only a fraction of what Langley did. They were Orville and Wilbur Wright. - -The Wright brothers' initial test flight lasted 12 seconds and traveled 40 yards (37 meters). Their second flight (later that day) lasted almost one minute and covered more than 800 feet (244 meters). Just five people were present to observe these successful powered flights. - -Thinking again with open organization principles, we might say the Wright brothers did everything right. - -Innovation happens when someone creates a community while working on a problem. Through concurrent community collaboration, that group might make discoveries that lead to an innovation. - -These two brothers were not well-known researchers (or even engineers for that matter). They simply were experienced bicycle builders and had a small shop. They were diligent craftsmen and loved building things. They simply wanted to address the challenges and problems of powered flight through building an aircraft. Fueled by those passions, they started building a development team (_community_ building), which included others in the project to bring in valued experience. They _included_ key outside people. They were very _transparent_ regarding their activities and concerns (more on this in a moment). They established step-by-step milestones in which they could make _adaptations_ if need be. - -Moreover, they _collaborated_ with as many people as they needed to, gathering expertise where they could find it. First they wrote to Otto Lillienthal in Frankfurt, Germany**,** a famous designer of gliders. They also approached a rather eccentric French-American in Chicago by the name of Octave Chanute, who studied the powered flight problems to overcome and published papers on them. These are examples of inclusivity at its best—approaching people far different than them to achieve something. Thorough documentation of the Wright brother's collaboration with Chanute (and his extensive network of like-minded thinkers) helped solidify their basic design for a powered aircraft. And just by luck, someone the Wright brothers hired to work in the bicycle shop was an extremely good mechanic and loved designing machines. His name was Charlie Taylor. The internal combustion engine was just being developed at that time, and the Wright brothers knew that the motors on the market were too heavy for an aircraft, so Charlie built one from scratch, using aluminium (a much lighter material). - -This more open approach to innovating in the field of powered aircraft is the one that eventually gave rise to the inventions (and industry) we enjoy today and brought the Wright brothers fame. - -### History lessons - -Think about both those examples, two case studies of innovation through open organization principles. Both indicate that, for _any_ innovation, quite a few people are required (not lone individuals). In both cases, inventors needed to "cross-pollinate" ideas in two ways: - - 1. concurrently, working together directly, and - 2. learning sequentially over time. - - - -Our lessons from history illustrate these approaches to innovation. Innovation happens when someone creates a _community_ while working on a problem. Through concurrent community collaboration, that group might make discoveries that lead to an innovation. Sometimes, however, those communities fail. But because they _document_ their work as they collaborate, another person (and community) can replicate what they've done and improve upon it (sequential innovation)—perhaps succeeding where the first group did not. - --------------------------------------------------------------------------------- - -via: https://opensource.com/open-organization/20/12/open-innovation-history - -作者:[Ron McFarland][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/ron-mcfarland -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/checklist_todo_clock_time_team.png?itok=1z528Q0y (Team checklist) -[2]: https://opensource.com/open-organization/20/10/best-ideas-recognition-innovation -[3]: https://www.goodreads.com/en/book/show/45449488-how-innovation-works -[4]: https://en.wikipedia.org/wiki/Matt_Ridley -[5]: https://theopenorganization.org/definition/ -[6]: https://opensource.com/open-organization/20/11/environments-for-innovation -[7]: https://www.google.com/search?rlz=1CAKMJF_enJP874&sxsrf=ALeKk02B7m1kL1nXrRT2cH4-zyr8VV_DDw:1597632027500&ei=u-05X5byJ8Ko-QaRt6HoDQ&q=kitty%20hawk%20museum&oq=kitty+hawk+mus&gs_lcp=CgZwc3ktYWIQARgAMgIIADICCAAyAggAMgIIADICCAAyAggAMgIIADoECAAQRzoHCC4QJxCTAjoHCAAQFBCHAjoICC4QxwEQrwE6BAgAEENQ04sBWIqeAWCvtAFoAXABeACAAY4BiAHEBZIBAzEuNZgBAKABAaoBB2d3cy13aXrAAQE&sclient=psy-ab&npsic=0&rflfq=1&rlha=0&rllag=36111118,-75775286,9090&tbm=lcl&rldimm=17550871878646241173&lqi=ChFraXR0eSBoYXdrIG11c2V1bVobCgZtdXNldW0iEWtpdHR5IGhhd2sgbXVzZXVt&phdesc=B2b85nIlVwQ&ved=2ahUKEwjz-uuLm6HrAhVLFogKHXjGD7YQvS4wAHoECAoQLQ&rldoc=1&tbs=lrf:!1m4!1u3!2m2!3m1!1e1!1m4!1u2!2m2!2m1!1e1!1m4!1u16!2m2!16m1!1e1!1m4!1u16!2m2!16m1!1e2!1m5!1u15!2m2!15m1!1shas_1wheelchair_1accessible_1entrance!4e2!2m1!1e2!2m1!1e16!2m1!1e3!3sIAE,lf:1,lf_ui:1&rlst=f#rlfi=hd:;si:17259280498191889741,l,ChFraXR0eSBoYXdrIG11c2V1bVobCgZtdXNldW0iEWtpdHR5IGhhd2sgbXVzZXVt,y,tBWxg7TmYyk;mv:%5B%5B41.993476711913615,-73.13628440817928%5D,%5B33.753275807154516,-89.35208728632068%5D,null,%5B37.98892655631248,-81.24418584724998%5D,6%5D diff --git a/sources/talk/20201211 Create a DevOps culture with open source principles.md b/sources/talk/20201211 Create a DevOps culture with open source principles.md deleted file mode 100644 index 789216f8dc..0000000000 --- a/sources/talk/20201211 Create a DevOps culture with open source principles.md +++ /dev/null @@ -1,85 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Create a DevOps culture with open source principles) -[#]: via: (https://opensource.com/article/20/12/remote-devops) -[#]: author: (Will Kelly https://opensource.com/users/willkelly) - -Create a DevOps culture with open source principles -====== -Now that more workforces are remote, DevOps teams can maximize their -collaboration and productivity by following open source principles. -![Kanban-style organization action][1] - -As this article goes online, DevOps teams are rounding the bend of eight months of remote work. Some teams were remote by design. Other teams had remote work forced on them. Now is an excellent time to take a refresher on what it means to be a high performing DevOps team that just works remotely. - -Remember that people come before tools for a remote DevOps team. Here’s how you keep your people operating and feeling refreshed during these times. - -### Fully remote vs. hybrid DevOps teams - -We can split remote work into fully remote and hybrid working models. A fully remote working model means a DevOps team is geographically dispersed. The members have no desk lying empty back at the office with their name on it. However, COVID-19 restrictions have made every team a fully remote team, at least for the time being. A fully remote team’s benefits include increased agility and playing time zones to the advantage of your delivery cycle. The challenges of a new remote DevOps team run the gamut right now, depending on the level of support their organization had for remote workers pre-COVID. - -In contrast, a hybrid DevOps team still maintains a presence in a corporate office. Core team members may have permanent seats inside a corporate office. Other team members may work from home or a satellite office full-time or part-time. COVID-19 restrictions add a new factor to hybrid teams because some companies may stagger returns to offices. A hybrid DevOps team’s benefits include having the best of both worlds. Team leadership can still maintain a face in the office. Their developers get the option to work where they’re the most productive. - -The challenges of a hybrid DevOps team can range from communications to system access issues. There’s also the stress for the team members who draw the short straw to go back into the office first. - -### Collaboration refresher - -Collaboration is a well-regarded DevOps principle. Yet COVID-19 has put an additional strain on team collaboration. The best remote teams are always learning about collaboration and then pivoting and adjusting to make that collaboration better. - -First-time remote workers sometimes present new silos and dilemmas for remote work. There’s a lot of discipline that comes with being a successful remote worker. You may have to coach your first-timers, at least in the beginning, on how to handle work from home distractions and how to best budget their time. - -Standardize your workflows when it comes to document creation and review, source code collaboration, and other related tasks. Teams bring the workflows of the places they’ve worked at before. Besides that, team members are under stress right now. Do them a favor and document procedures with an eye toward eliminating complexity and ambiguity. - -### Communications refresher - -There’ll always be something to be said for drive-by conversations in an office hallway. There’ll be first-time workers who’ll adjust fine to remote work. Others will get lost in the shuffle. It’s up to DevOps teams to set expectations for communications, especially project reporting. Teams also need to learn the working styles of their managers and members to communicate effectively, - -The best way to refresh your remote team’s communications is to remind your team of communications expectations. - -### Fostering remote DevOps culture using open source principles - -One way to recharge your remote DevOps culture is by implementing open source principles: - -#### Community - -Remote DevOps teams benefit from a sense of community just as any open source project does. There’s a lot of stress going on right now inside people’s homes. DevOps teams, by their high velocity, can feel their members’ pain acutely. As such, community is of the utmost importance to a DevOps team right now. Having a common purpose with the rest of their team and their employer can be a powerful distraction for some personality types who need to keep busy during times like these. Shared values can foster team cohesion. Being part of team goals can help people escape the stress of the home front. - -#### Collaboration - -Collaboration is both a DevOps and an open source principle. Working as a remote DevOps team during the current crisis taxes even the most experienced teams. Now is as good of a time as any to tap into the open source ethos to regain your collaboration mojo. Collaboration—during a pandemic or not—is about culture, not the latest tool or platform. - -#### Transparency - -Remote work in times of stress can strain communications, and it’s easy to miss information and forget about materials necessary for project success. Remote DevOps teams benefit from centralizing access to project information and materials so the team can do their best work. A central repository of materials offers transparency. Best of all, it’s open 24/7 and doesn’t have time zone limitations. Making information always accessible makes it easier for remote DevOps team members to build upon each other’s ideas and discoveries. - -Transparency for remote DevOps teams is a powerful way to make more effective decisions and understand how decisions affect us all. Inspiration strikes everybody at different times. For example, think of the team member who can’t sleep one night and thus able to make a technical discovery that solves a problem for their customer or their team. - -#### Inclusive meritocracy - -Remote DevOps teams in crisis times should run as an inclusive meritocracy if they didn’t already run that way pre-COVID. Hopefully, some bureaucratic shackles are loosening now that most teams have been remote for eight months or more. We work best during a crisis when we intake all the good ideas, regardless of who it comes from. Successful work is a big calling card for your team as your stakeholders and customers are dealing with stress on the work and home fronts too. - -#### Release early and often - -Being out of the office provides a unique opportunity for some corporate cultures to get away from meetings for the sake of meetings and talking about work more than doing the actual work. When a remote DevOps team releases early and often, they prove the remote work model's validity and give stakeholders something real to see, rather than wireframes, presentation slides, and spreadsheets. - -### Pivot and refresh - -Successful remote teams know the need to be agile with more than just software delivery. It’s about the pivot and the refresh about how your team collaborates and communicates. Just as you stop to correct software delivery issues, you need to start doing the same with communications and collaboration. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/12/remote-devops - -作者:[Will Kelly][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/willkelly -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/kanban_trello_organize_teams_520.png?itok=ObNjCpxt (Kanban-style organization action) diff --git a/sources/talk/20201214 Ben Cotton- How Do You Fedora.md b/sources/talk/20201214 Ben Cotton- How Do You Fedora.md deleted file mode 100644 index 20cdad4714..0000000000 --- a/sources/talk/20201214 Ben Cotton- How Do You Fedora.md +++ /dev/null @@ -1,103 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Ben Cotton: How Do You Fedora?) -[#]: via: (https://fedoramagazine.org/ben-cotton-how-do-you-fedora/) -[#]: author: (gchang https://fedoramagazine.org/author/gchang/) - -Ben Cotton: How Do You Fedora? -====== - -![][1] - -We recently interviewed Ben Cotton on how he uses Fedora. This is part of a [series][2] on the Fedora Magazine. The series profiles Fedora users and how they use Fedora to get things done. Contact us on the [feedback form][3] to express your interest in becoming an interviewee. - -### **Who is Ben Cotton?** - -If you follow the Fedora’ Community Blog, there’s a good chance you already know who Ben is.  - -Ben’s Linux journey started around late 2002. Frustrated with some issues on using Windows XP, and starting a new application administrator role at his university where some services were being run on FreeBSD. A friend introduced him to Red Hat Linux, when Ben decided it made sense to get more practice with Unix-like operating systems. He switched to Fedora full-time in 2006, after he landed a job as a Linux system administrator. - -Since then, his career has included system administration, people management, support engineering, development, and marketing. Several years ago, he even earned a Master’s degree in IT Project Management. The variety of experience has helped Ben learn how to work with different groups of people. “A lot of what I’ve learned has come from making mistakes. When you mess up communication, you hopefully do a better job the next time.” - -Besides tech, Ben also has a range of well-rounded interests. “I used to do a lot of short fiction writing, but these days I mostly write my opinions about whatever is on my mind.” As for favorite foods, he claims “All of it. Feed me.” - -Additionally, Ben has taste that spans genres. His childhood hero was a character from the science fiction series “Star Trek: The Next Generation”. “As a young lad, I wanted very much to be Wesley Crusher.” His favorite movies are a parody film and a spy thriller: “‘Airplane!’ and ‘The Hunt for Red October’” respectively.  - -When asked for the five greatest qualities he thinks someone can possess, Ben responded cleverly: “Kindness. Empathy. Curiosity. Resilience. Red hair.” - -![][4] - -Ben wearing the official “#action bcotton” shirt - -### **His Fedora Story** - -As a talented writer who described himself as “not much of a programmer”, he selected the [Fedora Docs][5] team in 2009 as an entry point into the community. What he found was that “the Friends foundation was evident.” At the time, he wasn’t familiar with tools such as Git, DocBook XML, or Publican (docs toolchain at the time). The community of experienced doc writers helped him get on his feet and freely gave their time. To this day, Ben considers many of them to be his friends and feels really lucky to work with them. Notably “jjmcd, stickster, sparks, and jsmith were a big part of the warm welcome I received.” - -Today, as a senior program manager, he describes his job as “Chief Cat Herding Officer”- as his job is largely composed of seeing what different parts of the project are doing and making sure they’re all heading in the same general direction.  - -Despite having a huge responsibility, Ben also helps a lot in his free time with tasks outside of his job duties, like website work, CommBlog and Magazine editing, packaging, etc… none of which are his core job responsibilities. He tries to find ways to contribute that match his skills and interests. Building credibility, paying attention, developing relationships with other contributors, and showing folks that he’s able to help, is much more important to him than what his “official” title is.  - -When thinking towards the future, Ben feels hopeful watching the Change proposals come in. “Sometimes they get rejected, but that’s to be expected when you’re trying to advance the state of the art. Fedora contributors are working hard to push the project forward.“ - -### **The Fedora Community ** - -As a longtime member of the community, Ben has various notions about the Fedora Project that have been developed over the years. For starters, he wants to make it easier to bring new contributors on board. He believes the Join SIG has “done tremendous work in this area”, but new contributors will keep the community vibrant.  - -If Ben had to pick a best moment, he’d choose Flock 2018 in Dresden. “That was my first Fedora event and it was great to meet so many of the people who I’ve only known online for a decade.”  - -As for bad moments, Ben hasn’t had many. Once he accidentally messed up a Bugzilla query resulting in accidental closure of hundreds of bugs and has dealt with some frustrating mailing list threads, but remains positive, affirming that “frustration is okay.” - -To those interested in becoming involved in the Fedora Project, Ben says “Come join us!” There’s something to appeal to almost anyone. “Take the time to develop relationships with the people you meet as you join, because without the Friends foundation, the rest falls apart.” - -![][6] - -![][7] - -### **Pet Peeves** - -One issue he finds challenging is a lack of documentation. “I’ve learned enough over the years that I can sort of bumble through making code changes to things, but a lot of times it’s not clear how the code ties together.” Ben sees how sparse or nonexistent documentation can be frustrating to newcomers who might not have the knowledge that is assumed. - -Another concern Ben has is that the “interesting” parts of technology are changing. “Operating systems aren’t as important to end users as they used to be thanks to the rise of mobile computing and Software-as-a-Service. Will this cause our pool of potential new contributors to decrease?” - -Likewise, Ben believes that it’s not always easy to get people to understand why they should care about open source software. “The reasons are often abstract and people don’t see that they’re directly impacted, especially when the alternatives provide more immediate convenience.” - -### **What Hardware?** - -For work, Ben has a ThinkPad X1 Carbon running Fedora 33 KDE. His personal server/desktop is a machine he put together from parts that runs Fedora 33 KDE. He uses it as a file server, print server, Plex media server, and general-purpose desktop. If he has some spare time to get it started, Ben also has an extra laptop that he wants to start using to test Beta releases and “maybe end up running rawhide on it”. - -### **What Software?** - -Ben has been a KDE user for a decade. A lot of his work is done in a web browser (Firefox for work stuff, Chrome for personal). He does most of his scripting in Python these days, with some inherited scripts in Perl. - -Notable applications that Ben uses include: - - * Cherrytree for note-taking - * Element for IRC - * Inkscape and Kdenlive when he needs to edit videos. - * Vim on the command line and Kate when he wants a GUI - - - --------------------------------------------------------------------------------- - -via: https://fedoramagazine.org/ben-cotton-how-do-you-fedora/ - -作者:[gchang][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://fedoramagazine.org/author/gchang/ -[b]: https://github.com/lujun9972 -[1]: https://fedoramagazine.org/wp-content/uploads/2020/11/LISA2015-printsize-7810-816x545.jpg -[2]: https://fedoramagazine.org/tag/how-do-you-fedora/ -[3]: https://fedoramagazine.org/submit-an-idea-or-tip/ -[4]: https://fedoramagazine.org/wp-content/uploads/2020/11/image1-2-edited.jpg -[5]: https://docs.fedoraproject.org/ -[6]: https://i1.wp.com/fedoramagazine.org/wp-content/uploads/2020/11/image2-2.jpg?ssl=1&resize=1500%2C1500 -[7]: https://i1.wp.com/fedoramagazine.org/wp-content/uploads/2020/11/image6-1.jpg?ssl=1&resize=1500%2C1500 diff --git a/sources/talk/20201223 9 stories about switching to an open source alternative in 2020.md b/sources/talk/20201223 9 stories about switching to an open source alternative in 2020.md deleted file mode 100644 index 9c8ab1f6f2..0000000000 --- a/sources/talk/20201223 9 stories about switching to an open source alternative in 2020.md +++ /dev/null @@ -1,79 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (9 stories about switching to an open source alternative in 2020) -[#]: via: (https://opensource.com/article/20/12/open-source-alternatives) -[#]: author: (Jason Blais https://opensource.com/users/jasonblais) - -9 stories about switching to an open source alternative in 2020 -====== -Ditch your proprietary software for open source solutions. -![Working from home at a laptop][1] - -In 2020, as every year, new open source projects launched as alternatives to proprietary solutions. Here is a roundup of the top nine articles about open source alternatives that made the headlines in 2020 on Opensource.com. - -### 7 alternatives to VS Code - -Seth Kenlon gives an overview of [_7 open source alternatives to VS Code_][2], a code editor from Microsoft for Linux, Windows, and macOS. While Microsoft publishes VS Code's source code under the MIT License, "the version you download from Microsoft is not open source," Seth warns. If you prefer open source alternatives, make sure to check out Seth's article for his recommended alternatives, including VSCodium and Atom. - -### Nextcloud instead of Google Suite - -In [_Build your own open source alternative to Google Suite with Nextcloud_][3], Correspondent Don Watkins explains how Nextcloud has matured in recent years to become a true alternative to Google Drive and Microsoft 365. Don begins by reviewing how to get started with Nextcloud, then he outlines its key features, including the ability to "sync, share, and collaboratively view and edit files, as well as [share] calendars, contacts, email, chats, video calls, project management, [and] notes." - -### 6 alternatives to Wunderlist - -Wunderlist was a popular tool to track to-do lists, but when Microsoft announced it was shutting it down, many people began looking for alternatives. Jen Wike Huger does an excellent job summarizing [_6 open source alternatives to Wunderlist_][4], including OwnCloud, OpenTasks, and more. If you're still looking for a Wunderlist replacement or are just curious to know what is out there for tracking your to-do's, make sure to read Jen's article. - -### Plausible Analytics instead of Google Analytics - -In [_Transparent, open source alternative to Google Analytics_][5], Marko Saric describes Plausible Analytics as a "leaner, more transparent option [to Google Analytics], with the essential data you need but without all the privacy baggage." By "baggage," Marko means privacy policies, GDPR-consent prompts, and other things that come with Google Analytics. With Plausible Analytics, you don't need to worry about such privacy restrictions; the tool doesn't collect any personal data or use cookies and still provides accurate visitor statistics for your website. - -### Mycroft instead of Alexa - -Many people are wary about the private conversations their Apple, Google, and Amazon voice assistants may have access to. Those looking for a private option may want to explore Mycroft, [_A secure and private open source alternative to Alexa_][6]. Correspondent Steve Ovens describes Mycroft as the "open source alternative … [that] puts privacy at the forefront." - -### HomeBank instead of Quicken - -Quicken is a proprietary personal financial management tool—and you guessed it, there is an open source alternative for it. In [_How to use HomeBank for your open source alternative to Quicken_][7], Correspondent Jessica Cherry provides an overview of HomeBank and walks through how to install the software, create an account, and analyze your finances with the tool. If you're looking for an open source option to help manage your spending habits, make sure to read Jess' article about HomeBank. - -### GoDBLedger instead of proprietary accounting software - -Sean Darcy, an accountant frustrated by outdated accounting software solutions, decided to spend six months building GoDBLedger, an open source option to improve accountants' productivity. In [_Open source accounting software developed by accountants_][8], he outlines the challenges he faced with previous tools due to poor usability, unintuitive user experiences, and slow compilation that "involves a lot of human labor to achieve." He then demonstrates how GoDBLedger solves each of these challenges. - -### 4 alternatives to Grammarly - -Grammarly is one of the most popular tools to "check your writing for spelling, grammar, plagiarism, and style errors," writes Seth Kenlon. But instead of Grammarly, Seth uses open source options for each of these use cases. In [_Open source alternatives to Grammarly for word processing_][9], he describes the tool that works best for each of Grammarly's functionalities, such as Flyspell, a lightweight open source spell checker. - -### 7 alternatives to StackOverflow or Quora - -Instead of using StackOverflow or Quora as your knowledge-base Q&A site, why not switch to an open source alternative? Correspondent Bryant Son walks through [_7 open source Q&A platforms_][10], including Discourse, Vanilla, AskBot, and more. If you are looking for a new Q&A platform, make sure to check out Bryant's article! - -### Top open source alternatives in 2021? - -Which open source alternatives do you think will make the headlines in 2021? Let us know in the comments. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/12/open-source-alternatives - -作者:[Jason Blais][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/jasonblais -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/wfh_work_home_laptop_work.png?itok=VFwToeMy (Working from home at a laptop) -[2]: https://opensource.com/article/20/6/open-source-alternatives-vs-code -[3]: https://opensource.com/article/20/7/nextcloud -[4]: https://opensource.com/article/20/5/alternatives-list -[5]: https://opensource.com/article/20/5/plausible-analytics -[6]: https://opensource.com/article/20/6/open-source-voice-assistant -[7]: https://opensource.com/article/20/2/open-source-homebank -[8]: https://opensource.com/article/20/7/godbledger -[9]: https://opensource.com/article/20/3/open-source-writing-tools -[10]: https://opensource.com/article/20/2/open-source-qa diff --git a/sources/talk/20201224 Why I rewrote my open source virtual reality server.md b/sources/talk/20201224 Why I rewrote my open source virtual reality server.md deleted file mode 100644 index d1e2ff8107..0000000000 --- a/sources/talk/20201224 Why I rewrote my open source virtual reality server.md +++ /dev/null @@ -1,153 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Why I rewrote my open source virtual reality server) -[#]: via: (https://opensource.com/article/20/12/virtual-reality-server) -[#]: author: (Josip Almasi https://opensource.com/users/jalmasi) - -Why I rewrote my open source virtual reality server -====== -With VRSpace, you can play group VR games across platforms without -sacrificing your privacy. -![new techie gadgets representing innovation][1] - -Look! I wrote a virtual reality (VR) server and [published it on GitHub][2]! But _why_? - -Well, I'm your typical introverted hacker. I like to play with technology. Whenever something new comes out, I have to lay my hands on it and get them dirty. So, when I gifted myself Oculus Quest last year, I played a few games before I wanted to code something myself. And guess what? _Everything is_ _proprietary!_ - -Alright, this may be a bit of an overstatement. But my overall impression of the VR industry is exactly that—it's all proprietary! Hardware and software vendors are trying to lock developers in to sell more devices and development tools than their competitors—deja vu, like the Unix wars in the last century. - -![VRSpace.org][3] - -Choosing an avatar and portals to virtual spaces. ([Gileon][4], [hong227][5], [Jasna Almasi][6], [CC BY-SA 4.0][7]) - -But welcome to the 21st century; we live in clouds now! Clouds take all our data and store it somewhere safe at the cloud owner's mercy. Take Oculus Quest 2, for instance. You can't even use it without a Facebook account. But once you do, all your data goes to Facebook. - -What kind of data? _Biometric_ _data_. - -VR devices track our movements, know our real-world height, and more. GDPR and other privacy laws include this type of biometric data in the highest security categories. Rightfully so, as this data enables the worst kind of privacy invasions. Imagine, for instance, a deepfake that mimics your every movement. - -I'm using Facebook as an example, but the risks are the same with any private organization whose code cannot be scrutinized. - -### Building an open, interoperable VR server - -Privacy is but one of my motivations for writing a VR server; the other is my family. - -My kids play together in real life, and they also want to play together in VR. I have another VR headset, an Acer OJO, but that exists in a different world of Windows Mixed Reality from an Oculus. Once again, vendor lock-in gets in the way. For my kids to play VR together, we'd need two Microsoft or two Facebook headsets. - -But there's a way out. - -Enter the [WebXR][8] Device API. This [open source][9] specification "describes support for accessing virtual reality (VR) and augmented reality (AR) devices, including sensors and head-mounted displays, on the web." It's VR and AR (summarized by _X_) that works on every device, just as the web has to work on any device—including mobile devices. - -WebXR includes a [WebGL layer][10], and there are a number of JavaScript libraries (such as Three.js) to help developers working with WebGL and a full-featured open source game engine, BabylonJS. (Three.js fans might want to try [CS1 Game Engine][11], a promising yet unfinished library with performance and developer experience as top priorities.) - -The tools also interoperate with popular web development frameworks like Angular and React. There's also [glTF][12], an open standard for 3D models that pretty much every relevant tool reads and writes, as well as an incredible number of open source 3D models that are mostly published under Creative Commons Attribution licenses. - -The only thing missing was a server. One that would deliver content (models) and presentation logic (JavaScript), collect and distribute user events, and implement business (game) logic, but _would not store any sensitive data_. - -It just happens that 20 years ago, I wrote an open source VR server named [VRSpace][13]. Unfortunately, it was way too early for its own good, and the project died along with the client technology ([VRML][14]). But I knew exactly what I needed to do for today's VR, so I wrote it again. And luckily, it's much easier to do with modern technologies. - -![Old VRSpace][15] - -Twenty years ago, VRSpace.org was a chat with a chatbot. ([Arni Barisic][16], Slaven Katic, Josip Almasi, [CC BY-SA 4.0][7]) - -Rather than reflecting on the good ol' times and 20 years of technology gap, I'll talk about some of the design choices I made and the open source tools I used. - -### Two decades later: Java and JavaScript - -I chose Java and [Spring Boot][17] simply because I use them daily. But truth be told, Node.js might be a better tool for this job, as it is easier to develop and maintain software written in one language than two. For the client side, I chose [BabylonJS][18], because it's a full-featured WebXR game engine and plain JavaScript, and I didn't want the client to depend on a user interface (UI) framework. - -BabylonJS is written in TypeScript, so if I wanted to make a monolithic product, I'd go with TypeScript. On the other hand, I don't want to enforce any specific technology on the client side. Web browsers are not the only kind of client that will want to interact in VR, and native apps usually give the best performance. - -The communication layer doesn't depend on anything else, which may be relevant if you want to implement your own VR client or a headless client like a chatbot. - -To store the data, I chose the [Neo4J][19] database, which turned out to be as good as it gets. It can be embedded into my server and store all of my objects. Except for sensitive ones, of course, so I took special care to mark every sensitive field as transient. If I didn't care about this, you couldn't trust my server to protect your private data against nosy government institutions or criminals looking to steal valuable biometric data. - -Communication happens with JSON over WebSockets—because it just works. Protocol-wise, it's far from the best choice. The sheer number of events emitted from VR device sensors is much higher than your usual first-person shooter; VR gear tracks your arms and head, various buttons and joysticks, possibly even eye movements, and every finger. Rate limiting is a must-have no matter what. - -But what about chat? VR devices don't have keyboards, nor do mobile devices once they're head-mounted as VR gear. Virtual keyboards inside VR are not very useful, and they're certainly useless for chat. So voice chat seems the only option. Luckily, there's an open source chat server called [OpenVidu][20]. I made my server talk to that server so that people can chat with each other. - -Last but not least, security. Embedding a script into a JSON string is trivial, and to prevent cross-site scripting attacks, the server must, at a minimum, sanitize each and every incoming request. - -![VRSpace architecture][21] - -(Josip Almasi, [CC BY-SA 4.0][7]) - -### Wide-open virtual spaces - -People need open spaces every once in a while, just to keep their sanity. Prisoners get at least an hour outside every day. NASA expects astronauts to be able to endure long periods of confinement. But ordinary people just can't stand being inside all the time. - -I've been rather confined for months now, but VR to the rescue! Making a virtual space requires spending endless hours trying out different models and backgrounds and doing much more testing. For physical and mental health, it's not as good as the real stuff, but it's good enough to keep people sane. - -![VRSpace.org virtual worlds][22] - -VRSpace.org virtual worlds created by [farhad.Guli][23], [anthwolf][24], [fenixman12][25], [ShadowTan][26], [Binkley-Spacetrucker][27], and [exima113][28] (Josip Almasi, [CC BY-SA 4.0][7]) - -Now that I've written the server, my kids can finally play hide and seek together in any virtual world they choose, with my wife and me alongside them—two VR headsets, a PC, and a mobile, all playing together. So far, we can only play hide and seek because there are not any other games yet. We started playing a "make a game" game; so far, we have a game map, the first level, and of course, zombies. - -But what's the point of having software that nobody uses? My first VR server was not widely used, but it was used by people all over the world. I remember some students in Korea and a girl in Uruguay sitting on her daddy's lap, enchanted by dolphins flying through a virtual replica of a far-away city. - -But my best memory is being told, "programmers like you are benefactors of humanity." This is what open source is all about: benefiting humanity. Not just me, not just my family, not just paying customers, not just my company, but anybody, anywhere and possibly everybody, everywhere. - -And that is why I wrote that VR server again and [published it on GitHub][2]. - -### Get involved - -I'm running a [demo server][29] of the current code, available to anyone anonymously. I installed a [Redmine][30] server on it; it has a wiki, forums, bug reports, and everything, so if you want to collaborate or just get in touch, see you [there][31] and on [GitHub][2]! - -I also made a [YouTube channel][32] for demos and tutorials and made a few movies (with another open source tool called [Shotcut][33]). [This video][34] explains all of the project's features at a glance. And I made a [Facebook page][35] because literally everybody knows about Facebook. - -I hope to see you in the virtual worlds, so stay safe and have fun! - -Mozilla's MozVR is a new technology that combines the open web and virtual reality, enabling... - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/12/virtual-reality-server - -作者:[Josip Almasi][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/jalmasi -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/innovation_virtual_gadgets_device_drone.png?itok=JTAgRb-1 (new techie gadgets representing innovation) -[2]: https://github.com/jalmasi/vrspace -[3]: https://opensource.com/sites/default/files/uploads/vrspace.png (VRSpace.org) -[4]: https://sketchfab.com/gileon -[5]: https://sketchfab.com/hong227 -[6]: https://www.linkedin.com/in/jasna-almasi/ -[7]: https://creativecommons.org/licenses/by-sa/4.0/ -[8]: https://www.w3.org/TR/webxr/ -[9]: https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document -[10]: https://www.w3.org/TR/webxr/#xrwebgllayer-interface -[11]: https://github.com/EricEisaman/cs1-engine -[12]: https://en.wikipedia.org/wiki/GlTF -[13]: http://old.vrspace.org/ -[14]: https://en.wikipedia.org/wiki/VRML -[15]: https://opensource.com/sites/default/files/uploads/vrspace_old.jpg (Old VRSpace) -[16]: https://www.facebook.com/arni.barisic -[17]: https://spring.io/projects/spring-boot -[18]: https://www.babylonjs.com/ -[19]: https://neo4j.com/ -[20]: https://openvidu.io/ -[21]: https://opensource.com/sites/default/files/uploads/vrspace_architecture.png (VRSpace architecture) -[22]: https://opensource.com/sites/default/files/uploads/virtualworlds.png (VRSpace.org virtual worlds) -[23]: https://sketchfab.com/farhad.Guli -[24]: https://sketchfab.com/anthmurphy -[25]: https://sketchfab.com/fenixman12 -[26]: https://sketchfab.com/ShadowTan -[27]: https://sketchfab.com/Binkley-Piratepants -[28]: https://sketchfab.com/Exima113 -[29]: http://www.vrspace.org/ -[30]: https://redmine.org/ -[31]: https://redmine.vrspace.org/ -[32]: https://www.youtube.com/channel/UCLdSg22i9MZ3u7ityj_PBxw -[33]: https://shotcut.org/ -[34]: https://vrdays.co/videos/vrspace-org-diy-multiuser-vr-for-the-web/ -[35]: https://www.facebook.com/vrspace.org diff --git a/sources/talk/20201227 9 insights from pivoting to remote work in 2020.md b/sources/talk/20201227 9 insights from pivoting to remote work in 2020.md deleted file mode 100644 index 9f976581f8..0000000000 --- a/sources/talk/20201227 9 insights from pivoting to remote work in 2020.md +++ /dev/null @@ -1,96 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (9 insights from pivoting to remote work in 2020) -[#]: via: (https://opensource.com/article/20/12/remote-work) -[#]: author: (Dawn Parzych https://opensource.com/users/dawnparzych) - -9 insights from pivoting to remote work in 2020 -====== -Remote work is now standard for many companies and workers. Here is a -roundup from this year's lessons learned in remote work. -![Selfcare, calm routine][1] - -2020 was the year remote work became the norm. Due to the COVID-19 pandemic, people and companies shifted to "temporary" remote work, though many have now extended it indefinitely. As remote work will be the norm for the foreseeable future, here’s a review of some of the many articles published on Opensource.com regarding remote work practices, tools, and activities to manage this new normal. - -### Tools - -When shifting the way we work, we also need to look at the tools we use. Tools that work in person may not be as effective in a remote world. We need to look for new and different ways of sharing information. The articles below highlight some of the tools that come in handy for remote work. - -#### [Top 10 open source tools for working from home][2] - -We rely on tools on a daily basis. Working remotely requires adding new tools to our belt. Here, Seth shares his top 10 communication and collaboration tools. If you’re looking to up your collaboration game, check out this article for suggestions on: - - * Video conferencing and chat - * Virtual whiteboards - * Virtual notebooks - * Shared documents, spreadsheets, and storage - - - -#### [Is it possible to run a conference using only free software?][3] - -Not only did employers and employees have to figure out how to support a remote workforce, but industry conferences and tradeshows had to be reimagined for the virtual world. The value in a conference isn’t only the talks; it’s also in the interaction with others, open spaces, and the hallway track. Zoe shares how the [Free Software Foundation][4] took LibrePlanet fully virtual using open source software and what they would improve upon for future events. - -#### [How to set up a remote school environment for kids with Linux][5] - -For those of you who have kids returning to remote learning from in-person learning, this one is for you. Alan shares how he took an unused computer to create a system suitable for full-time remote school. You don’t need the latest and greatest hardware due to the efficiency of the Linux operating system; even a 10-year-old laptop can get the job done. - -### Activities - -Whether you’re looking for a side project or something to do outside of work, the articles highlighted below may help motivate you to try something new. - -#### [6 open source teaching tools for virtual classrooms][6] - -The tools Mathias mentions aren’t just for virtual classrooms. Want to start a podcast? Create YouTube videos? How about live stream your coding adventures? These tools can help you get started—topics range from how to record with Open Broadcaster Studio to audio and video editing. If you’re looking for a new activity, check out the tools in this article for inspiration. - -#### [5 open source activities while you work from home][7] - -We all need a break from our computers. I’ve heard a lot of people talk about Zoom fatigue as they stare at a screen all day and then into the evenings for social gatherings, community events, or virtual classes. Seth’s article highlights several things you can do to take a break from the computer. - -#### [Create web tutorials with Reveal.js and Git][8] - -You might be thinking, "what does creating a web tutorial have to do with remote work?" Many in-person workshops, customer training, and internal trainings have also shifted online. With people working asynchronously, it can be impossible to find a single time convenient for everybody to participate. Creating a self-paced tutorial or workshop may be the answer. Here, Eric shares the process and tools he uses to create online self-paced workshops, including examples. - -### Practices - -We should always be looking for new ways of doing things. These articles share insights into how you can improve your teams’ operations. Sometimes a fresh idea or insight can break us out of a rut. What "new-to-you" suggestion can you incorporate into your daily work? - -#### [7 ways not to manage your remote team][9] - -Many of these articles focus on what an individual can do, which is good, but good remote practices start at the top. This article covers how NOT to manage a remote team. Matt’s insight is a must-read for anybody who is currently a manager or looking to move into a management role in 2021. - -#### [Love or hate chat? 4 best practices for remote teams][10] - -Every company (and every person, for that matter) has its own preference when it comes to chat. Chat doesn’t have to be synchronous; it can be effectively asynchronous, as long as everybody is aware of the expectations and norms. Jen discusses four areas where teams should define the rules of chat to ensure everybody’s needs surrounding chat-based communication are met. - -#### [5 tips for working from home from a veteran remotee][11] - -You may think that you're an expert after months of working remotely, but there is always still room to learn. And maybe some of the habits you initially put in place have now taken a back seat several months later. It’s time to look again at ways to improve your day-to-day. I’ve worked remotely for years, and I still found valuable tips in Birthe’s article on working remotely. The structure for the daily and weekly meetings is a great way to keep meetings focused and on track. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/12/remote-work - -作者:[Dawn Parzych][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/dawnparzych -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/meditate_zen_wfh_outside_family_selfcare_520.png?itok=qoSXLqRw (Selfcare, calm routine) -[2]: https://opensource.com/article/20/3/open-source-working-home -[3]: https://opensource.com/article/20/5/conference-free-software -[4]: https://www.fsf.org/ -[5]: https://opensource.com/article/20/4/school-home-linux -[6]: https://opensource.com/article/20/4/open-source-remote-teaching-tools -[7]: https://opensource.com/article/20/4/open-source-activities -[8]: https://opensource.com/article/20/4/create-web-tutorial-git -[9]: https://opensource.com/article/20/1/ways-not-manage-remote-team -[10]: https://opensource.com/article/20/4/chat-tools-best-practices -[11]: https://opensource.com/article/20/4/home-office-tips diff --git a/sources/talk/20210105 My Linux Story- How an influential security developer got started in open source.md b/sources/talk/20210105 My Linux Story- How an influential security developer got started in open source.md deleted file mode 100644 index 1e4c2e0bc9..0000000000 --- a/sources/talk/20210105 My Linux Story- How an influential security developer got started in open source.md +++ /dev/null @@ -1,119 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (My Linux Story: How an influential security developer got started in open source) -[#]: via: (https://opensource.com/article/21/1/lynis) -[#]: author: (Gaurav Kamathe https://opensource.com/users/gkamathe) - -My Linux Story: How an influential security developer got started in open source -====== -Michael Boelen shares how he strengthened Lynis by building a company -around the open source, security auditing and hardening tool. -![A lock on the side of a building][1] - -Michael Boelen is very active in computer security. He is the author of the popular open source security tools Rootkit Hunter ([rkhunter][2]) and [Lynis][3], and he blogs about Linux security on [Linux Audit][4] and evaluates security tools on [Linux Security Expert][5]. He also formed a company named [CISOfy][6] around the Lynis tool to help organizations with security audits of multiple operating systems. - -[Having used Lynis][7], I was eager to speak with Michael to learn about his views on Linux, security, and open source software. The following interview has been edited for clarity and conciseness. - -**Gaurav: Michael, could you please introduce yourself?** - -**Michael:** Hi there! My name is Michael Boelen, and I live in the southern part of The Netherlands with my wife, Debbie, and our son, Hugo. I was born in 1982 and got hooked on computers early when we got a used Commodore 64 from our neighbors. In the beginning, my brother and I played games like [Boulder Dash][8] on it. Then I discovered you could create your own programs in BASIC. It was a magical feeling to make something out of nothing. At the age of 10, my programs were simple, but the desire to create more had emerged. - -Later on, I moved to a 286 with MS-DOS. It did not take long before it got infected with a computer virus. Some viruses were pretty funny, like characters that slowly dropped from the screen. Maybe this is the origin of my interest in malware and information security. - -You could always find me behind the computer when I was not at school. We played games on the computers that followed, like a 150MHz Intel Pentium and later a 450MHz Intel Pentium III. When I was alone, I tried to figure out how things worked, including programming and learning how to build computers. - -Moving quickly forward: I completed school a bit too easily due to circumstances like not having the right modules. For example, I dropped mathematics B because I didn't like it. A few years later, my mentor told me that I could not proceed to higher education due to missing that module. Oops… So I had to continue education below my level. It did not encourage me to study further after completing it, so I went on a job hunt. I got my first full-time job in 2002 at a small company that created a customer relationship management (CRM) solution with some additional web development. My direct manager saw my potential and gave me the freedom to research and optimize or replace existing services. I migrated an old system running Sendmail, created a new DNS server, and developed a custom web interface for both. I was doing DevOps when the word did not exist yet. - -After my first full-time job, I switched to a consultancy company. This company served most of the more prominent companies in The Netherlands. It provided me with a few opportunities to work for multinationals like Philips, ASML, and a daughter company of Deutsche Telekom named T-Systems. Work included technical responsibilities for things like Unix administration and data storage. Next in line were roles such as security officer, problem manager, and service manager. That last role taught me more about financial planning, budgeting, servicing internal stakeholders, and dealing with deadlines. - -It came time to take a bold step: say farewell to a well-paying job and start my own company. That happened in 2013. The idea was to create a valuable service that used the open source tool Lynis in its core. At the same time, it allowed me to do more development on the tool while allowing me to make a living. Fortunately, things worked out well for me and, more importantly, for the Lynis project. - -**Gaurav: You have been associated with open source software and security for quite some time. What projects have you worked on?** - -**Michael:** People may know me from two popular software projects named rkhunter and Lynis. I created rkhunter in 2003 to offer an alternative for chkrootkit. As the name implies, it finds traces of rootkits or other malware parts that can exist on a system. - -The other tool is Lynis, a security tool to scan Unix-based systems to detect room for improvement when it comes to system hardening. - -**Gaurav: How did you get started in open source?** - -**Michael:** My real start with open source was in 2003 with rkhunter. I did not have enough shell scripting experience to help the chkrootkit project when I found it showed several false positives on a FreeBSD system. Instead, I decided it was a great opportunity to learn shell scripting and, at the same time, build a useful tool. As a bonus challenge, I thought it was a good idea to make it [POSIX][9] compatible. This way, it could run on Linux, but also on BSD, Solaris, and others. - -**Gaurav: What does open source software mean to you?** - -**Michael:** Open source is a way to express creativity in software while solving a problem. With the right license, it allows almost anyone to use the software, typically for free. That is also important, as not everyone has the luxury to pay for software or related services. The Dutch are known to be humble, outspoken, and in love with things being "gratis." This word is the same in Latin and means "for thanks" or "for nothing." While the F in FOSS does not refer to this type of free, I believe it is a powerful driver to bring the software into more people's hands. That is valuable in itself, as it can open the gates to more feedback, ideas, or even code improvements. - -**Gaurav: What compelled you to develop Lynis?** - -**Michael:** In 2007, while being between two jobs for a month, I wanted to start a new project that helped me in my own job of improving security aspects of Linux and Unix-based systems. Existing tooling seemed to be outdated, so I wanted a fresh start. - -**Gaurav: How is Lynis different from other security tools available out there? What has been your experience promoting Lynis as an open source tool?** - -**Michael:** There are many security tools available. I'm reviewing many of them as part of the Linux Security Expert project. After looking at hundreds of tools, I found that Lynis has something that many of them don't have. The difference is "simplicity," or making the tool as easy to use as possible. From this experience, I can also share that it is really hard to make a tool simple to use. - -When it comes to promoting Lynis, I try to diversify things. Sometimes it is writing about it in a blog post or speaking at a conference. At the same time, the value of the tool itself does the real promotion. People tend to share the tool with others because they like it. I strongly believe in the value of promotion. It shows your creation to more people, resulting in increased usage and suggestions. So, if you are a tool author, don't skip this part. You might like to read my blog post _[How to promote your open source project][10]_. - -**Gaurav: You also run a popular blog at Linux Audit. Does it complement your learning from Lynis or Linux security in general?** - -**Michael:** Yes, the blog is popular and consists of hundreds of articles. Nowadays, I get less time to write, but I hope that will change soon. Blogging is a great way to dive into a difficult subject and turn it into something easier for the reader to understand. The principle of "simplicity" really applies here as well. The blog focuses on Linux security, including the use of Lynis, but also other relevant topics. - -**Gaurav: You also formed a company named CISOfy around Lynis and to provide training. Please tell me about these.** - -**Michael:** I'm very wary about companies using their open source software as a marketing instrument. That's not how Lynis and CISOfy relate. The Lynis project was there long before the company was founded (2007 and 2013, respectively). Instead of the software being closed, as with some other security companies, the company allowed me to do more active development on the tool and gave it a big boost. I believe that doing good for others returns the favor in unexpected ways. - -And I'm also very strict when it comes to Lynis: It must remain open source. That is one of the primary reasons I founded the company. - -To ensure that there's a clear line in the sand, we named the commercial part Lynis Enterprise. It is not an extended version of Lynis but a separate thing that actually requires the Lynis tool. This way, the company relies on the quality of the tool, which gives it a strong motivation to keep investing in Lynis. Everyone wins, as both the community and customers get a better tool in their hands. - -Although textbooks say companies exist to make money and turn a profit, I discovered that a software company can also make a difference. For this reason, I decided several years ago that we should no longer use tools like Google Analytics, and we got rid of tracking technologies. We also limit the data that we collect and store to the bare minimum to conduct business. I dislike spam, so that is also the reason we don't reach out to companies or individuals. You only receive email from us if you requested it or do business with us. Right now, I want CISOfy to become even more proactive in things besides privacy. One is to support more sustainability initiatives, such as becoming CO2 neutral or even absorbing CO2. Things like using solar power, donating to causes that help with replanting of forests, switching a more sustainable bank, and so on. - -**Gaurav: As Linux continues to grow, it will likely continue to be a target for malware authors. What do you think?** - -**Michael:** We have already seen an increase, even though most attacks still focus on Windows, Android, and Apple-based systems. My guess is that targeting a Linux system has its own challenges, such as the variety in distributions and versions. - -**Gaurav: How is ransomware different from regular malware, and how should organizations tackle this threat?** - -**Michael:** It is a different threat actor with the primary focus on getting your data and holding it hostage. My suggestion is simple: [make backups and test your restores][11]. - -**Gaurav: People often want to work on Linux security but have no idea where to start. How do you suggest they get started?** - -**Michael:** I would suggest implementing security measures on your personal systems or any test devices that you have available. If you don't know where to start, then Lynis might be a good inspiration for what can be done when it comes to Linux security. You also mentioned the Linux Audit blog, which might help readers get more familiar with the subject. - -**Gaurav: Are you working on any interesting new projects or tools?** - -**Michael:** Spare time is minimal currently. We recently moved to a new house and are still settling in. When my spare time increases, I will most likely start blogging again and reviewing security tools for the Linux Security Expert website. - -**Gaurav: When not working on Lynis or security tooling, what do you do in your spare time?** - -**Michael:** It depends a little bit on the season. I like a good walk and drinking a whisky. Then there are the chores at home and in the garden. My current focus is on cleaning up the crawl space under the house to add additional floor insulation. The attic also needs further insulation. Not an average spare-time project, but essential for the comfort level in the future. - -### Find out more - -If you're interested in learning how to secure your operating system, you will find a wealth of information on Michael's blogs. Also, open source enthusiasts should try Lynis to uncover weaknesses in their systems and learn how to mitigate them. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/21/1/lynis - -作者:[Gaurav Kamathe][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/gkamathe -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/BUSINESS_3reasons.png?itok=k6F3-BqA (A lock on the side of a building) -[2]: http://rkhunter.sourceforge.net/ -[3]: https://cisofy.com/lynis/ -[4]: https://linux-audit.com/ -[5]: https://linuxsecurity.expert/ -[6]: https://cisofy.com/ -[7]: https://opensource.com/article/20/5/linux-security-lynis -[8]: https://en.wikipedia.org/wiki/Boulder_Dash -[9]: https://opensource.com/article/19/7/what-posix-richard-stallman-explains -[10]: https://linux-audit.com/how-to-promote-your-open-source-project/ -[11]: https://opensource.com/article/19/3/backup-solutions diff --git a/sources/talk/20210107 3 serverless strategies to look for in 2021.md b/sources/talk/20210107 3 serverless strategies to look for in 2021.md deleted file mode 100644 index 33e6748d84..0000000000 --- a/sources/talk/20210107 3 serverless strategies to look for in 2021.md +++ /dev/null @@ -1,62 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (3 serverless strategies to look for in 2021) -[#]: via: (https://opensource.com/article/21/1/devapps-strategies) -[#]: author: (Daniel Oh https://opensource.com/users/daniel-oh) - -3 serverless strategies to look for in 2021 -====== -These serverless applications development and deployment approaches are -driving fast-adoption of the DevApps practice today. -![Tips and gears turning][1] - -If you had at least one chance to attend business and technologies conferences recently, you probably saw lots of DevOps strategies, Agilist, and DevSecOps engineers around the digital transformation track. No matter what business you work in, it’s no secret that [DevOps][2] is a big trigger to craft new companies. It is also used to optimize existing resources, from the IT infrastructure to workflow processes and cultural changes. - -While I was moderating several tracks (i.e., serverless) at [KubeCon + CloudNativeCon North America 2020][3], I had a chance to catch a very interesting trend around DevOps.The trend was more interest in cloud-native application development than deployment and provisioning with certain cloud platforms on [Kubernetes][4]. Kubernetes was unleashed upon the world back in 2014. Since then, IT ops organizations have benefited from orchestrating immutable application runtimes with service invocation and discovery, autoscaling, and resilience by using Kubernetes. In the meantime, application workloads also need to move forward to serverless functions and event-driven reactive services, along with the DevOps platform, which is a key ability to manage multi and hybrid cloud infrastructure. - -In this article, I will talk about _DevApps_ more than _DevOps_ since the applications are critical to accelerate your business success, along with matured DevOps tools and technologies. The following three serverless applications development and deployment approaches are driving fast-adoption of the DevApps practice today. - -### Serverless functions - -The COVID-19 pandemic triggered enterprises to run business services on the managed platform. Also, developers began transforming existing microservices into [serverless][5] functions. [Cloud-Native Serverless Landscape][6] can be the first step for developers to create deployable functions across managed cloud platforms. More importantly, it’s not easy to develop traditional microservices and serverless functions on the same application runtime along the container-native way. For 10+ million Java developers worldwide, [Quarkus][7] enables them to address this complex issue without a steep learning curve for both imperative and serverless applications. - -### Serverless events - -Event-driven services are growing because they increase flexibility and agility. They also reduce dependencies and complexity in application development. Serverless events enable developers to maximize these benefits when they implement event publishers and exchange data across serverless platforms. [Knative Eventing][8] is built on [CloudEvents][9] to allow developers to write serverless events with late-binding features such as event creation, event sinks, and event consumption. - -### Serverless workflows - -With the rise in popularity to adopt [the DevOps pipeline][10], workflows definition is also becoming a key role in serverless events coordination. This is because serverless functions are also increasingly complex and composed of multiple tasks in a single event. To specify complex business workflows with serverless workloads, [Serverless Workflow][11] allows developers to define the workflow models with a vendor-neutral specification for orchestrating serverless events. The Serverless Workflow specification is an initiative project by CNCF. - -### What’s next for DevApps developers? - -With many different cloud-native Java frameworks in place, Quarkus gives developers more benefits from container-first design to live coding for inner loop development, imperative and reactive programming, and more Kubernetes-native pre-integration. More practical and useful guides about Quarkus are [here][12]. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/21/1/devapps-strategies - -作者:[Daniel Oh][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/daniel-oh -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/gears_devops_learn_troubleshooting_lightbulb_tips_520.png?itok=HcN38NOk (Tips and gears turning) -[2]: https://opensource.com/resources/devops -[3]: https://www.googleadservices.com/pagead/aclk?sa=L&ai=DChcSEwiOm66eppHtAhUCoLMKHdbDBtYYABAAGgJxbg&ae=2&ohost=www.google.com&cid=CAASE-RoewbFs9aqDAPBTaiW7zxvM74&sig=AOD64_0D6rO4CljYUjuM8RWT5cUNp_C8cg&q&adurl&ved=2ahUKEwjwtaaeppHtAhXBmeAKHbsfAtUQ0Qx6BAgJEAE -[4]: https://opensource.com/article/19/6/reasons-kubernetes -[5]: https://opensource.com/article/19/4/enabling-serverless-kubernetes -[6]: https://landscape.cncf.io/format=serverless -[7]: https://opensource.com/article/20/4/java-quarkus-vs-code -[8]: https://knative.dev/docs/eventing/ -[9]: https://cloudevents.io/ -[10]: https://opensource.com/article/19/4/devops-pipeline-acceptance-testing -[11]: https://github.com/serverlessworkflow -[12]: https://quarkus.io/guides/ diff --git a/sources/talk/20210113 Gain control of your calendar with this simple strategy.md b/sources/talk/20210113 Gain control of your calendar with this simple strategy.md deleted file mode 100644 index c6935332d1..0000000000 --- a/sources/talk/20210113 Gain control of your calendar with this simple strategy.md +++ /dev/null @@ -1,73 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Gain control of your calendar with this simple strategy) -[#]: via: (https://opensource.com/article/21/1/calendar-time-boxing) -[#]: author: (Kevin Sonney https://opensource.com/users/ksonney) - -Gain control of your calendar with this simple strategy -====== -Time boxing is a time management strategy that helps protect your time -so you can focus on the task at hand. -![Calendar close up snapshot][1] - -In prior years, this annual series covered individual apps. This year, we are looking at all-in-one solutions in addition to strategies to help in 2021. Welcome to day 3 of 21 Days of Productivity in 2021. - -Before we had calendars on our computers, we often had to do a dance around scheduling a meeting. A time that was good for Alice and Bob might not be suitable for Carol and Dave, so there was a lot of talking about when the meeting could be held. When electronic calendars became generally available, it was a revolution. Alice could check to see when Bob, Carol, Dave, _and_ a meeting room were open, and send out an invitation asking for all of them to attend. - -And, if you're looking for an open source calendar client, check [these alternatives][2] out. - -![A typical day][3] - -A typical day (Kevin Sonney, [CC BY-SA 4.0][4]) - -However, this led to problems where the only time available was when Carol, who is on the West Coast, is at lunch. Or Bob planned to use that big empty space on his calendar for writing a new function, but now has a meeting in the middle of it. - -If Bob wants to avoid this, he creates an appointment with himself on his calendar to "Write Code," and Alice sees that block of time is not available. - -This strategy is called _time boxing_ and is not only useful for preventing that meeting from being scheduled at a given time, but for giving a person the time to focus on a specific task. That task might be responding to email, writing code, or taking a break. - -![An on-call week][5] - -An on-call week (Kevin Sonney, [CC BY-SA 4.0][4]) - -Time boxing is very good for working on long projects with a deadline. With dedicated time set aside, it is easier to focus on individual steps and track progress. It also allows a person to say, "this is when I will be working on X," in a status update email or meeting. - -[As discussed yesterday][6], assigning dedicated times to read and respond to email helps reduce stress and set expectations for when people might receive a response. Users can schedule time to work on more complex issues that may be brought up in email as well. - -Taking breaks is one of the things I, at least, am _really bad_ at. After two hours of working on a problem, I know that my mind is going to be stuck in that space. For me, getting up and stepping away from my desk for a short while helps me clear my mind and focus on the next thing. In my case, this is very important after a meeting since what I may be working on next is not very likely to be directly related to the meeting I just attended. - -I also block out time to eat lunch since I, like many people in technology, will get wrapped up in something and forget to eat lunch until late in the day or not have a meal at all, and just snack here and there. - -![Blocked out time][7] - -Blocked out time (Kevin Sonney, [CC BY-SA 4.0][4]) - -How do we deal with the person who schedules something in the middle of a block? There are a couple of ways. The easiest is to request a new time, just like any other meeting with a conflicting time. Sometimes, though, it can't be moved, and the meetings with myself must be moved around to accommodate. - -Time boxing is an effective strategy for protecting time to work on specific things, take breaks, or process other tasks, and one I regularly use for both work and my hobbies (like writing articles for OpenSource.com 😄). - -Need to keep your schedule straight? Learn how to do it using open source with these free... - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/21/1/calendar-time-boxing - -作者:[Kevin Sonney][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/ksonney -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/calendar.jpg?itok=jEKbhvDT (Calendar close up snapshot) -[2]: https://opensource.com/alternatives/google-calendar -[3]: https://opensource.com/sites/default/files/pictures/a-typical-day.png (A typical day) -[4]: https://creativecommons.org/licenses/by-sa/4.0/ -[5]: https://opensource.com/sites/default/files/pictures/an-on-call-week.png (An on-call week) -[6]: https://opensource.com/article/21/1/email-rules -[7]: https://opensource.com/sites/default/files/pictures/oh-that-person.png (Blocked out time) diff --git a/sources/talk/20210117 4 big lessons from my internship with open source.md b/sources/talk/20210117 4 big lessons from my internship with open source.md deleted file mode 100644 index cefde60d2b..0000000000 --- a/sources/talk/20210117 4 big lessons from my internship with open source.md +++ /dev/null @@ -1,99 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (4 big lessons from my internship with open source) -[#]: via: (https://opensource.com/article/21/1/open-source-intern) -[#]: author: (Jaideep Rao https://opensource.com/users/jaideeprao) - -4 big lessons from my internship with open source -====== -Just months after dipping my toes into open source, I learned lessons as -a college intern that will help anyone writing and contributing code to -a community. -![Brain on a computer screen][1] - -If you happened to have a time machine and chose to shoot yourself back a year to ask me what I thought about making open source contributions (of all the things you could've done), you may have guessed that I would just shrug and say something along the lines of, "I don't know, isn't that reserved for all the hard-core devs with the insane GitHub stats and decked-out macros and stuff? I'd have no idea what I was doing, and who would even care what some random college student had to say about their code?" And you'd probably be correct. But this was all before I stumbled onto the incredible opportunity to intern at Red Hat within the OpenShift Engineering division for the better part of 2020. - -I came into the internship like any fresh-faced computer science student, skirting through life writing untested, barely readable but somehow still functional code, and feeling proud of it. But this internship brought the opportunity to get my hands dirty with the open source culture and finally see what all the hype is about. - -I worked within the OpenShift-GitOps team right around the time Red Hat officially adopted [Argo CD][2] into its ecosystem. Subsequently, I—along with the rest of the team—was tasked with making upstream contributions to Argo CD. I decided to throw some of my thoughts about my experience into an article to take you through it. - -### Figuring things out - -Starting out was difficult and disorienting, as you might expect. I think we can all agree that reading code is hard enough when it's written by a colleague on your team. To get up to speed with code written within a different organization, potentially using different technologies, different components, and different coding practices can get overwhelming quickly. On several occasions, I found myself mindlessly sifting through files. - -I soon realized that my first step should have been to try to understand the product as a user, not as a developer. This involved trying to get the software up and running and playing around with it. Fortunately, I had an entire team going through the same thing, so we could help each other get set up and cruise through it. - -This was also when I started to appreciate the power of good documentation and what it can do to simplify your life as a developer. As an added bonus, the good folks in the Argo community were accommodating enough to host a weekly office hour of sorts to ease in all the new contributors. These sessions went a long way in speeding the awkward settling-in phase and helping our programmer's instinct kick in sooner. (They were also just a great place to be a fly-on-the-wall observer.) - -### Selecting and solving issues - -Skipping forward a little, I began scouring the list of open issues looking for something to sink my teeth into. This can be a messy process. The open source community's heavy dependence on its members' proclivity to participate comes with its fair share of ambiguity and lack of obligation towards efficient communication. This may present itself in several ways, such as an inability to reproduce the described issue locally, insufficient context to understand the issue, or just painfully slow communication with the person who raised the issue. As you go through the open source experience, you might find this to be a recurring theme. However, this experience helped me realize that picking the right issue, understanding its semantics, and reproducing it locally is half the battle. - -When things go right, and you find an interesting issue with decent engagement, it can be quite exciting! The discussions in the comments section can show the different use cases and workarounds people come up with about specific issues in the project. These can be great sources of context, and gathering context is the name of the game—at least until you know what the heck is going on. - -Once I was in the weeds and starting to think about potential solutions to an issue, the thing that jumped out to me the most was how much of a learning curve was associated with each new issue I took on. One of the reasons was that I was picking randomly from whatever unclaimed open issues were filed under the next major release milestone. This meant the issues I took varied a lot. I would wind up going down a different rabbit hole for each, learning 10 new related concepts in the process (even if not all of them made their way into the eventual pull request). - -The same thing was true even when trying to step through the code to track down the source of a bug and coming across all the different components involved. This phase always seemed to be packed with the most amount of learning. As I slowly made my way to the solution, I often needed to fill in some knowledge gaps. Once again, I believe I had the most supportive colleagues anyone could ask for since I could always consult them as needed. - -### Submitting pull requests - -Once a fix or feature is done and tested locally, you're ready to raise your pull request (PR)! This is usually followed by a few rounds of going back and forth with the repository's maintainers as they review your PR and potentially request changes. It always amazes me to think about the amount of time, effort, and deliberation that the seemingly smallest contribution can involve. This isn't always evident from the outside, and your PR might end up looking very different from what you started with. - -I also learned that it is not uncommon for five lines of code changes to be accompanied by 150 lines of tests for those changes. In other words, writing unit tests for your PR can sometimes be just as involved as the fix/feature itself, if not more. After everything is said and done, your PR is finally merged. You can do a quick celebratory dance, but then it's onward to the next one! - -### Learning big lessons - -I learned a lot during my internship that will help me professionally and personally. - -#### Professional lessons - - * Coming into this, most of my coding experience had been centered around personal projects or assignments for school or tasks assigned for my organization. These tend to be very specific to their intended audience and generally aren't very consequential to the wider community. In contrast, open source projects tend to have a much wider reach, so it was interesting to think about the potential scale of my contributions' impact. This made me feel like my work was consequential, and that made it feel worthwhile. - * If you're like me, finding random issues and fixing them might stop being as exciting after a while. You might ask, "What is all of this actually leading to?" This is why I think it's important to have a larger picture and a sense of direction in mind. It helps drive your decisions and reminds you what you're working towards. Red Hat's larger objectives and long-term vision for adopting Argo CD provided me with this sense of direction and helped me stay motivated. But this can probably be achieved in multiple ways. Picking and working on issues more strategically, so they allow you to learn an aspect of programming that you're interested in getting better at, could be one of them. - - - -#### Personal lessons - - * It's no secret that breaking into something new can be daunting. I, probably along with half the software industry, am no stranger to imposter syndrome. There were times I felt like I wasn't moving as quickly or making as much progress as I would have expected from myself. This was frustrating, but I eventually understood how important it is to be patient with yourself. Especially if you're someone who's just learning the ropes, it may take a while to start making good progress, but it's worth remembering that it's all part of the learning process. - * Early on, I tended to compare myself with my more experienced colleagues who were going through issues and getting PRs merged faster than you could finish saying "Argo CD." This didn't help my confidence a whole lot, but I realized that pitting myself (an intern working part time) against industry veterans wasn't really a fair comparison for anyone. The best way to build yourself up is to compare yourself to who you used to be rather than to those around you. - - - -#### Other helpful tips I learned - - * Do not hesitate to ask questions on the community forum. Also, try to find out if the project has a Slack, Discord, or Gitter that you can join. - * Look at other PRs and discussions to gain context about what's happening in the project and better understand the codebase. - * Try to identify unique log and error messages related to the workflow you're interested in. Searching for these messages directly against the codebase could be a quick way to locate the area you want to focus on, and reverse-engineering the sequence of function calls involved in getting to that point may help you understand everything that takes place along the way. (I found this to be particularly helpful.) - * Looking at unit tests can be a good way to understand what a function is supposed to be doing and how it interacts with other functions (input/output formats, etc.). - * Looking for issues labeled "good first issue" might be a good place to start. However, there may be many good issues that aren't labeled as such, so it might be worth looking through the issue board outside of that filter. - * Always update documentation if you're making feature edits! - - - -### Closing thoughts - -The open source contribution experience is not a perfect process. As with anything else, it has its downsides. The sense of ambiguity from its open-ended nature and the occasional lack of feedback or communication can be hard to work around. On the other hand, I am pleased to see how much I was able to grow and get exposure to during this time. I found it challenging and gratifying to be a part of a developer team, and I am better for it. - -Getting to work within a different paradigm, becoming a part of the wider developer community, and making new connections were all big pluses. Having your PRs merged is a good feeling as well! I also benefited by spotting [PlayerUnknown's Battlegrounds][3] as an Argo CD user, and I helped improve my friends' PUBG gaming experience by telling them about it. - -If you made it all the way to the end, thanks for reading! I hope this can be helpful to you in starting your own journey into the open source world. Good luck! - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/21/1/open-source-intern - -作者:[Jaideep Rao][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/jaideeprao -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/brain_computer_solve_fix_tool.png?itok=okq8joti (Brain on a computer screen) -[2]: https://github.com/argoproj/argo-cd -[3]: https://en.wikipedia.org/wiki/PlayerUnknown%27s_Battlegrounds diff --git a/sources/talk/20210125 7 ways open source was essential to business in 2020.md b/sources/talk/20210125 7 ways open source was essential to business in 2020.md deleted file mode 100644 index 57dea0448a..0000000000 --- a/sources/talk/20210125 7 ways open source was essential to business in 2020.md +++ /dev/null @@ -1,72 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (7 ways open source was essential to business in 2020) -[#]: via: (https://opensource.com/article/21/1/open-source-business) -[#]: author: (Jessica Cherry https://opensource.com/users/cherrybomb) - -7 ways open source was essential to business in 2020 -====== -Moving work online created challenges and opportunities for innovation -in 2020. -![A chair in a field.][1] - -The COVID-19 pandemic created many new challenges for businesses in 2020 as they rapidly moved non-essential workers to remote operations. However, it also created tremendous opportunities for innovation as people searched for effective ways to work and collaborate virtually. - -Opensource.com responded to the need by publishing a variety of articles in 2020 on working better with open source. Since it appears working remotely is here to stay for the foreseeable future, make sure you're doing everything you can to adapt by reading the top seven articles about open source business from 2020. - -### Open source live streaming with Open Broadcaster Software - -If you want to start reaching your customers with live streaming, Seth Kenlon's article on [open source live streaming][2] explains how to use Open Broadcaster Software (OBS) to connect to various streaming services to share your skills or gameplay. He outlines OBS and offers a detailed walk-through of its installation and use, making your start in streaming quick and easy. Seth also explains how to connect your devices to a streaming server and shares a powerful message about the value of teaching others and broadcasting words of encouragement. - -### Manage knowledge with BlueSpice, an open source alternative to Confluence - -Most enterprises have a wiki for sharing and managing knowledge across their teams. Instead of risking vendor lock-in with proprietary software, Martin Loschwitz recommends [considering BlueSpice][3], an open source alternative to Confluence. He covers the structural differences between BlueSpice and Confluence, how to use the optional BlueSpice Farm to connect multiple wikis, and BlueSpice's amazing search capabilities that use Elasticsearch to enable narrower searches. Martin also gets into BlueSpice's compliance and security features, editor functions, extensions, and design features that match your wiki to your company's branding. - -### Choosing open source as a marketing strategy - -Lucas Galvanni and Nathalie Risbakk discuss how to use [open source in your marketing strategy][4]. They use the example of Brewdog, which opened its beer recipes to the public, a strategy that paid off by making the brand extremely popular with the homebrewing community. They also cover developing marketing strategies based on customers' needs and desires and explain how moving their company to an open source model helped it engage with the community. Finally, they get into the challenges, risks, and rewards of open source with some final notes about building success over time. - -### 7 Ways NOT to manage your remote team - -Matt Shealy says [remote teams are susceptible to miscommunication][5], but rethinking how things have always been done can help avoid disaster. His tips include continuous training on technical and emotional topics, creating standards around communications in remote chat systems, and keeping work on schedule. Matt also recommends keeping your eye on the big picture with goals and milestones, avoiding micromanagement, and promoting diversity to leverage different viewpoints and help teams shine. He also describes the benefits and barriers of teams working across different time zones and recommends keeping your eye on costs to find a middle ground to keep trust between IT and finance teams. - -### 5 humans review 5 open source video chat tools - -During the lockdowns in summer 2020, Opensource.com writers Matt Broberg, Alan Formy-Duval, Chris Hermansen, Seth Kenlon, and I joined forces to [review open source video chat tools][6]. We looked at the tools' security risks, capabilities, and performance, considering our various locations and internet quality, to discover what's out there in open source video-conferencing solutions. This review may give you new ideas on tools to improve your video chats. - -### Love or hate chat? 4 best practices for remote teams - -To help the many teams working remotely, Jen Wike Huger offers [best practices for using chat][7] in your day-to-day life. Before getting into her tips, Jen recommends asking team members about their comfort level using chat to keep in touch during the workday. Next, she offers best practices, including creating rooms and threads, setting expectations around when people are expected to respond (or not) in chat, and communicating clearly and kindly. - -### The FSF reveals the tools they use for chat, video, and more - -The Free Software Foundation's Greg Farough shares the [software the organization uses for remote communications][8]. He explains that self-reliance on some of the tools (by self-hosting or having a friend or colleague host them) can be difficult but beneficial. He concludes by saying, "This is just a small selection of the huge amount of free software out there, all ready to be used, shared, and improved by the community," and asks the community to share knowledge "to help people find ways of communicating that put user freedom as a priority." - -### 2020: The year open source remote business became essential - -These seven articles offer many suggestions for teams working remotely and which open source tools will help them do it better. In 2020, open source software proved its value for expanding and improving work across great distances. And these tools will remain key business enablers in 2021, as many of us continue working from home. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/21/1/open-source-business - -作者:[Jessica Cherry][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/cherrybomb -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/BIZ_WorkInPublic_4618517_1110_CS_A.png?itok=RwVrWArk (A chair in a field.) -[2]: https://opensource.com/article/20/4/open-source-live-stream -[3]: https://opensource.com/article/20/9/bluespice -[4]: https://opensource.com/article/20/7/open-source-marketing -[5]: https://opensource.com/article/20/1/ways-not-manage-remote-team -[6]: https://opensource.com/article/20/5/open-source-video-conferencing -[7]: https://opensource.com/article/20/4/chat-tools-best-practices -[8]: https://opensource.com/article/20/5/free-software-communication diff --git a/sources/talk/20210211 Understanding Open Governance Networks.md b/sources/talk/20210211 Understanding Open Governance Networks.md deleted file mode 100644 index 771947bb39..0000000000 --- a/sources/talk/20210211 Understanding Open Governance Networks.md +++ /dev/null @@ -1,100 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Understanding Open Governance Networks) -[#]: via: (https://www.linux.com/news/understanding-open-governance-networks/) -[#]: author: (The Linux Foundation https://www.linuxfoundation.org/en/blog/understanding-open-governance-networks/) - -Understanding Open Governance Networks -====== - -![][1] - -Throughout the modern business era, industries and commercial operations have shifted substantially to digital processes. Whether you look at EDI as a means to exchange invoices or cloud-based billing and payment solutions today, businesses have steadily been moving towards increasing digital operations. In the last few years, we’ve seen the promises of digital transformation come alive, particularly in [industries that have shifted to software-defined models][2]. The next step of this journey will involve enabling digital transactions through decentralized networks. - -A fundamental adoption issue will be figuring out who controls and decides how a decentralized network is governed. It may seem oxymoronic at first, but decentralized networks still need governance. A future may hold autonomously self-governing decentralized networks, but this model is not accepted in industries today. The governance challenge with a decentralized network technology lies in who and how participants in a network will establish and maintain policies, network operations, on/offboarding of participants, setting fees, configurations, and software changes and are among the issues that will have to be decided to achieve a successful network. No company wants to participate or take a dependency on a network that is controlled or run by a competitor, potential competitor, or any single stakeholder at all for that matter. - -Earlier this year, [we presented a solution for Open Governance Networks][3] that enable an industry or ecosystem to govern itself in an open, inclusive, neutral, and participatory model. You may be surprised to learn that it’s based on best practices in open governance we’ve developed over decades of facilitating the world’s most successful and competitive open source projects. - -### The Challenge - -For the last few years, a running technology joke has been “describe your problem, and someone will tell you blockchain is the solution.” There have been many other concerns raised and confusion created, as overnight headlines hyped cryptocurrency schemes. Despite all this, behind the scenes, and all along, sophisticated companies understood a distributed ledger technology would be a powerful enabler for tackling complex challenges in an industry, or even a section of an industry. - -At the Linux Foundation, we focused on enabling those organizations to collaborate on open source enterprise blockchain technologies within our Hyperledger community. That community has driven collaboration on every aspect of enterprise blockchain technology, including identity, security, and transparency. Like other Linux Foundation projects, these enterprise blockchain communities are open, collaborative efforts. We have had many vertical industry participants engage, from retail, automotive, aerospace, banking, and others participate with real industry challenges they needed to solve. And in this subset of cases, enterprise blockchain is the answer. - -The technology is ready. Enterprise blockchain has been through many proof-of-concept implementations, and we’ve already seen that many organizations have shifted to production deployments. A few notable examples are: - - * [Trust Your Supplier Network][4] 25 major corporate members from Anheuser-Busch InBev to UPS In production since September 2019. - * [Foodtrust][5] Launched Aug 2017 with ten members, now being used by all major retailers. - * [Honeywell][6] 50 vendors with storefronts in the new marketplace. In its first year, GoDirect Trade processed more than $5 million in online transactions. - - - -However, just because we have the technology doesn’t mean we have the appropriate conditions to solve adoption challenges. A certain set of challenges about networks’ governance have become a “last mile” problem for industry adoption. While there are many examples of successful production deployments and multi-stakeholder engagements for commercial enterprise blockchains already, specific adoption scenarios have been halted over uncertainty, or mistrust, over who and how a blockchain network will be governed. - -To precisely state the issue, in many situations, company A does not want to be dependent on, or trust, company B to control a network. For specific solutions that require broad industry participation to succeed, you can name any industry, and there will be company A and company B. - -We think the solution to this challenge will be Open Governance Networks. - -### The Linux Foundation vision of the Open Governance Network - -An Open Governance Network is a distributed ledger service, composed of nodes, operated under the policies and directions of an inclusive set of industry stakeholders. - -Open Governance Networks will set the policies and rules for participation in a decentralized ledger network that acts as an industry utility for transactions and data sharing among participants that have permissions on the network. The Open Governance Network model allows any organization to participate. Those organizations that want to be active in sharing the operational costs will benefit from having a representative say in the policies and rules for the network itself. The software underlying the Open Governance Network will be open source software, including the configurations and build tools so that anyone can validate whether a network node complies with the appropriate policies. - -Many who have worked with the Linux Foundation will realize an open, neutral, and participatory governance model under a nonprofit structure that has already been thriving for decades in successful open source software communities. All we’re doing here is taking the same core principles of what makes open governance work for open source software, open standards, and open collaboration and applying those principles to managing a distributed ledger. This is a model that the Linux Foundation has used successfully in other communities, such as the [Let’s Encrypt][7] certificate authority. - -Our ecosystem members trust the Linux Foundation to help solve this last mile problem using open governance under a neutral nonprofit entity. This is one solution to the concerns about neutrality and distributed control. In pan-industry use cases, it is generally not acceptable for one participant in the network to have power in any way that could be used as an advantage over someone else in the industry.  The control of a ledger is a valuable asset, and competitive organizations generally have concerns in allowing one entity to control this asset. If not hosted in a neutral environment for the community’s benefit, network control can become a leverage point over network users. - -We see this neutrality of control challenge as the primary reason why some privately held networks have struggled to gain widespread adoption. In order to encourage participation, industry leaders are looking for a neutral governance structure, and the Linux Foundation has proven the open governance models accomplish that exceptionally well. - -This neutrality of control issue is very similar to the rationale for public utilities. Because the economic model mirrors a public utility, we debated calling these “industry utility networks.” In our conversations, we have learned industry participants are open to sharing the cost burden to stand up and maintain a utility. Still, they want a low-cost, not profit-maximizing model. That is why our nonprofit model makes the most sense. - -It’s also not a public utility in that each network we foresee today would be restricted in participation to those who have a stake in the network, not any random person in the world. There’s a layer of human trust that our communities have been enabling on top of distributed networks, which started with the [Trust over IP Foundation][8]. - -Unlike public cryptocurrency networks where anyone can view the ledger or submit proposed transactions, industries have a natural need to limit access to legitimate parties in their industry. With minor adjustments to address the need for policies for transactions on the network, we believe a similar governance model applied to distributed ledger ecosystems can resolve concerns about the neutrality of control. - -### Understanding LF Open Governance Networks - -Open Governance Networks can be reduced to the following building block components: - - * Business Governance: Networks need a decision-making body to establish core policies (e.g., network policies), make funding and budget decisions, contracting with a network manager, and other business matters necessary for the network’s success. The Linux Foundation establishes a governing board to manage the business governance. - * Technical Governance: Networks will require software. A technical open source community will openly maintain the software, specifications, or configuration decisions implemented by the network nodes. The Linux Foundation establishes a technical steering committee to oversee technical projects, configurations, working groups, etc. - * Transaction Entity: Networks will require a transaction entity that will a) act as counterparty to agreements with parties transacting on the network, b) collect fees from participants, and c) execute contracts for operational support (e.g., hiring a network manager). - - - -Of these building blocks, the Linux Foundation already offers its communities the Business and Technical Governance needed for Open Governance Networks. The final component is the new, LF Open Governance Networks. - -LF Open Governance Networks will enable our communities to establish their own Open Governance Network and have an entity to process agreements and collect transaction fees. This new entity is a Delaware nonprofit, a nonstock corporation that will maximize utility and not profit. Through agreements with the Linux Foundation, LF Governance Networks will be available to Open Governance Networks hosted at the Linux Foundation. - -If you’re interested in learning more about hosting an Open Governance Network at the Linux Foundation, please contact us at **[governancenetworks@linuxfoundation.org][9]** - -The post [Understanding Open Governance Networks][10] appeared first on [Linux Foundation][11]. - --------------------------------------------------------------------------------- - -via: https://www.linux.com/news/understanding-open-governance-networks/ - -作者:[The Linux Foundation][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://www.linuxfoundation.org/en/blog/understanding-open-governance-networks/ -[b]: https://github.com/lujun9972 -[1]: https://www.linux.com/wp-content/uploads/2021/02/understanding-opengovnetworks.png -[2]: https://www.linuxfoundation.org/blog/2020/09/software-defined-vertical-industries-transformation-through-open-source/ -[3]: https://www.linuxfoundation.org/blog/2020/10/introducing-the-open-governance-network-model/ -[4]: https://www.hyperledger.org/learn/publications/chainyard-case-study -[5]: https://www.hyperledger.org/learn/publications/walmart-case-study -[6]: https://www.hyperledger.org/learn/publications/honeywell-case-study -[7]: https://letsencrypt.org/ -[8]: https://trustoverip.org/ -[9]: mailto:governancenetworks@linuxfoundation.org -[10]: https://www.linuxfoundation.org/en/blog/understanding-open-governance-networks/ -[11]: https://www.linuxfoundation.org/ diff --git a/sources/talk/20210212 18 ways to differentiate open source products from upstream suppliers.md b/sources/talk/20210212 18 ways to differentiate open source products from upstream suppliers.md deleted file mode 100644 index 045a31836a..0000000000 --- a/sources/talk/20210212 18 ways to differentiate open source products from upstream suppliers.md +++ /dev/null @@ -1,124 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (18 ways to differentiate open source products from upstream suppliers) -[#]: via: (https://opensource.com/article/21/2/differentiating-products-upstream-suppliers) -[#]: author: (Scott McCarty https://opensource.com/users/fatherlinux) - -18 ways to differentiate open source products from upstream suppliers -====== -Open source products must create enough differentiated value that -customers will voluntarily pay for them versus another (or free) -product. -![Tips and gears turning][1] - -In the first three parts of this series, I explored [open source as a supply chain][2], [what a product is][3], and [what product managers do][4]. In this fourth article, I'll look at a plethora of methods to differentiate open source software products from their upstream open source projects. - -Since open source projects are essentially information products, these methods are likely to apply to many information-related products (think YouTube creators) that have a component of value given away for free. Product managers have to get creative when the information and material to build your product is freely available to users. - -### Creating and capturing value - -Product managers are responsible for creating solutions that attract and retain customers. To create a customer, they must provide value in exchange for money. Like a good salesperson, a product manager should never feel guilty about charging for their product (see [_How to sell an open source product_][5] by John Mark Walker). - -Products built on open source are fundamentally no different than any other products or service. They must create value for customers. In fact, they must create enough value that customers will voluntarily pay a price that is sufficient to pay for the development costs and return a profit. These products must also be differentiated from competing products and services, as well as upstream projects. - -![Inputs for creating value][6] - -(Scott McCarty, [CC BY-SA 4.0][7]) - -While products built on open source software are not fundamentally different from other products and services, there are some differences. First, some of the development costs are defrayed among all open source contributors. These costs can include code, testing, documentation, hardware, project hosting costs, etc. But even when development costs are defrayed in open source, costs are incurred by the vendor that productizes the code. These can include employee costs for research, analysis, security, performance testing, certification processes (e.g., collaborating with hardware vendors, cloud providers, etc.), and of course, sales and marketing. - -![Inputs for solving market problems][8] - -(Scott McCarty, [CC BY-SA 4.0][7]) - -Successful open source products must be able to charge a cost that is sufficient to pay for the defrayed upstream open source contributions (development costs) and the downstream productization costs (vendor costs). Stated another way, products can only charge a sufficient price if they create value that can only be captured by customers paying for them. That might sound harsh, but it's a reality for all products. There's a saying in product management: Pray to pay doesn't work. With that said, don't be too worried. There are ethical ways to capture value. - -### Types of value - -Fundamentally, there are two types of value: proprietary and non-proprietary. Proprietary is a bad word in open source software, but an attractive word in manufacturing, finance, and other industries. Many financial companies will highlight their proprietary algorithms and the same with drug companies and manufacturing processes. In software, proprietary value is often thought to be completely incongruous with free and open source software. People often assume proprietary value is a binary decision. It’s difficult for people to imagine proprietary value in the context of open source software without being artificially constrained by a license. However, as we’ll attempt to demonstrate, it’s not so clear cut. - -From an open source product management perspective, you can define proprietary value as anything that would be very difficult or nearly impossible for the customer to recreate themselves—or something the potential customer doesn't believe they can recreate. Commodity value is the opposite of proprietary. Commodity value is value the customer believes they could construct (or reconstruct) given enough time and money. - -Reconstructing commodity value instead of purchasing it makes sense only if it's cheaper or easier than buying a product. Stated another way, a good product should save a customer money compared to building the solution themselves. It's in this cost gap that open source products exist and thrive. - -With products built, or mostly built, on an open source supply chain, customers retain the "build versus buy" decision and can stop paying at any time. This is often true with open core products as well. As long as the majority of the supply chain is open source, the customer likely could rebuild a few components to get what they need. The open source product manager's job is the same as for any other product or service: to create and retain customers by providing value worth paying for. - -### Differentiators for open source product managers - -Like any artist, a product manager traffics in value as their medium. They must price and package their product. They must constantly strive to differentiate their product against competitors in the marketplace and the upstream projects that are suppliers to that product. However, the supply chain is but one tool a product manager can use to differentiate and create a customer. - -This is a less-than-exhaustive list that should give you some ideas about how product managers can differentiate their products and create value. As you read through the list, think deeply about whether a customer could recreate the value of each given enough time, money, and willpower. - - * **Supply chain:** Selecting the upstream suppliers is important. The upstream community's health is a selling point over products based on competing upstream projects. A perfect example of this kind of differentiation is with products such as OpenShift, Docker EE, and Mesosphere, which respectively rely on Kubernetes, Swarm, and Apache Mesos as upstream suppliers. Similar to how electric cars are replacing gasoline engines, the choice of technology and its supplier provide differentiation. - - * **Quality engineering:** Upstream continuous integration and continuous delivery (CI/CD) and user testing are wonderful bases for building a product. However, it's critical to ensure that the downstream product, often made up of multiple upstream projects, works well together with specific versions of all the components. Testing the entire solution together applies as much to differentiating from upstream suppliers as it does from competitive products. Customers want products that just work. - - * **Industry certifications:** Specific classes of customers, such as government, financial services, transportation, manufacturing, and telecom, often have certification requirements. Typically, these are related to security or auditing and are often quite expensive. Certifications are great because they differentiate the product from competitors and upstream. - - * **Hardware or cloud provider certifications:** The dirty secret of cheap hardware is that it changes all the time. Often this hardware has new capabilities with varying levels of maturity. Hardware certifications provide a level of confidence that the software will run well on a specific piece of hardware or cloud virtual machine. They also provide a level of assurance that the product company and the platform on which it is certified to run are committing to make it work well together. A potential customer could always vet hardware themselves, but they often don't have deep relationships with hardware vendors and cloud providers, making it difficult to demand fixes and patches. - - * **Ecosystem:** This represents access to a plethora of add-on solutions from third-party vendors. Again, the ecosystem provides some assurance that all the entities work together to make things work well. Small companies would likely find it difficult or impossible to demand that individual software vendors certify their privately built platforms. Integrations like these are usually quite expensive for an individual user and are best defrayed across a product's customers. - - * **Lifecycle:** Upstream projects are great because they move quickly and innovate. But many different versions of many different upstream projects can go into a single product's supply chain. Ensuring that all the versions of the different upstream projects work together over a given lifecycle is a lot of work. A longer lifecycle gives customers time to get a return on investment. Stated another way, users spend a lot of time and money planning and rolling out software. A product's lifecycle commitment ensures that customers can use the software and receive value from their investment for a reasonable amount of time. - - * **Packaging and distribution:** Once a vendor commits to supporting a product for a given lifecycle (e.g., five years), they must also commit to providing packaging and distribution during that time. Both products and cloud services need to provide customers the ability to plan a roadmap, execute a rollout, and expand over the desired lifecycle, so packages or services need to remain available for customer use. - - * **Documentation:** This is often overlooked by both open source projects and vendors. Aligning product documentation to the product lifecycle, versus the upstream supplier documentation, is extremely important. It's also important to document the entire solution working together, whether that's installation or use cases for end users. It's beneficial for customers to have documentation that applies to the specific combination of components they are using. - - * **Security:** Closely related to the product lifecycle, vendors must commit to providing security during the time the product is supported. This includes analyzing code, scoring vulnerabilities, patching those vulnerabilities, and verifying that they are patched. This is a particularly opportune area for products to differentiate themselves from upstream suppliers. It really is value creation through data. - - * **Performance:** Also closely related to product lifecycle, vendors must commit to providing performance testing, tuning recommendations, and sometimes even backporting performance improvements during the product's lifecycle. This is another opportune area for products. - - * **Indemnification:** This is essentially insurance in case the company using the software is sued by a patent troll. Often, the corporate legal team just won't have the skill set needed to defend themselves. While potential customers could pay a third party for legal services, would they know the software as well? - - * **Compute resources:** You simply can't get access to compute resources without paying for them. There are free trials, but sustained usage always requires paying, either through a cloud provider or by buying hardware. In fact, this is one of the main differentiated values provided by infrastructure as a service (IaaS) and software as a service (SaaS) cloud providers. This is quite differentiated from upstream suppliers because they will never have the budget to provide free compute, storage, and network. - - * **Consulting:** Access to operational knowledge to set up and use the software may be a differentiator. Clearly, a company can hire the talent, given enough budget and willpower, but talent can be difficult to find. In fact, one might argue that software vendors have a much better chance of attracting the top talent, essentially creating a talent vacuum for users trying to reconstruct the value themselves. - - * **Training:** Similar to consulting, the company that wrote, configured, released, and operated the software at scale often knows how to use it best. Again, a customer could hire the talent given enough budget and willpower. - - * **Operational knowledge:** IaaS and SaaS solutions often provide this kind of value. Similarly, knowledge bases and connected experiences that analyze an installed environment's configuration to provide the user with insights (e.g., OpenShift, Red Hat Insights) can provide this value. Operational knowledge is similar to training and consulting. - - * **Support:** This includes the ability to call for help or file support tickets and is similar to training, consulting, and operational knowledge. Support is often a crutch for open source product managers; again, customers can often recreate their own support organizations, depending on where they want to strategically invest budget and people, especially for level one and level two support. Level three support (e.g., kernel programmers) might be harder to hire. - - * **Proprietary code:** This is code that's not released under an open source license. A customer could always build a software development team and augment the open core code with the missing features they need. For the vendor, proprietary code has the downside of creating an unnatural competition between the upstream open source supplier and the downstream product. Furthermore, this unnatural split between open source and proprietary code does not provide the customer more value. It always feels like value is being unnaturally held back. I would argue that this is a very suboptimal form of value capture. - - * **Brand:** Brand equity is not easily measurable. It really comes down to a general level of trust. The customer needs to believe that the solution provider can and will help them when they need it. It's slow to build a brand and easy to lose it. Careful thought might reveal that the same is true with internal support organizations in a company. Users will quickly lose trust in internal support organizations, and it can take years to build it back up. - - - - -Reading through the list, do you think a potential customer could recreate the value of almost any of these items? The answer is almost assuredly yes. This is true with almost any product feature or capability, whether it's open source or even proprietary. Cloud providers build their own CPUs and hardware, and delivery companies (e.g., UPS, Amazon, etc.) sometimes build their own vehicles. Whether it makes sense to build or buy all depends on the business and its specific needs. - -### Add value in the right places - -The open source licensing model led to an explosion in the availability of components that can be assembled into a software product. Stated another way, it formed a huge supply chain of software. Product managers can create products from a completely open source supply chain (e.g., Red Hat, Chef, SUSE, etc.), or mix and match open source and proprietary technology (e.g., open core like Sourcefire or SugarCRM). Choosing a fully open source versus open core methodology should not be confused with solving a business problem. Customers only buy products that solve their problems. - -Enterprise open source products are solutions to problems, much like a vehicle sold by an auto manufacturer. The product manager for an open source product determines the requirements, things like the lifecycle (number of years), security (important certifications), performance (important workloads), and ecosystem (partners). Some of these requirements can be met by upstream suppliers (open source projects); some cannot. - -An open source product is a composition of value consumed through a supply chain of upstream vendors and new value added by the company creating it. This new value combined with the consumed value is often worth more together and sold at a premium. It's the responsibility of product teams (including engineering, quality, performance, security, legal, etc.) to add new value in the right places, at the right times, to make their open source products worth the price customers pay versus building out the infrastructure necessary to assemble, maintain, and support the upstream components themselves. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/21/2/differentiating-products-upstream-suppliers - -作者:[Scott McCarty][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/fatherlinux -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/gears_devops_learn_troubleshooting_lightbulb_tips_520.png?itok=HcN38NOk (Tips and gears turning) -[2]: https://opensource.com/article/20/10/open-source-supply-chain -[3]: https://opensource.com/article/20/10/defining-product-open-source -[4]: https://opensource.com/article/20/11/open-source-product-teams -[5]: https://opensource.com/article/20/6/sell-open-source-software -[6]: https://opensource.com/sites/default/files/uploads/creatingvalue1.png (Inputs for creating value) -[7]: https://creativecommons.org/licenses/by-sa/4.0/ -[8]: https://opensource.com/sites/default/files/uploads/creatingvalue2.png (Inputs for solving market problems) diff --git a/sources/talk/20210212 How to adopt DevSecOps successfully.md b/sources/talk/20210212 How to adopt DevSecOps successfully.md deleted file mode 100644 index 27d6b9c41e..0000000000 --- a/sources/talk/20210212 How to adopt DevSecOps successfully.md +++ /dev/null @@ -1,128 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (How to adopt DevSecOps successfully) -[#]: via: (https://opensource.com/article/21/2/devsecops) -[#]: author: (Mike Calizo https://opensource.com/users/mcalizo) - -How to adopt DevSecOps successfully -====== -Integrating security throughout the software development lifecycle is -important, but it's not always easy. -![Target practice][1] - -Adopting [DevOps][2] can help an organization transform and speed how its software is delivered, tested, and deployed to production. This is the well-known "DevOps promise" that has led to such a large surge in adoption. - -We've all heard about the many successful DevOps implementations that changed how an organization approaches software innovation, making it fast and secure through agile delivery to get [ahead of competitors][3]. This is where we see DevOps' promises achieved and delivered. - -But on the flipside, some DevOps adoptions cause more issues than benefits. This is the DevOps dilemma where DevOps fails to deliver on its promises. - -There are many factors involved in an unsuccessful DevOps implementation, and a major one is security. A poor security culture usually happens when security is left to the end of the DevOps adoption process. Applying existing security processes to DevOps can delay projects, cause frustrations within the team, and create financial impacts that can derail a project. - -[DevSecOps][4] was designed to avoid this very situation. Its purpose "is to build on the mindset that 'everyone is responsible for security…'" It also makes security a consideration at all levels of DevOps adoption. - -### The DevSecOps process - -Before DevOps and DevSecOps, the app security process looked something like the image below. Security came late in the software delivery process, after the software was accepted for production. - -![Old software development process with security at the end][5] - -(Michael Calizo, [CC BY-SA 4.0][6]) - -Depending on the organization's security profile and risk appetite, the application might even bypass security reviews and processes during acceptance. At that point, the security review becomes an audit exercise to avoid unnecessary project delays. - -![Security as audit in software development][7] - -(Michael Calizo, [CC BY-SA 4.0][6]) - -The DevSecOps [manifesto][8] says that the reason to integrate security into dev and ops at all levels is to implement security with less friction, foster innovation, and make sure security and data privacy are not left behind. - -Therefore, DevSecOps encourages security practitioners to adapt and change their old, existing security processes and procedures. This may be sound easy, but changing processes, behavior, and culture is always difficult, especially in large environments. - -The DevSecOps principle's basic requirement is to introduce a security culture and mindset across the entire application development and deployment process. This means old security practices must be replaced by more agile and flexible methods so that security can iterate and adapt to the fast-changing environment. According to the DevSecOps manifesto, security needs to "operate like developers to make security and compliance available to be consumed as services." - -DevSecOps should look like the figure below, where security is embedded across the delivery cycle and can iterate every time there is a need for change or adjustment. - -![DevSecOps considers security throughout development][9] - -(Michael Calizo, [CC BY-SA 4.0][6]) - -### Common DevSecOps obstacles - -Any time changes are introduced, people find faults or issues with the new process. This is natural human behavior. The fear and inconvenience associated with learning new things are always met with adverse reactions; after all, humans are creatures of habit. - -Some common obstacles in DevSecOps adoption include: - - * **Vendor-defined DevOps/DevSecOps:** This means principles and processes are focused on product offerings, and the organization won't be able to build the approach. Instead, they will be limited to what the vendor provides. - * **Nervous people managers:** The fear of losing control is a real problem when change happens. Often, anxiety affects people managers' decision-making. - * **If ain't broke, don't fix it:** This is a common mindset, and you really can't blame people for thinking this way. But the idea that the old way will survive despite new ways of delivering software and solutions must be challenged. To adapt to the agile application lifecycle, you need to change the processes to support the speed and agility it requires. - * **The Netflix and Uber effect:** Everybody knows that Netflix and Uber have successfully implemented DevSecOps; therefore, many organizations want to emulate them. Because they have a different culture than your organization, simply emulating them won't work. - * **Lack of measurement:** DevOps and DevSecOps transformation must be measured against set goals. Metrics might include software delivery performance or overall organization performance over time. - * **Checklist-driven security:** By using a checklist, the security team follows the same old, static, and inflexible processes that are neither useful nor applicable to modern technologies that developers use to make software delivery lean and agile. The introduction of the "[as code][10]" approach requires security people to learn how to code. - * **Security as a special team:** This is especially true in organizations transitioning from the old ways of delivering software, where security is a separate entity, to DevOps. Because of the separations, trust is questionable among devs, ops, and security. This will cause the security team to spend unnecessary time reviewing and governing DevOps processes and building pipelines instead of working closely with developers and ops teams to improve the software delivery flow. - - - -### How to adopt DevSecOps successfully - -Adopting DevSecOps is not easy, but being aware of common obstacles and challenges is key to your success. - -Clearly, the biggest and most important change an organization needs to make is its culture. Cultural change usually requires executive buy-in, as a top-down approach is necessary to convince people to make a successful turnaround. You might hope that executive buy-in makes cultural change follow naturally, but don't expect smooth sailing—executive buy-in alone is not enough. - -To help accelerate cultural change, the organization needs leaders and enthusiasts that will become agents of change. Embed these people in the dev, ops, and security teams to serve as advocates and champions for culture change. This will also establish a cross-functional team that will share successes and learnings with other teams to encourage wider adoption. - -Once that is underway, the organization needs a DevSecOps use-case to start with, something small with a high potential for success. This enables the team to learn, fail, and succeed without affecting the organization's core business. - -The next step is to identify and agree on the definition of success. The DevSecOps adoption needs to be measurable; to do that, you need a dashboard that shows metrics such as: - - * Lead time for a change - * Deployment frequency - * Mean time to restore - * Change failure - - - -These metrics are a critical requirement to be able to identify processes and other things that require improvement. It's also a tool to declare if an adoption is a win or a bust. This methodology is called [event-driven transformation][11]. - -### Conclusion - -When implemented properly, DevOps enables an organization to deliver software to production quickly and gain advantages over competitors. DevOps allows it to fail small and recover faster by enabling flexibility and efficiency to go to market early. - -In summary, DevOps and DevSecOps adoption needs: - - * Cultural change - * Executive buy-in - * Leaders and enthusiasts to act as evangelists - * Cross-functional teams - * Measurable indicators - - - -Ultimately, the solution to the DevSecOps dilemma relies on cultural change to make the organization better. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/21/2/devsecops - -作者:[Mike Calizo][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/mcalizo -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/target-security.png?itok=Ca5-F6GW (Target practice) -[2]: https://opensource.com/resources/devops -[3]: https://www.imd.org/research-knowledge/articles/the-battle-for-digital-disruption-startups-vs-incumbents/ -[4]: http://www.devsecops.org/blog/2015/2/15/what-is-devsecops -[5]: https://opensource.com/sites/default/files/uploads/devsecops_old-process.png (Old software development process with security at the end) -[6]: https://creativecommons.org/licenses/by-sa/4.0/ -[7]: https://opensource.com/sites/default/files/uploads/devsecops_security-as-audit.png (Security as audit in software development) -[8]: https://www.devsecops.org/ -[9]: https://opensource.com/sites/default/files/uploads/devsecops_process.png (DevSecOps considers security throughout development) -[10]: https://www.oreilly.com/library/view/devopssec/9781491971413/ch04.html -[11]: https://www.openshift.com/blog/exploring-a-metrics-driven-approach-to-transformation diff --git a/sources/talk/20210213 5 reasons why I love coding on Linux.md b/sources/talk/20210213 5 reasons why I love coding on Linux.md deleted file mode 100644 index 64c968d669..0000000000 --- a/sources/talk/20210213 5 reasons why I love coding on Linux.md +++ /dev/null @@ -1,102 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (5 reasons why I love coding on Linux) -[#]: via: (https://opensource.com/article/21/2/linux-programming) -[#]: author: (Seth Kenlon https://opensource.com/users/seth) - -5 reasons why I love coding on Linux -====== -Linux is a great platform for programming—it's logical, easy to see the -source code, and very efficient. -![Terminal command prompt on orange background][1] - -In 2021, there are more reasons why people love Linux than ever before. In this series, I'll share 21 different ways to use Linux. Here I'll explain why so many programmers choose Linux. - -When I first started using Linux, it was for its excellent multimedia support because I worked in film production. We found that the typical proprietary video editing applications couldn't handle most of the footage we were pulling from pretty much any device that could record an image. At the time, I wasn't aware that Linux had a reputation as an operating system for servers and programmers. The more I did on Linux, the more I wanted to control every aspect of it. And in the end, I discovered that a computer was at its most powerful when its user could "speak" its language. Within a few years of switching to Linux, I was scripting unattended video edits, stringing together audio files, bulk editing photos, and anything else I could imagine and then invent a solution for. It didn't take long for me to understand why programmers loved Linux, but it was Linux that taught me to love programming. - -It turns out that Linux is an excellent platform for programmers, both new and experienced. It's not that you _need_ Linux to program. There are successful developers on all different kinds of platforms. However, Linux has much to offer developers. Here are a few things I've found useful. - -### Foundations of logic - -Linux is built around [automation][2]. It's very intentional that staple applications on Linux can at the very least launch from a terminal with additional options, and often they can even be used entirely from the terminal. This idea is sometimes mistaken as a primitive computing model because people mistakenly believe that writing software that operates from a terminal is just doing the bare minimum to get a working application. This is an unfortunate misunderstanding of how code works, but it's something many of us are guilty of from time to time. We think _more_ is always better, so an application containing 1,000 lines of code must be 100 times better than one with ten lines of code, right? The truth is that all things being equal, the application with greater flexibility is preferable, regardless of how that translates to lines of code. - -On Linux, a process that might take you an hour when done manually can literally be reduced to one minute with the right terminal command, and possibly less when parsed out to [GNU Parallel][3]. This phenomenon requires a shift in how you think about what a computer does. For instance, if your task is to add a cover image to 30 PDF files, you might think this is a sensible workflow: - - 1. Open a PDF in a PDF editor - 2. Open the front cover - 3. Append a PDF to the end of the cover file - 4. Save the file as a new PDF - 5. Repeat this process for each old PDF (but do not duplicate this process for each new PDF) - - - -It's mostly common sense stuff, and while it's painfully repetitive, it does get the job done. On Linux, however, you're able to work smarter than that. The thought process is similar: First, you devise the steps required for a successful result. After some research, you'd find out about the `pdftk-java` command, and you'd discover a simple solution: - - -``` -$ pdftk A=cover.pdf B=document_1.pdf \ - cat A B \ - output doc+cover_1.pdf -``` - -Once you've proven to yourself that the command works on one document, you take time to learn about looping options, and you settle on a parallel operation: - - -``` -$ find ~/docs/ -name "*.pdf" | \ - parallel pdftk A=cover.pdf B={} \ - cat A B \ - output {.}.cover.pdf -``` - -It's a slightly different way of thinking because the "code" you write processes data differently than the enforced linearity you're used to. However, getting out of your old linear way of thinking is important for writing actual code later, and it has the side benefit of empowering you to compute smarter. - -### Code connections - -No matter what platform you're programming for when you write code, you're weaving an intricate latticework of invisible connections between many different files. In all but the rarest cases, code draws from headers and relies on external libraries to become a complete program. This happens on any platform, but Linux tends to encourage you to understand this for yourself, rather than blindly trusting the platform's development kit to take care of it for you. - -Now, there's nothing wrong with trusting a development kit to resolve _library_ and _include_ paths. On the contrary, that kind of abstraction is a luxury you should enjoy. However, if you never understand what's happening, then it's a lot harder to override the process when you need to do something that a dev kit doesn't know about or to troubleshoot problems when they arise. - -This translates across platforms, too. You can develop code on Linux that you intend to run on Linux as well as other operating systems, and your understanding of how code compiles helps you hit your targets. - -Admittedly, you don't learn these lessons just by using Linux. It's entirely possible to blissfully code in a good IDE and never give a thought to what version of a library you have installed or where the development headers are located. However, Linux doesn't hide anything from you. It's easy to dig down into the system, locate the important parts, and read the code they contain. - -### Existing code - -Knowing where headers and libraries are located is useful, but having them to reference is yet another added bonus to programming on Linux. On Linux, you get to see the source code of basically anything you want (excluding applications that aren't open source but that run on Linux). The benefit here cannot be overstated. As you learn more about programming in general or about programming something new to you, you can learn a lot by referring to existing code on your Linux system. Many programmers have learned how to code by reading other people's open source code. - -On proprietary systems, you might find developer documentation with code samples in it. That's great because documentation is important, but it pales in comparison to locating the exact functionality you want to implement and then finding the source code demonstrating how it was done in an application you use every day. - -### Direct access to peripherals - -Something I often took for granted after developing code for media companies using Linux is access to peripherals. For instance, when connecting a video camera to Linux, you can pull incoming data from **/dev/video0** or similar. Everything's in **/dev**, and it's always the shortest path between two points to get there. - -That's not the case on other platforms. Connecting to systems outside of the operating system is often a maze of SDKs, restricted libraries, and sometimes NDAs. This, of course, varies depending on what you're programming for, but it's hard to beat Linux's simple and predictable interface. - -### Abstraction layers - -Conversely, Linux also provides a healthy set of abstraction layers for when direct access or manual coding ends up creating more work than you want to do. There are conveniences found in Qt and Java, and there are whole stacks like Pulse Audio, Pipewire, and gstreamer. Linux _wants_ you to be able to code, and it shows. - -### Add to this list - -There are more reasons that make coding on Linux a pleasure. Some are broad concepts and others are overly-specific details that have saved me hours of frustration. Linux is a great place to be, no matter what platform you're targeting. Whether you're just learning about programming or you're a coder looking for a new digital home, there's no better workspace for programming than Linux. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/21/2/linux-programming - -作者:[Seth Kenlon][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/seth -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/terminal_command_linux_desktop_code.jpg?itok=p5sQ6ODE (Terminal command prompt on orange background) -[2]: https://opensource.com/article/20/11/orchestration-vs-automation -[3]: https://opensource.com/article/18/5/gnu-parallel diff --git a/sources/talk/20210213 How open source provides students with real-world experience.md b/sources/talk/20210213 How open source provides students with real-world experience.md deleted file mode 100644 index ae5db3c45e..0000000000 --- a/sources/talk/20210213 How open source provides students with real-world experience.md +++ /dev/null @@ -1,112 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (How open source provides students with real-world experience) -[#]: via: (https://opensource.com/article/21/2/open-source-student) -[#]: author: (Laura Novich https://opensource.com/users/laura-novich) - -How open source provides students with real-world experience -====== -Contributing to open source gives students the real-world experience -required to land a good job. -![Woman sitting in front of her computer][1] - -In the movie _The Secret of My Success_, Brantley Foster (played by Michael J. Fox) expresses the exact thought that goes through every new graduate's mind: "How can I get any experience until I get a job that _gives_ me experience?" - -The hardest thing to do when starting a new career is to get experience. Often this creates a paradox. How do you get work with no experience, and how do you get experience with no work? - -In the open source software world, this conundrum is a bit less daunting because your experience is what you make of it. By working with open source projects sponsored by open source software (OSS) companies, you gain experience working on projects you like for companies that make you feel important, and then you use that experience to help find employment. - -Most companies would never allow newbies to touch their intellectual property and collateral without signing a non-disclosure agreement (NDA) or going through some kind of training or security check. However, when your source code is open and anyone in the world can contribute to it (in addition to copy it and use it), this is no longer an issue. In fact, open source companies embrace their contributors and create communities where students can easily get their feet wet and find their way in coding, testing, and documentation. Most open source companies depend on the contributions of others to get work done. This means the contributors work for free simply because they want to. For students, it translates into an unpaid internship and getting some real-world experience. - -At [Our Best Words][2], we decided to run a pilot project to see if our students could work in an open source documentation project and find the experience beneficial to jumpstarting their new careers in technical communication. - -![GitLab screenshot][3] - -(Laura Novich, [CC BY-SA 4.0][4]) - -I was the initiator and point of contact for the project, and I approached several companies. The company that gave us the most positive response was [GitLab][5]. GitLab is a company that creates software for Git repository management, issue tracking, and continuous integration/continuous delivery (CI/CD) pipeline management. Its software is used by hundreds of thousands of organizations worldwide, and in 2019, it announced it achieved $100 million in annual recurring revenue. - -GitLab's [Mike Jang][6] connected me with [Marcin Sedlak-Jakubowski][7] and [Marcia Dias Ramos][8], who are located closer to OBW's offices in Israel. We met to hammer out the details, and everyone had their tasks to launch the pilot in mid-September. Mike, Marcia, and Marcin hand-picked 19 issues for the students to solve. Each issue was tagged _Tich-Tov-only_ for OBW students, and any contributor who was not an OBW student was not allowed to work on the issue. - -To prepare the students, I held several demonstrations with GitLab. The students had never used the software before, and some were quite nervous. As the backbone of GitLab is Git, a software tool the students were already familiar with, it wasn't too hard to learn. Following the demonstrations, I sent the students a link to a Google Drive folder with tutorials, a FAQ, and other valuable resources. - -The issues the students were assigned came from GitLab's documentation. The documentation is written in Markdown and is checked with a linter (a static code analysis tool) called Vale. The students' assignments were to fix issues that the Vale linter found. The changes included fixing spelling, grammar, usage, and voice. In some cases, entire pages had to be rewritten. - -As I wanted this project to run smoothly and successfully, we decided to limit the pilot to seven of our 14 students. This allowed me to manage the project more closely and to make sure each student had only two to three issues to handle during the two-month time period of the project. - -![GitLab repo][9] - -(Laura Novich, [CC BY-SA 4.0][4]) - -The OBW students who were part of this project (with links to their GitLab profiles) were: - - * [Aaron Gorsuch][10] - * [Anna Lester][11] - * [Avi Chazen][12] - * [Ela Greenberg][13] - * [Rachel Gottesman][14] - * [Stefanie Saffern][15] - * [Talia Novich][16] - - - -We worked mostly during September and October and wrapped up the project in November. Every issue the students had was put on a Kanban board. We had regular standup meetings, where we discussed what we were doing and any issues causing difficulty. There were many teachable moments where I would help with repository issues, troubleshooting merge requests, and helping the students understand technical writing theories in practice. - -![Kanban board][17] - -(Laura Novich, [CC BY-SA 4.0][4]) - -November came faster than we expected and looking back, the project ended way too quickly. About midway in, I collected feedback from Marcin, Marcia, and Mike, and they told me their experience was positive. They told us that once we were done, we could take on more issues than the original allotment assigned to the group, if we wanted. - -One student, Rachel Gottesman, did just that. She completed 33 merge requests and helped rewrite pages of GitLab's documentation. She was so instrumental for the 13.7 release that [GitLab announced][18] that Rachel is the MVP for the release! We at OBW couldn't be more thrilled! _Congratulations, Rachel!_ - -![Rachel Gottesman's GitLab MVP award][19] - -(Laura Novich, [CC BY-SA 4.0][4]) - -Rachel's name appears [on GitLab's MVP page][20]. - -We are gearing up for our new year and a new course. We plan to run this project again as part of our [Software Documentation for Technical Communication Professionals][21] course. - -* * * - -_This article originally appeared on [Our Best Words Blog][22] and is republished with permission._ - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/21/2/open-source-student - -作者:[Laura Novich][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/laura-novich -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/OSDC_women_computing_2.png?itok=JPlR5aCA (Woman sitting in front of her computer) -[2]: https://ourbestwords.com/ -[3]: https://opensource.com/sites/default/files/uploads/gitlab.png (GitLab screenshot) -[4]: https://creativecommons.org/licenses/by-sa/4.0/ -[5]: https://about.gitlab.com/ -[6]: https://www.linkedin.com/in/mijang/ -[7]: https://www.linkedin.com/in/marcin-sedlak-jakubowski-91143a124/ -[8]: https://www.linkedin.com/in/marciadiasramos/ -[9]: https://opensource.com/sites/default/files/uploads/gitlab_obw_repo.png (GitLab repo) -[10]: https://gitlab.com/aarongor -[11]: https://gitlab.com/Anna-Lester -[12]: https://gitlab.com/avichazen -[13]: https://gitlab.com/elagreenberg -[14]: https://gitlab.com/gottesman.rachelg -[15]: https://gitlab.com/stefaniesaffern -[16]: https://gitlab.com/TaliaNovich -[17]: https://opensource.com/sites/default/files/uploads/kanban.png (Kanban board) -[18]: https://release-13-7.about.gitlab-review.app/releases/2020/12/22/gitlab-13-7-released/ -[19]: https://opensource.com/sites/default/files/uploads/rachelgottesmanmvp.png (Rachel Gottesman's GitLab MVP award) -[20]: https://about.gitlab.com/community/mvp/ -[21]: https://ourbestwords.com/training-courses/skills-courses/ -[22]: https://ourbestwords.com/topic/blog/ diff --git a/sources/talk/20210214 Give something from the heart to the public domain.md b/sources/talk/20210214 Give something from the heart to the public domain.md deleted file mode 100644 index 07ea72f223..0000000000 --- a/sources/talk/20210214 Give something from the heart to the public domain.md +++ /dev/null @@ -1,70 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Give something from the heart to the public domain) -[#]: via: (https://opensource.com/article/21/2/public-domain) -[#]: author: (Jen Wike Huger https://opensource.com/users/jen-wike) - -Give something from the heart to the public domain -====== -The team at Creative Commons wants you to share a creation to the Public -Domain as a show of support for openly sharing content. -![Red Lego Heart][1] - -Did you know that most of the articles published on Opensource.com are licensed under Creative Commons [BY-SA 4.0][2]? - -One of the biggest reasons our editorial team decided on this license over 10 years ago is because we support the idea that the best content is _shared_ content. As we strive to be open, our goal is for any many people as possible to have access to the information we're putting out there to support our mission to help others learn and grow and to explore new open source worlds. - -So, what does this have to do with Valentine's Day (or Friend's Day in Finland)? - -The team at Creative Commons wants you to [share a creation][3] to the [Public Domain][4] as a show of support for openly sharing content. It could be an image, song, artwork, poem, GIF, research paper... the list goes on! But "why?" I hear you asking. What's so special about the Public Domain? Well, did you hear about Nathan Evans's rendition of the sea shanty song "The Wellerman" that went viral? Here's what Creative Commons CEO Catherine Stihler [had to say about it][5]: - -"It is important to note that this flourishing creative scene is only possible because sea shanties are in the public domain—not under restrictive copyright rules. Therefore, they can be played, reused, dueted, remixed, and transformed. This, combined with the internet, means a postal worker in Airdrie can reach a global audience within seconds. Thanks to emerging technologies and social platforms, the public domain can both enable creativity and benefit from it with the invention of new works that are also free of copyright restrictions. (The hope is that these new works are put back into the public domain!) This expressiveness in new works and collaborations is bringing joy and uplifting our spirits as we continue to face daunting challenges." - -So, I'll add a twist on their Valentine's Day challenge: If you want to share something you've created but aren't sure about going totally Public Domain, check out the other [options for licensing][6] from CC BY to CC0. And to lower the bar even more to entice you to join in: You don't have to create something new, right now. Search through your archives for something you created last year or five years ago, and give it new life today with a new license. - - 1. Find the thing you want to share - 2. If it's not already, prepare it in digital format - 3. [Select the place][6] you want to share it to, like the Internet Archive, Flickr, etc. - 4. Upload and append attribution including "Public Domain" or [other Creative Commons open license][7] - - - -I'm a plant person, so [here's mine][8]! - -![Neon-colored herbal bundles][9] - -“[Neon-colored herbal bundles][8]” by Jen Wike Huger is licensed under Public Domain. - -If you aren't in the creating mood but want to find some great CC-licensed content, use the [search.creativecommons.org][10] tool. Then, take a peek at the best way to [give credit back][11] when you use what you find. - -Virtual high-fives and sweet treats from our team to you and yours! - -You don't need to be a master coder to contribute to open source. Jade Wang shares 8 ways you can... - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/21/2/public-domain - -作者:[Jen Wike Huger][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/jen-wike -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/heart_lego_ccby20.jpg?itok=VRpHf4iU (Red Lego Heart) -[2]: https://creativecommons.org/licenses/by-sa/4.0/ -[3]: https://creativecommons.org/2021/02/10/open-sharing-is-caring/ -[4]: https://creativecommons.org/share-your-work/public-domain/ -[5]: https://creativecommons.org/2021/02/03/the-postal-worker-a-sea-shanty-and-the-public-domain/ -[6]: https://creativecommons.org/share-your-work/ -[7]: https://creativecommons.org/choose/ -[8]: https://archive.org/details/neon_inverted_herbal_bundle -[9]: https://opensource.com/sites/default/files/uploads/neon_inverted_herbal_bundle.jpg (Neon-colored herbal bundles) -[10]: https://search.creativecommons.org/ -[11]: https://creativecommons.org/use-remix/attribution/ diff --git a/sources/talk/20210216 How Ansible got started and grew.md b/sources/talk/20210216 How Ansible got started and grew.md deleted file mode 100644 index baa71d6ea1..0000000000 --- a/sources/talk/20210216 How Ansible got started and grew.md +++ /dev/null @@ -1,86 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (How Ansible got started and grew) -[#]: via: (https://opensource.com/article/21/2/ansible-origin-story) -[#]: author: (Ben Rometsch https://opensource.com/users/flagsmith) - -How Ansible got started and grew -====== -Ansible's founder Michael DeHaan shares how his background led him to -develop the IT automation software. -![gears and lightbulb to represent innovation][1] - -Recently, Flagsmith founder Ben Rometsch [spoke to Michael DeHaan][2], founder of open source IT automation software Ansible (now part of IBM/Red Hat), on [The Craft of Open Source podcast][3] about how he developed Ansible and what he's been doing since. - -> "If people aren't successful trying (your app/tool) out in about 30 minutes, they're going to move on. You have to make somebody successful within their lunch hour. I spent a lot of time thinking about the documentation." -> —Michael DeHaan - -His remarks were fascinating and enlightening, especially for anyone interested in open source software as a developer, creator, or community member. Read on for a summary of the conversation. - -### How Michael started in open source - -When Michael joined Red Hat's emerging technologies team in 2005, it was the beginning of his journey with open source projects. The team gave him carte blanche to work on any projects he wanted, as long as they helped customers. - -At the time, Xen and KVM were becoming available, and the team wanted to create a good solution to automate a PXE bare-metal infrastructure. Michael created his first open source project, [Cobbler][4], to automate those installs, and it became fairly widely used. - -Func was Michael's next open source project. It came from filling in the gaps between software that enabled bare-metal provisioning and configuration management tools. Func became fairly well deployed, with Fedora using it in some of its infrastructure. Some of Func's concepts and ideas later influenced Ansible. - -### The birth of Ansible - -Ansible came after Michael spent a short spell working for Puppet. Afterward, he worked for another company that was trying to create an integration, but the job wasn't a good fit, and he wanted to return to working on a project in the open source community. - -Frustrated that it still took several days (or longer) to get a setup working due to [DNS][5] and [NTP][6] problems, Michael decided to create an open source solution to automate installations. The idea was to build something SSH- and push-based, without a load of management agents. - -[Ansible][7] was the result of this design goal. It provided an easy, quick solution, rather than spending hours or days using tools like Chef and Puppet. At the time, companies were employing full-time teams of people to manage cloud installations and configurations. Ansible provided a solution that one person could employ in less than one day. - -### Ansible: The right tool for the right time - -Part of Ansible's success was due to timing, Michael says. There was a demand for greater cloud integration and a quick, convenient way to upload content and install apps on cloud systems. - -It would be difficult for a full-time developer to have the time to create something like Ansible in today's world, as things are much more highly scheduled. He says people expect a complete product, not a work in progress with a supportive user community that has the time to experiment and play with a new coding language. Times have changed. - -Also, Ansible was released in 2012, when the demand for [automation was growing][8] more rapidly than now. While some companies have mastered the art of automation and are focusing more on Kubernetes and other things, others continue to discover it. Most companies do their own programming now, with teams of developers creating fully polished solutions. These days, people are using React and Kubernetes, which build on dependencies, rather than starting from scratch on an open source project. - -With Ansible, most of the open source work was in the libraries and the packaging. Michael remembers that they were learning as they went along, initially unsure of how to run a systems-management project in a way that gets lots of feedback from people and can evolve. Puppet and Chef provided a template for how to accomplish this, mostly through trial and error. Michael set up a large number of IRC channel conversations, which allowed direct communication with various use cases. - -Ansible's documentation was key for developers taking it to the next level. It was simple, to the point, used short and persuasive sentences, and included free trial offers. The documentation made it clear to users that Ansible could be run on their own infrastructure without security concerns. - -### Marketing and promotion - -The buzz around Ansible was generated mainly through blog posts, articles, tutorials, and opinions shared on social media. Occasionally, it would break through onto the pages of Hacker News, or a Reddit thread would become popular.  - -Michael focused on creating shareworthy content that people could link to. He also made sure that he read every comment and tweet to gain as much feedback as possible to take the project in the right direction. - -As momentum grew, Michael hired some employees to help him scale up, but he retained creative control and overall project management. When Michael left the Ansible team in 2015, there were around 400 modules, which made management pretty tricky. - -### Life after Ansible - -Michael now works mainly on Django and Python software development, with some apps and projects on the side, including the [WARP][9] music sequencer. - -To discover more about Ansible and Michael's views on today's open source landscape, burnout, GitHub, Google Reader, and much more, [check out the full podcast][2]. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/21/2/ansible-origin-story - -作者:[Ben Rometsch][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/flagsmith -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/innovation_lightbulb_gears_devops_ansible.png?itok=TSbmp3_M (gears and lightbulb to represent innovation) -[2]: https://www.flagsmith.com/podcast/03-ansible -[3]: https://www.flagsmith.com/podcast -[4]: https://en.wikipedia.org/wiki/Cobbler_(software) -[5]: https://en.wikipedia.org/wiki/Domain_Name_System -[6]: https://en.wikipedia.org/wiki/Network_Time_Protocol -[7]: https://www.ansible.com/ -[8]: https://www.redhat.com/en/blog/new-report-finds-automation-paves-way-business-and-technical-benefits-alike -[9]: https://warpseq.com/ diff --git a/sources/talk/20210219 Why every job in the tech industry is technical.md b/sources/talk/20210219 Why every job in the tech industry is technical.md deleted file mode 100644 index 5ff7f47a7c..0000000000 --- a/sources/talk/20210219 Why every job in the tech industry is technical.md +++ /dev/null @@ -1,69 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Why every job in the tech industry is technical) -[#]: via: (https://opensource.com/article/21/2/every-job-technical) -[#]: author: (Lauren Pritchett https://opensource.com/users/lauren-pritchett) - -Why every job in the tech industry is technical -====== -Let's break free from the technical vs. non-technical labels in the tech -industry in order to be successful. -![Puzzle pieces coming together to form a computer screen][1] - -Several years ago, I applied for a marketing job at a tech company. I got called back for the phone screening and had a delightful conversation with the recruiter. The next day, I got an email from the recruiter saying that I was not “technical” enough to move forward to the next round of interviews. I was shocked.  - -I had always been the one my colleagues would call on for technical help and feedback. Understanding and using technology came naturally to me. By that point in my career, I had become even more proficient and technical within my specialty. So how could the recruiter think that I am not “technical”?  - -I wrote a letter to the recruiter explaining why the hiring manager should not dismiss me just yet. Sure, I did not have experience in the tech industry (I had always worked for companies in consumer goods and retail), but isn’t every company a software company these days? I also wanted to alleviate any concerns about my lack of coding abilities. Between managing website migrations, blog redesigns, product merchandising, and fixing that annoying indent on a particularly finicky landing page, I felt that I had that “in the weeds” troubleshooting practice similar to that of a programmer.  - -The letter convinced the hiring manager to bring me in for an interview. I was so happy that they would get the chance to meet me in person.  - -### How to break free from harmful labels - -I recently read Correspondent Dawn Parzych’s series about freeing us from the labels of "technical" and "non-technical" roles in the tech industry. I realized that I had not been alone in feeling undervalued for a non-traditional set of technical skills.  - -In her [first article][2], she tells us why these labels are harmful and she gives three tips for moving away from them: - - * Find alternative words - * Embrace a growth mindset - * Recognize everyone's contributions - - - -Next, Dawn provides [examples of non-engineering jobs][3], including technical writer, product manager, data analyst, and developer relations. There are plenty of other roles that fit this category, like project manager, community manager, product marketer, editor (me!), recruiter, and more. Remember, if you work in the tech industry, you are technical. - -Dawn closes out her series with [four key pieces of advice][4] from industry leaders for those who have been mislabeled as "non-technical":  - - * Be yourself - * Know your worth - * Find where you can add value and help people - * Diversity of thought leads to success - - - -### Moving forward - -Ultimately, that marketing job did not work out, and it is for the best because I may not be where I am today without that experience. I do not regret making a case for a “non-technical” person to get a fair shot at a “technical” job, but it took me a while to gain my confidence back. I hope that others will take the advice and guidance from Dawn’s series to see that they _are_ technical and have valuable skills needed in this industry.  - -There are lots of non-code ways to contribute to open source: Here are three alternatives. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/21/2/every-job-technical - -作者:[Lauren Pritchett][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/lauren-pritchett -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/puzzle_computer_solve_fix_tool.png?itok=U0pH1uwj (Puzzle pieces coming together to form a computer screen) -[2]: https://opensource.com/article/21/2/what-technical -[3]: https://opensource.com/article/21/2/non-engineering-jobs-tech -[4]: https://opensource.com/article/21/2/advice-non-technical diff --git a/sources/talk/20210223 What makes the Linux community special.md b/sources/talk/20210223 What makes the Linux community special.md deleted file mode 100644 index 6b860c459c..0000000000 --- a/sources/talk/20210223 What makes the Linux community special.md +++ /dev/null @@ -1,57 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (What makes the Linux community special?) -[#]: via: (https://opensource.com/article/21/2/linux-community) -[#]: author: (Seth Kenlon https://opensource.com/users/seth) - -What makes the Linux community special? -====== -It is the human aspect that makes each open source community unique. -![][1] - -In 2021, there are more reasons why people love Linux than ever before. In this series, I'll share 21 different reasons to use Linux. The community is a cornerstone reason to use Linux. - -Many a Linux user has said that the key feature of Linux is its community. That might seem strange to a new user because "community" is a pretty popular term these days. There are actual jobs for building and [managing communities][2]. With communities seemingly a dime a dozen, what makes the Linux community unique? - -### Attributes don't make a community - -The fact is, nothing's particularly unique about the Linux having a community. It's in our nature as humans to find common threads with one another. There are Android People, and there are iPhone People, Windows People and Mac People, Software People and Illegally-downloaded-software People, and so on. You find support forums for devices and software and people who use creative apps and people who use business apps and people who use financial apps. We tag people with attributes, and then we form groups accordingly. - -When you download and try Linux, you're inherently added to the group of people who have downloaded and tried Linux. - -The question is, what communities form within this big group of people? - -### Humans make community - -A community is more than just a group of people. Communities share knowledge, experience, and most importantly, they share a connection. While it's easy to identify a similarity between two people who happen to use the same operating system or application, it's not as easy to find a connection. Sometimes, something special emerges from an interaction. Maybe you're struggling to understand how some software works, or you can't understand why an action on Linux differs from what it was like on your former OS, or you're not sure which desktop you want to install or which text editor to use. When you and someone else work through a problem and succeed, there's a moment of mutual appreciation and understanding. - -Similarly, when you're using software that a community member has uploaded (like Linux itself), you're entering into someone else's world. You may not feel like it's a big deal to download and use an application, but if nobody downloaded and used that application, whatever it might be, then it probably wouldn't last long. These small, almost negligible actions that seem to "just happen" online every day are exactly why we call a group of people a _community_ and not just a herd of humans. - -### Finding the right community - -Nobody fits in with every community within the larger Linux community. Like any social group, each community has its own expectations and culture. You may have a compulsion, as a human, to join a community, but you also have the right as a human to be selective about which one you adopt as your own. - -If a community isn't empowering and encouraging you to achieve your own goals, technological or otherwise, then there's nothing wrong with leaving it behind to find another. Thanks to the still growing diversity of Linux users, there's plenty of space for everyone, and new communities are forming all the time. - -### Communities build software - -No matter what you do in the community, there's participation happening. The fact that people are getting use out of what their community builds is exactly what drives the community to create more. It's a human _perpetual motion_ machine, and the energy it generates powers some of the best technology available. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/21/2/linux-community - -作者:[Seth Kenlon][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/seth -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/penguin-linux-watercolor-family.png?itok=Ik3tmGc6 -[2]: https://opensource.com/article/20/9/open-source-community-managers diff --git a/sources/talk/20210224 Why Linux is critical to edge computing.md b/sources/talk/20210224 Why Linux is critical to edge computing.md deleted file mode 100644 index 40dd0782a0..0000000000 --- a/sources/talk/20210224 Why Linux is critical to edge computing.md +++ /dev/null @@ -1,58 +0,0 @@ -[#]: subject: (Why Linux is critical to edge computing) -[#]: via: (https://opensource.com/article/21/2/linux-edge-computing) -[#]: author: (Seth Kenlon https://opensource.com/users/seth) -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) - -Why Linux is critical to edge computing -====== -Get the edge on Linux so you can get Linux on the edge. -![People work on a computer server with devices][1] - -In 2021, there are more reasons why people love Linux than ever before. In this series, I'll share 21 different reasons to use Linux. Linux is the ideal operating system for experimenting with edge computing.  - -[Edge computing][2] is a model of infrastructure design that places many "compute nodes" (a fancy word for a _server_) geographically closer to people who use them most frequently. It can be part of the open hybrid-cloud model, in which a centralized data center exists to do all the heavy lifting but is bolstered by smaller regional servers to perform high frequency—but usually less demanding—tasks. Because Linux is so important to cloud computing, it's an ideal technology to learn if you intend to manage or maintain modern IT systems. - -Historically, a computer was a room-sized device hidden away in the bowels of a university or corporate head office. Client terminals in labs would connect to the computer and make requests for processing. It was a centralized system with access points scattered around the premises. As modern networked computing has evolved, this model has been mirrored unexpectedly. There are centralized data centers to provide serious processing power, with client computers scattered around so that users can connect. However, the centralized model makes less and less sense as demands for processing power and speed are ramping up, so the data centers are being augmented with distributed servers placed on the "edge" of the network, closer to the users who need them. - -The "edge" of a network is partly an imaginary place because network boundaries don't exactly map to physical space. However, servers can be strategically placed within the topography of a network to reduce the latency of connecting with them and serve as a buffer to help mitigate overloading a data center. - -### Diversity on the edge - -This strategy is known as **edge computing**, and it's a vital part of a highly available cloud infrastructure. And as much as Linux thrives in data centers, it's even more welcome out on the edge, where servers and devices run locally relevant software on every variety of architecture. This is the space of the Internet of Things (IoT) and embedded systems. If you know Linux, you're probably ready to maintain most of these devices. - -### Edge detection - -When you hear about edge computing, you're hearing about a model of network and infrastructure design. There isn't just one edge, and that's the advantage. For it to be helpful, there need to be different edges for different industries, locations, and requirements. The edge of a public access network should be different than the edge of a major finance company, which should be different than your home automation system. - -### Containers on the edge - -While it's not exclusive to Linux, [container technology][3] is an important part of cloud and edge computing. Getting to know Linux and [Linux containers][4] helps you learn to install, modify, and maintain "serverless" applications. As processing demands increase, it's more important to understand containers, [Kubernetes][5] and [KubeEdge][6], pods, and other tools that are key to load balancing and reliability. - -### Get the Linux edge - -The cloud is largely a Linux platform. While there are great layers of abstraction, such as Kubernetes and OpenShift, when you need to understand the underlying technology, you benefit from a healthy dose of Linux knowledge. The best way to learn it is to use it, and [Linux is remarkably easy to try][7]. Get the edge on Linux so you can get Linux on the edge. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/21/2/linux-edge-computing - -作者:[Seth Kenlon][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/seth -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/rh_003499_01_linux11x_cc.png?itok=XMDOouJR (People work on a computer server with devices) -[2]: https://www.redhat.com/en/topics/edge-computing -[3]: https://opensource.com/resources/what-are-linux-containers -[4]: https://opensource.com/article/18/11/behind-scenes-linux-containers -[5]: https://enterprisersproject.com/article/2017/10/how-explain-kubernetes-plain-english -[6]: https://opensource.com/article/21/1/kubeedge -[7]: https://opensource.com/article/21/2/try-linux diff --git a/sources/talk/20210226 How I became a Kubernetes maintainer in 4 hours a week.md b/sources/talk/20210226 How I became a Kubernetes maintainer in 4 hours a week.md deleted file mode 100644 index 5367968d8c..0000000000 --- a/sources/talk/20210226 How I became a Kubernetes maintainer in 4 hours a week.md +++ /dev/null @@ -1,104 +0,0 @@ -[#]: subject: (How I became a Kubernetes maintainer in 4 hours a week) -[#]: via: (https://opensource.com/article/21/2/kubernetes-maintainer) -[#]: author: (Matthew Broberg https://opensource.com/users/mbbroberg) -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) - -How I became a Kubernetes maintainer in 4 hours a week -====== -If you have a small amount of time, you can make a big difference in -open source. -![Person drinking a hot drink at the computer][1] - -_"I want to contribute to Kubernetes, but I don't know where to start."_ - -I have heard (and even said) versions of this sentiment many times since [Kubernetes][2] started gaining influence. So, over the last year, I've spent time contributing to the project, and I've found it worth every minute. - -I've discovered that Kubernetes is a project with the right scale for anyone to make an impact in whatever time they have available in their schedule. For me, that was just four hours a week. No more, no less. - -After six months at four hours a week, I found myself the leader of a subgroup that's making a significant difference around non-code contributions to the project. - -I'll share some of what I've learned about contributing to Kubernetes. I hope it helps you find the focus and time to join in. - -### Where to start - -The Kubernetes community personifies the principle of showing up. I "lurked" on the community channels for a while but did not spend much time talking in them. As soon as I started to join in and (eventually) speak up, I experienced an immediate change in my sense of community. - -Join in where, you ask? Here are the key channels to keep an eye on: ** ** - - * The [Kubernetes developer mailing list][3] (k/dev for short) is the official channel for news from all Kubernetes contributors. - * The [Kubernetes Slack channel][4], where over 100,000 registered members discuss the project in hundreds of channels. - * Weekly [special interest group][5] (SIG) meetings where work gets done collaboratively via videoconference. - * The [Kubernetes Community GitHub][6] repository, which is the central repository for community activity in the project. - - - -The channels combine synchronous communication (real-time, quick feedback) with asynchronous (eventual, thoughtful feedback). More than any other project I have contributed to, Kubernetes has a subtle bias toward synchronous communication. Being in a meeting or part of a Slack discussion is a valued way to be part of the action. The more you are active in real time, the more influence you can have in the long run. Or so it seems. - -Despite the value of sync, don't discount the asynchronous work done in Kubernetes land. All significant activity, and a backlog of thoughtful ideas that need someone to work on, are tracked through GitHub issues. The mailing list is also increasingly active and a great place to show up to connect. - -Regardless of the channel, the conclusion is the same: You have to show up. - -### How I commit the time - -Many people work on Kubernetes full time. I am not one of them, and if you are reading this article, I assume you aren't one of them, either. So, when you have a 40-hour-a-week job, how do you carve out four precious hours in your day to contribute to an open source project? - -In my case, it began by understanding what my business values. I have the good fortune to work for an organization that defines itself through open source contributions. That's a good start. My organization also values open source experience in general and, more specifically, Kubernetes knowledge. So, as someone whose value to the organization can be measured in understanding Kubernetes, it's fair to assume I need to spend time with the project. - -With the business proposition clear to me, my next step was to start. I didn't begin with an email request or a proposal to do this as part of my job. It's _my_ job to manage my skill development, and I decided to maximize that through (time-limited) open source contributions. At the equivalent of a half-day of work per week, I'm trusted to budget my time. The caveat is I have to stop contributing if it (a) begins to impede my day job or (b) does not result in any meaningful value to my day job. - -After about a month of contributing, I shared some of my new Kubernetes knowledge (which I acquired by showing up regularly) with my team, my manager, and my manager's manager. They were all excited about what I was sharing. So, I proposed the idea of continuing, and they overwhelmingly agreed it was a good idea. - -Eight months later, I'm still contributing, and it's still adding value. - -### What do four hours of contribution look like? - -Here is my checklist for a sustainable contribution strategy in the Kubernetes community: - - * Join your SIG meeting once a week (1 hour) - * Skim the k-dev mailing list twice a week for 15 minutes (30 min.) - * Socialize on Slack or Twitter once a week (30 min.) - * Most weeks, block two more one-hour slots to complete your action items (1 to 2 hours). - * Once a month, take one of those hours and join the monthly community call (0-1 hour). - - - -My first three months were all about getting oriented, and they paid off. At the start, plan to spend a good bit of time soaking up the context. If no SIG immediately grabs your attention, start with [Contributor Experience][7]. This group exists to help guide and support all contributors. - -Sticking to this time commitment, in six months, I went from sitting in on the Contributor Experience SIG to leading its Upstream Marketing subgroup. In my case, the timing was right, and the role was appropriate to my skills, but it goes to show that sustained contribution can quickly pay off. - -### Contributing across time zones - -The synchronous activities—meetings and Slack messages—do have a bias toward the US Pacific Time Zone. There is no sugar-coating that part. Every Friday at our subgroup call, a handful of regulars sign in after 8pm or 10pm in Europe and Asia. It's not ideal timing for some. - -But while these synchronous calls are helpful for getting to know the group, contributors can quickly switch to asynchronous options and still significantly impact the project. GitHub, email, and even async Slack are 90% of where work gets done. For some SIGs, it's closer to 100%. Be upfront with other SIG members, and I am confident they will help you get meaningful work done asynchronously. - -### Bring your unique contribution - -Here's my big takeaway from this: Large projects thrive through sustained contribution. Making small contributions over an extended period is more valuable than a big fly-by-night pull request. - -I go through these painstaking details of how I manage my time to highlight an opportunity I believe many of us may not realize we have. Often, we have more say than we think about how we spend some of our work weeks. And I hope you can carve off some of it for open source. You will offer a unique experience that can make a difference. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/21/2/kubernetes-maintainer - -作者:[Matthew Broberg][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/mbbroberg -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/coffee_tea_laptop_computer_work_desk.png?itok=D5yMx_Dr (Person drinking a hot drink at the computer) -[2]: https://opensource.com/resources/what-is-kubernetes -[3]: https://groups.google.com/g/kubernetes-dev -[4]: https://slack.k8s.io/ -[5]: https://github.com/kubernetes/community/blob/master/sig-list.md -[6]: https://github.com/kubernetes/community -[7]: https://github.com/kubernetes/community/blob/master/sig-contributor-experience/README.md diff --git a/sources/talk/20210311 Test cases and open source license enforcement.md b/sources/talk/20210311 Test cases and open source license enforcement.md deleted file mode 100644 index df17ad0819..0000000000 --- a/sources/talk/20210311 Test cases and open source license enforcement.md +++ /dev/null @@ -1,63 +0,0 @@ -[#]: subject: (Test cases and open source license enforcement) -[#]: via: (https://opensource.com/article/21/3/test-cases-open-source-licenses) -[#]: author: (Richard Fontana https://opensource.com/users/fontana) -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) - -Test cases and open source license enforcement -====== -If you're trying to enforce open source licenses, test case litigation -is not the right way to do it. -![A gavel.][1] - -A test case is a lawsuit brought primarily to achieve a policy outcome by securing a judicial ruling that reverses settled law or clarifies some disputed legal question. Bringing a test case typically involves carefully planning out where, when, and whom to sue and which legal arguments to advance in order to maximize the chances of winning the desired result. In the United States, we often see test case strategies used by public interest organizations to effect legal change that cannot practically be attained through other governmental means. - -But a test case strategy can be used by either side of a policy dispute. Even if a test case is successful, the real policy goal may continue to be elusive, given the limitations of case-specific court judgments, which may be met with administrative obstruction or legislative nullification. Test case litigation can also fail, sometimes disastrously—in the worst case, from the test litigant's perspective, the court might issue a ruling that is the direct opposite of what was sought, as happened in [_Plessy v. Ferguson_][2]. - -It may be hard to imagine a test case centered around interpretation of a software license. While licenses are necessarily based on underlying legal rules, typical software licenses are private transactions with terms that are negotiated by the parties or are form agreements unique to the licensor. Normally, a dispute over interpretation of some term in a software license would not be expected to implicate the sort of broadly applicable policy issues that are the usual focus of test case litigation. - -But open source is quite different in this respect. Most open source software is governed by a small set of de facto standard licenses, used without modification or customization across a wide range of projects. Relatedly, open source licenses have an importance to project communities that extends beyond mere licensing terms. They are "[constitutions of communities][3]," an expression of the collaborative and ethical norms of those communities. For these reasons, [open source licenses function as shared resources][4]. This characteristic makes a license-enforcement test case conceivable. - -Whether there actually has ever been an open source license test case is unclear. Litigation over open source licenses has been quite uncommon (though it may be [increasing][5]). Most open source license compliance matters are resolved through voluntary efforts by the licensee, or through community discussion or amicable negotiation with licensors, without resort to the courts. Open source license-enforcement litigation has mostly involved the GPL or another copyleft license in the GNU license family. The fairly small number of litigated GPL enforcement cases brought by community-oriented organizations—Harald Welte's [GPL-violations.org][6] cases, the [Free Software Foundation's suit against Cisco][7], the [BusyBox cases][8]—largely involved factually straightforward "no source or offer" violations. The [copyright profiteering lawsuits][9] brought by Patrick McHardy are clearly not calculated to lead to judicial rulings on questions of GPL interpretation. - -One notable GPL enforcement suit that arguably has some of the characteristics of a test case is Christoph Hellwig's [now-concluded case against VMware in Germany][10], which was funded by the Software Freedom Conservancy. The Hellwig case was apparently the first GPL enforcement lawsuit to raise as a central issue the scope of derivative works under GPLv2, a core copyleft and GPL interpretation policy issue and a policy topic that has been debated in technical and legal communities for decades. Hellwig and Conservancy may have hoped that a victory on the merits would have a far-reaching regulatory impact on activities long-criticized by many GPL supporters, particularly the practice of distributing proprietary Linux kernel modules using GPL-licensed "shim" layers. Then again, Conservancy itself was careful to downplay the notion that the Hellwig case was intended as "[the great test case of combined/derivative works.][11]" And the facts in the Hellwig case, involving a proprietary VMware kernel and GPL-licensed kernel modules, were fairly unusual in comparison to typical GPL-compliance scenarios involving Linux. - -Some developers and lawyers may be predisposed to view open source test cases positively. But this ignores the downsides of test case litigation in the open source context, which are a direct consequence of open source licenses being shared resources. Litigation, whether based on test cases or otherwise, is a poor means of pursuing open source license compliance. You might assume that if open source licenses are shared resources, litigation resulting in judicial rulings would be beneficial by providing increased legal certainty over the limited set of licenses in wide use. But this rests on an unrealistically rosy view of litigation and its impact. Given that open source licenses are, for the most part, a small set of widely reused license texts, actions taken by a few individuals can adversely affect an entire community sharing the same license. - -A court decision by a judge in a dispute between two parties arising out of a unique set of facts is one means by which that impact can occur. The judge, in all likelihood, will not be well informed about open source or technology in general. The judge's rulings will be shaped by the arguments of lawyers for the parties who have incentives to advance legal arguments that may be in conflict with the values and norms of communities relying on the license at issue. The litigants themselves, including the litigant seeking to enforce the license, may not share those values and norms. The capacity of the court to look beyond the arguments presented by the litigants is very limited, and authentic representatives of the project communities using the license will have no meaningful opportunity to give their perspective. - -If, as is therefore likely, license-enforcement litigation produces a bad decision with a large community impact, the license-using community may then be stuck with that decision with few good options to remedy the situation. In many cases, there will be no easy path for a project to migrate to a different license, including a new version of the litigated license that attempts to correct against the court decision. There may be no license steward, or the license may not facilitate downstream upgradeability. Even if there is a license steward, there is generally strong social pressure in free and open source software (FOSS) to avoid license revision. - -Test case litigation would not be immune to these kinds of problems; their drawbacks are amplified in the open source setting. For one thing, a test case might be brought by supporters of a license interpretation that is disfavored in the relevant license-using community—let's call this a "bad" test case litigant. Even if we suppose that the test case litigant's policy objectives reflect a real consensus in the license-using community—a "good" test case litigant—the test case strategy could backfire. The case might result in a ruling that is the opposite of what the test case litigant sought. Or the test case litigant might win on the facts, but in the process, the court might issue one or more rulings framed differently from what the test case litigant hoped for, perhaps having unexpected negative consequences for license interpretation or imposing undesirable new burdens on license compliance. The court might also dispose of the case in some procedural manner that could have a negative impact on the license-using community. - -A more fundamental problem is that we really cannot know whether a given test case litigant is "good" or "bad" because of the complex and diverse nature of views on license interpretation across open source project communities. For example, an organization that is generally trusted in the community may be tempted to use test case litigation to promote highly restrictive or literalist interpretations of a license that are out of step with prevailing community views or practices. - -Rather than pursuing open source license enforcement policy through test case litigation, we should first fully explore the use of community-based governance approaches to promote appropriate license interpretations and compliance expectations. This would be especially helpful in signaling that restrictive or illiberal license interpretations, advanced in litigation by parties motivated by private gain, have no basis of support in the larger community that shares that license text. For example, we can document and publicize license interpretations that are widely accepted in the community, expanding on work already done by some license stewards. We can also promote more liberal and modern interpretations of widely used licenses that were drafted in a different technological context, while still upholding their underlying policies, with the aim of making compliance clearer, fairer, and easier. Finally, we should consider adopting more frequent upgrade cycles for popular licenses using public and transparent license-revision processes. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/21/3/test-cases-open-source-licenses - -作者:[Richard Fontana][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/fontana -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/law_legal_gavel_court.jpg?itok=tc27pzjI (A gavel.) -[2]: https://www.oyez.org/cases/1850-1900/163us537 -[3]: https://meshedinsights.com/2015/12/21/faq-license/ -[4]: https://opensource.com/law/16/11/licenses-are-shared-resources -[5]: https://opensource.com/article/19/2/top-foss-legal-developments -[6]: http://gpl-violations.org/ -[7]: https://en.wikipedia.org/wiki/Free_Software_Foundation,_Inc._v._Cisco_Systems,_Inc. -[8]: https://en.wikipedia.org/wiki/BusyBox#GPL_lawsuits -[9]: https://opensource.com/article/17/8/patrick-mchardy-and-copyright-profiteering -[10]: https://sfconservancy.org/news/2019/apr/02/vmware-no-appeal/ -[11]: https://sfconservancy.org/copyleft-compliance/vmware-lawsuit-faq.html diff --git a/sources/talk/20210312 Extending Looped Music for Fun, Relaxation and Productivity.md b/sources/talk/20210312 Extending Looped Music for Fun, Relaxation and Productivity.md deleted file mode 100644 index adf3038224..0000000000 --- a/sources/talk/20210312 Extending Looped Music for Fun, Relaxation and Productivity.md +++ /dev/null @@ -1,134 +0,0 @@ -[#]: subject: (Extending Looped Music for Fun, Relaxation and Productivity) -[#]: via: (https://theartofmachinery.com/2021/03/12/loopx.html) -[#]: author: (Simon Arneaud https://theartofmachinery.com) -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) - -Extending Looped Music for Fun, Relaxation and Productivity -====== - -Some work (like programming) takes a lot of concentration, and I use noise-cancelling headphones to help me work productively in silence. But for other work (like doing business paperwork), I prefer to have quiet music in the background to help me stay focussed. Quiet background music is good for meditation or dozing, too. If you can’t fall asleep or completely clear your mind, zoning out to some music is the next best thing. - -The best music for that is simple and repetitive — something nice enough to listen too, but not distracting, and okay to tune out of when needed. Computer game music is like that, by design, so there’s plenty of good background music out there. The harder problem is finding samples that play for more than a few minutes. - -So I made [`loopx`][1], a tool that takes a sample of music that loops a few times, and repeats the loop to make a long piece of music. - -When you’re listening to the same music loop for a long time, even slight distortion becomes distracting. Making quality extended music audio out of real-world samples (and doing it fast enough) takes a bit of maths and computer science. About ten years ago I was doing digital signal processing (DSP) programming for industrial metering equipment, so this side project got me digging up some old theory again. - -### The high-level plan - -It would be easy if we could just play the original music sample on repeat. But, in practice, most files we’ll have won’t be perfectly trimmed to the right loop length. Some tracks will also have some kind of intro before the loop, but even if they don’t, they’ll usually have some fade in and out. - -`loopx` needs to analyse the music file to find the music loop data, and then construct a longer version by copying and splicing together pieces of the original. - -By the way, the examples in this post use [Beneath the Rabbit Holes][2] by Jason Lavallee from the soundtrack of the [FOSS platform game SuperTux][3]. I looped it a couple of times and added silence and fade in/out to the ends. - -### Measuring the music loop length (or “period”) - -If you don’t care about performance, estimating the period at which the music repeats itself is pretty straightforward. All you have to do is take two copies of the music side by side, and slide one copy along until you find an offset that makes the two copies match up again. - -![][4] - -Now, if we could guarantee the music data would repeat exactly, there are many super-fast algorithms that could be used to help here (e.g., Rabin-Karp or suffix trees). However, even if we’re looking at computer-generated music, we can’t guarantee the loop will be exact for a variety of reasons like phase distortion (which will come up again later), dithering and sampling rate effects. - -![Converting this greyscale image of a ball in a room to a black/white image demonstrates dithering. Simple thresholding turns the image into regions of solid black and regions of solid white, with all detail lost except near the threshold. Adding random noise before converting fuzzes the threshold, allowing more detail to come through. This example is extreme, but the same idea is behind dithering digital audio when approximating smooth analogue signals.][5] - -By the way, Chris Montgomery (who developed Ogg Vorbis) made [an excellent presentation about the real-world issues (and non-issues) with digital audio][6]. There’s a light-hearted video that’s about 20 minutes and definitely worth watching if you have any interest in this stuff. Before that, he also did [an intro to the technical side of digital media][7] if you want to start from the beginning. - -If exact matching isn’t an option, we need to find a best fit instead, using one of the many vector similarity algorithms. The problem is that any good similarity algorithm will look at all the vector data and be (O(N)) time at best. If we naïvely calculate that at every slide offset, finding the best fit will be (O(N^{2})) time. With over 40k samples for every second of music (multiplied by the number of channels), these vectors are way too big for that approach to be fast enough. - -Thankfully, we can do it in (O(N\log N)) time using the Fourier transform if we choose to use autocorrelation to find the best fit. Autocorrelation means taking the dot product at every offset, and with some normalisation that’s a bit like using cosine similarity. - -![Log energy plot of the autocorrelation of the Beneath the Rabbit Holes sample \(normalised by overlap length\). This represents the closeness of match when the music is compared to a time-shifted version of itself. Naturally, there's a peak at 0 minutes offset, but the next biggest peak is at 2m58.907s, which happens to be exactly the length of the original music loop. The smaller peaks reflect small-scale patterns, such as the music rhythm.][8] - -### The Fourier transform? - -The Fourier transform is pretty famous in some parts of STEM, but not others. It’s used a lot in `loopx`, so here are some quick notes for those in the second group. - -There are a couple of ways to think about and use the Fourier transform. The first is the down-to-earth way: it’s an algorithm that takes a signal and analyses the different frequencies in it. If you take Beethoven’s Symphony No. 9 in D minor, Op 125, Ode to Joy, and put it through a Fourier transform, you’ll get a signal with peaks that correspond to notes in the scale of D minor. The Fourier transform is reversible, so it allows manipulating signals in terms of frequency, too. - -The second way to think of Fourier transforms is stratospherically abstract: the Fourier transform is a mapping between two vector spaces, often called the time domain and the frequency domain. It’s not just individual vectors that have mirror versions in the other domain. Operations on vectors and differential equations over vectors and so on can all be transformed, too. Often the version in one domain is simpler than the version in the other, making the Fourier transform a useful theoretical tool. In this case, it turns out that autocorrelation is very simple in the frequency domain. - -The Fourier transform is used both ways in `loopx`. Because Fourier transforms represent most of the number crunching, `loopx` uses [FFTW][9], a “do one thing really, really well” library for fast Fourier transform implementations. - -### Dealing with phase distortion - -I had some false starts implementing `loopx` because of a practical difference between industrial signal processing and sound engineering: psychoacoustics. Our ears are basically an array of sensors tuned to different frequencies. That’s it. Suppose you play two tones into your ears, with different phases (i.e., they’re shifted in time relatively to each other). You literally can’t hear the difference because there’s no wiring between the ears and the brain carrying that information. - -![][10] - -Sure, if you play several frequencies at once, phase differences can interact in ways that are audible, but phase matters less overall. A sound engineer who has to make a choice between phase distortion and some other kind of distortion will tend to favour phase distortion because it’s less noticeable. Phase distortion is usually simple and consistent, but phase distortion from popular lossy compression standards like MP3 and Ogg Vorbis seems to be more complicated. - -Basically, when you zoom right into the audio data, any algorithmic approach that’s sensitive to the precise timing of features is hopeless. Because audio files are designed for phase-insensitve ears, I had to make my algorithms phase-insensitive too to get any kind of robustness. That’s probably not news to anyone with real audio engineering experience, but it was a bit of an, “Oh,” moment for someone like me coming from metering equipment DSP. - -I ended up using spectrograms a lot. They’re 2D heatmaps in which one axis represents time, and the other axis represents frequency. The example below shows how they make high-level music features much more recognisable, without having to deal with low-level issues like phase. (If you’re curious, you can see [a 7833x192 spectrogram of both channels of the whole track][11].) - -![Spectrogram of the first 15s of Beneath the Rabbit Holes. Time advances to the right. Each vertical strip shows the signal strength by frequency at a given time window, which low notes at the bottom and high ones at the top. The bright strip at the bottom is the bass. The vertical streaks are percussion. The melody starts at about 10s, and appears as dots for notes.][12] - -The Fourier transform does most of the work of getting frequency information out of music, but a bit more is needed to get a useful spectrogram. The Fourier transform works over the whole input, so instead of one transformation, we need to do transformations of overlapping windows running along the input. Each windowed transformation turns into a single frame of the spectrogram after a bit of postprocessing. The Fourier transform uses a linear frequency scale, which isn’t natural for music (every 8th white key on a piano has double the pitch), so frequencies get binned according to a Mel scale (designed to approximate human pitch perception). After that, the total energy for each frequency gets log-transformed (again, to match human perception). [This article describes the steps in detail][13] (ignore the final DCT step). - -### Finding the loop zone - -Remember that the music sample will likely have some intro and outro? Before doing more processing, `loopx` needs to find the section of the music sample that actually loops (what’s called the “loop zone” in the code). It’s easy in principle: scan along the music sample and check if it matches up with the music one period ahead. The loop zone is assumed to be the longest stretch of music that matches (plus the one period at the end). Processing the spectrogram of the music, instead of the raw signal itself, turned out to be more robust. - -![The difference between each spectrogram frame and the one that's a music period after in the Beneath the Rabbit Holes sample. The difference is high at the beginning and end because of the silence and fade in/out. The difference is low in the middle because of the music loop.][14] - -A human can eyeball a plot like the one above and see where the intro and outro are. However, the error thresholds for “match” and “mismatch” vary depending on the sample quality and how accurate the original period estimate are, so finding a reliable computer algorithm is more complicated. There are statistical techniques for solving this problem (like Otsu’s method), but `loopx` just exploits the assumption that a loop zone exists, and figures out thresholds based on low-error sections of the plot. A variant of Schmitt triggering is used to get a good separation between the loop zone and the rest. - -### Refining the period estimate - -Autocorrelation is pretty good for estimating the period length, but a long intro or outro can pull the estimate either way. Knowing the loop zone lets us refine the estimate: any recognisable feature (like a chord change or drum beat) inside the loop zone will repeat one period before or after. If we find a pair of distinctive features, we can measure the difference to get an accurate estimate of the period. - -`loopx` finds the strongest features in the music using a novelty curve — which is just the difference between one spectrogram frame and the next. Any change (a beat, a note, a change of key) will cause a spike in this curve, and the biggest spikes are taken as points of interest. Instead of trying to find the exact position of music features (which would be fragile), `loopx` just takes the region around a point of interest and its period-shifted pair, and uses cross-correlation to find the shift that makes them best match (just like the autocorrelation, but between two signals). For robustness, shifts are calculated for a bunch of points and the median is used to correct the period. The median is better than the average because each single-point correction estimate is either highly accurate alone or way off because something went wrong. - -### Extending the music - -The loop zone has the useful property that jumping back or forward a multiple of the music period keeps the music playing uninterrupted, as long as playback stays within the loop zone. This is the essence of how `loopx` extends music. To make a long output, `loopx` copies music data from the beginning until it hits the end of the loop zone. Then it jumps back as many periods as it can (staying inside the loop zone) and keeps repeating copies like that until it has output enough data. Then it just keeps copying to the end. - -That sounds simple, but if you’ve ever tried it you’ll know there’s one more problem. Most music is made of smooth waves. If you just cut music up in arbitrary places and concatenate the pieces together, you get big jumps in the wave signal that turn into jarring popping sounds when played back as an analogue signal. When I’ve done this by hand, I’ve tried to minimise this distortion by making the curve as continuous as possible. For example, I might find a place in the first fragment of audio where the signal crosses the zero line going down, and I’ll try to match it up with a place in the second fragment that’s also crossing zero going down. That avoids a loud pop, but it’s not perfect. - -An alternative that’s actually easier to implement in code is a minimum-error match. Suppose you’re splicing signal A to signal B, and you want to evaluate how good the splice is. You can take some signal near the splice point and compare it to what the signal would have been if signal A had kept playing. Simply substracting and summing the squares gives a reasonable measure of quality. I also tried filtering the errors before squaring and summing because distortion below 20Hz and above 20kHz isn’t as bad as distortion inside normal human hearing range. This approach improved the splices a lot, but it wasn’t reliable at making them seamless. I don’t have super hearing ability, but the splices got jarring when listening to a long track with headphones in a quiet room. - -Once again, the spectral approach was more robust. Calculating the spectrum around the splice and comparing it to the spectrum around the original signal is a useful way to measure splice quality. The pop sound of a broken audio signal appears as an obvious burst of noise across most of the spectrum. Even better, because the spectrum is designed to reflect human hearing, it also catches any other annoying effects, like a blip caused by a bad splice right on the edge of a drum beat. Anything that’s obvious to a human will be obvious in the spectrogram. - -![Examples of how splicing affects the local music spectrum. The signal plots on the left show the splice point and a few hundred audio samples either side. The spectra on the right are calculated from a few thousand samples either side of the splice point. The centre row shows the original, unspliced signal and its spectrum. The spectrum of the bad splice is flooded with noise and is obviously different from the original spectrum. The spectrum of the improved splice looks much more like the original. The audio signal already looks reasonably smooth in the time domain, but loopx is able to find even better splices by looking at the spectra.][15] - -There are multiple splice points that need to be made seamless. The simple approach to optimising them is a greedy one: just process each splice point in order and take the best splice found locally. However, `loopx` also tries to maintain the music loop length as best as possible, which means each splice point will depend on the splicing decisions made earlier. That means later splices can be forced to be worse because of overeager decisions made earlier. - -Now, I admit this might be getting into anal retentive territory, but I wasn’t totally happy with about %5 of the tracks I tested, and I wanted a tool that could reliably make music better than my hearing (assuming quality input data). So I switched to optimising the splices using Dijkstra’s algorithm. Normally Dijkstra is thought of as an algorithm for figuring out the shortest path from start to finish using available path segments. In this case, I’m finding the least distortion series of copies to get from an empty output audio file to one that’s the target length, using spliced segments of the input file. Abstractly, it’s the same problem. I also calculate cost a little differently. In normal path finding, the path cost is the sum of the segment costs. However, total distortion isn’t the best measure for `loopx`. I don’t care if Dijkstra’s algorithm can make an almost-perfect splice perfect if it means making an annoying splice worse. So, `loopx` finds the copy plan with the least worst-case distortion level. That’s no problem because Dijkstra’s algorithm works just as well finding min-max as it does finding min-sum (abstractly, it just needs paths to be evaluated in a way that’s a total ordering and never improves when another segment is added). - -### Enjoying the music - -It’s rare for any of my hobby programming projects to actually be useful at all to my everyday life away from computers, but I’ve already found multiple uses for background music generated by `loopx`. As usual, [the full source is available on GitLab][1]. - --------------------------------------------------------------------------------- - -via: https://theartofmachinery.com/2021/03/12/loopx.html - -作者:[Simon Arneaud][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://theartofmachinery.com -[b]: https://github.com/lujun9972 -[1]: https://gitlab.com/sarneaud/loopx -[2]: https://github.com/SuperTux/supertux/blob/56efa801a59e7e32064b759145e296a2d3c11e44/data/music/forest/beneath_the_rabbit_hole.ogg -[3]: https://github.com/SuperTux/supertux -[4]: https://theartofmachinery.com/images/loopx/shifted.jpg -[5]: https://theartofmachinery.com/images/loopx/dither_demo.png -[6]: https://wiki.xiph.org/Videos/Digital_Show_and_Tell -[7]: https://wiki.xiph.org/Videos/A_Digital_Media_Primer_For_Geeks -[8]: https://theartofmachinery.com/images/loopx/autocorrelation.jpg -[9]: http://www.fftw.org/ -[10]: https://theartofmachinery.com/images/loopx/phase_shift.svg -[11]: https://theartofmachinery.com/images/loopx/spectrogram.png -[12]: https://theartofmachinery.com/images/loopx/spectrogram_intro.png -[13]: https://www.practicalcryptography.com/miscellaneous/machine-learning/guide-mel-frequency-cepstral-coefficients-mfccs/ -[14]: https://theartofmachinery.com/images/loopx/loop_zone_errors.png -[15]: https://theartofmachinery.com/images/loopx/splice.png diff --git a/sources/talk/20210324 Get better at programming by learning how things work.md b/sources/talk/20210324 Get better at programming by learning how things work.md deleted file mode 100644 index af527b70d1..0000000000 --- a/sources/talk/20210324 Get better at programming by learning how things work.md +++ /dev/null @@ -1,222 +0,0 @@ -[#]: subject: (Get better at programming by learning how things work) -[#]: via: (https://jvns.ca/blog/learn-how-things-work/) -[#]: author: (Julia Evans https://jvns.ca/) -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) - -Get better at programming by learning how things work -====== - -When we talk about getting better at programming, we often talk about testing, writing reusable code, design patterns, and readability. - -All of those things are important. But in this blog post, I want to talk about a different way to get better at programming: learning how the systems you’re using work! This is the main way I approach getting better at programming. - -### examples of “how things work” - -To explain what I mean by “how things work”, here are some different types of programming and examples of what you could learn about how they work. - -Frontend JS: - - * how the event loop works - * HTTP methods like GET and POST - * what the DOM is and what you can do with it - * the same-origin policy and CORS - - - -CSS: - - * how inline elements are rendered differently from block elements - * what the “default flow” is - * how flexbox works - * how CSS decides which selector to apply to which element (the “cascading” part of the cascading style sheets) - - - -Systems programming: - - * the difference between the stack and the heap - * how virtual memory works - * how numbers are represented in binary - * what a symbol table is - * how code from external libraries gets loaded (e.g. dynamic/static linking) - * Atomic instructions and how they’re different from mutexes - - - -### you can use something without understanding how it works (and that can be ok!) - -We work with a LOT of different systems, and it’s unreasonable to expect that every single person understands everything about all of them. For example, many people write programs that send email, and most of those people probably don’t understand everything about how email works. Email is really complicated! That’s why we have abstractions. - -But if you’re working with something (like CSS, or HTTP, or goroutines, or email) more seriously and you don’t really understand how it works, sometimes you’ll start to run into problems. - -### your bugs will tell you when you need to improve your mental model - -When I’m programming and I’m missing a key concept about how something works, it doesn’t always show up in an obvious way. What will happen is: - - * I’ll have bugs in my programs because of an incorrect mental model - * I’ll struggle to fix those bugs quickly and I won’t be able to find the right questions to ask to diagnose them - * I feel really frustrated - - - -I think it’s actually an important skill **just to be able to recognize that this is happening**: I’ve slowly learned to recognize the feeling of “wait, I’m really confused, I think there’s something I don’t understand about how this system works, what is it?” - -Being a senior developer is less about knowing absolutely everything and more about quickly being able to recognize when you **don’t** know something and learn it. Speaking of being a senior developer… - -### even senior developers need to learn how their systems work - -So far I’ve never stopped learning how things work, because there are so many different types of systems we work with! - -For example, I know a lot of the fundamentals of how C programs work and web programming (like the examples at the top of this post), but when it comes to graphics programming/OpenGL/GPUs, I know very few of the fundamental ideas. And sometimes I’ll discover a new fact that I’m missing about a system I thought I knew, like last year I [discovered][1] that I was missing a LOT of information about how CSS works. - -It can feel bad to realise that you really don’t understand how a system you’ve been using works when you have 10 years of experience (“ugh, shouldn’t I know this already? I’ve been using this for so long!“), but it’s normal! There’s a lot to know about computers and we are constantly inventing new things to know, so nobody can keep up with every single thing. - -### how I go from “I’m confused” to “ok, I get it!” - -When I notice I’m confused, I like to approach it like this: - - 1. Notice I’m confused about a topic (“hey, when I write `await` in my Javascript program, what is actually happening?“) - 2. Break down my confusion into specific factual questions, like “when there’s an `await` and it’s waiting, how does it decide which part of my code runs next? Where is that information stored?” - 3. Find out the answers to those questions (by writing a program, reading something on the internet, or asking someone) - 4. Test my understanding by writing a program (“hey, that’s why I was having that async bug! And I can fix it like this!“) - - - -The last “test my understanding” step is really important. The whole point of understanding how computers work is to actually write code to make them do things! - -I find that if I can use my newfound understanding to do something concrete like implement a new feature or fix a bug or even just write a test program that demonstrates how the thing works, it feels a LOT more real than if I just read about it. And then it’s much more likely that I’ll be able to use it in practice later. - -### just learning a few facts can help a lot - -Learning how things work doesn’t need to be a big huge thing. For example, I used to not really know how floating point numbers worked, and I felt nervous that something weird would happen that I didn’t understand. - -And then one day in 2013 I went to a talk by Stefan Karpinski explaining how floating point numbers worked (containing roughly the information in [this comic][2], but with more weird details). And now I feel totally confident using floating point numbers! I know what their basic limitations are, and when not to use them (to represent integers larger than 2^53). And I know what I _don’t_ know – I know it’s hard to write numerically stable linear algebra algorithms and I have no idea how to do that. - -### connect new facts to information you already know - -When learning a new fact, it’s easy to be able to recite a sentence like “ok, there are 8 bits in a byte”. That’s true, but so what? What’s harder (and much more useful!) is to be able to connect that information to what you already know about programming. - -For example, let’s take this “8 bits in a byte thing”. In your program you probably have strings, like “Hello”. You can already start asking lots of questions about this, like: - - * How many bytes in memory are used to represent the string “Hello”? (it’s 5!) - * What bits exactly does the letter “H” correspond to? (the encoding for “Hello” is going to be using ASCII, so you can look it up in an ASCII table!) - * If you have a running program that’s printing out the string “Hello”, can you go look at its memory and find out where those bytes are in its memory? How do you do that? - - - -The important thing here is to ask the questions and explore the connections that **you’re** curious about – maybe you’re not so interested in how the strings are represented in memory, but you really want to know how many bytes a heart emoji is in Unicode! Or maybe you want to learn about how floating point numbers work! - -I find that when I connect new facts to things I’m already familiar with (like emoji or floating point numbers or strings), then the information sticks a lot better. - -Next up, I want to talk about 2 ways to get information: asking a person yes/no questions, and asking the computer. - -### how to get information: ask yes/no questions - -When I’m talking to someone who knows more about the concept than me, I find it helps to start by asking really simple questions, where the answer is just “yes” or “no”. I’ve written about yes/no questions before in [how to ask good questions][3], but I love it a lot so let’s talk about it again! - -I do this because it forces me to articulate exactly what my current mental model _is_, and because I think yes/no questions are often easier for the person I’m asking to answer. - -For example, here are some different types of questions: - - * Check if your current understanding is correct - * Example: “Is a pixel shader the same thing as a fragment shader?” - * How concepts you’ve heard of are related to each other - * Example: “Does shadertoy use OpenGL?” - * Example: “Do graphics cards know about triangles?” - * High-level questions about what the main purpose of something is - * Example: “Does mysql orchestrator proxy database queries?” - * Example: “Does OpenGL give you more control or less control over the graphics card than Vulkan?” - - - -### yes/no questions put you in control - -When I ask very open-ended questions like “how does X work?”, I find that it often goes wrong in one of 2 ways: - - 1. The person starts telling me a bunch of things that I already knew - 2. The person starts telling me a bunch of things that I don’t know, but which aren’t really what I was interested in understanding - - - -Both of these are frustrating, but of course neither of these things are their fault! They can’t know exactly what informatoin I wanted about X, because I didn’t tell them. But it still always feels bad to have to interrupt someone with “oh no, sorry, that’s not what I wanted to know at all!” - -I love yes/no questions because, even though they’re harder to formulate, I’m WAY more likely to get the exact answers I want and less likely to waste the time of the person I’m asking by having them explain a bunch of things that I’m not interested in. - -### asking yes/no questions isn’t always easy - -When I’m asking someone questions to try to learn about something new, sometimes this happens: - -**me:** so, just to check my understanding, it works like this, right? -**them:** actually, no, it’s <completely different thing> -**me (internally)**: (brief moment of panic) -**me:** ok, let me think for a minute about my next question - -It never quite feels _good_ to learn that my mental model was totally wrong, even though it’s incredibly helpful information. Asking this kind of really specific question (even though it’s more effective!) puts you in a more vulnerable position than asking a broader question, because sometimes you have to reveal specific things that you were totally wrong about! - -When this happens, I like to just say that I’m going to take a minute to incorporate the new fact into my mental model and think about my next question. - -Okay, that’s the end of this digression into my love for yes/no questions :) - -### how to get information: ask the computer - -Sometimes when I’m trying to answer a question I have, there won’t be anybody to ask, and I’ll Google it or search the documentation and won’t find anything. - -But the delightful thing about computers is that you can often get answers to questions about computers by… asking your computer! - -Here are a few examples (from past blog posts) of questions I’ve had and computer experiments I ran to answer them for myself: - - * Are atomics faster or slower than mutexes? (blog post: [trying out mutexes and atomics][4]) - * If I add a user to a group, will existing processes running as that user have the new group? (blog post: [How do groups work on Linux?][5]) - * On Linux, if you have a server listening on 0.0.0.0 but you don’t have any network interfaces, can you connect to that server? (blog post: [what’s a network interface?][6]) - * How is the data in a SQLite database actually organized on disk? (blog post: [How does SQLite work? Part 1: pages!][7]) - - - -### asking the computer is a skill - -It definitely takes time to learn how to turn “I’m confused about X” into specific questions, and then to turn that question into an experiment you can run on your computer to definitively answer it. - -But it’s a really powerful tool to have! If you’re not limited to just the things that you can Google / what’s in the documentation / what the people around you know, then you can do a LOT more. - -### be aware of what you still don’t understand - -Like I said earlier, the point here isn’t to understand every single thing. But especially as you get more senior, it’s important to be aware of what you don’t know! For example, here are five things I don’t know (out of a VERY large list): - - * How database transactions / isolation levels work - * How vertex shaders work (in graphics) - * How font rendering works - * How BGP / peering work - * How multiple inheritance works in Python - - - -And I don’t really need to know how those things work right now! But one day I’m pretty sure I’m going to need to know how database transactions work, and I know it’s something I can learn when that day comes :) - -Someone who read this post asked me “how do you figure out what you don’t know?” and I didn’t have a good answer, so I’d love to hear your thoughts! - -Thanks to Haider Al-Mosawi, Ivan Savov, Jake Donham, John Hergenroeder, Kamal Marhubi, Matthew Parker, Matthieu Cneude, Ori Bernstein, Peter Lyons, Sebastian Gutierrez, Shae Matijs Erisson, Vaibhav Sagar, and Zell Liew for reading a draft of this. - --------------------------------------------------------------------------------- - -via: https://jvns.ca/blog/learn-how-things-work/ - -作者:[Julia Evans][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://jvns.ca/ -[b]: https://github.com/lujun9972 -[1]: https://jvns.ca/blog/debugging-attitude-matters/ -[2]: https://wizardzines.com/comics/floating-point/ -[3]: https://jvns.ca/blog/good-questions/ -[4]: https://jvns.ca/blog/2014/12/14/fun-with-threads/ -[5]: https://jvns.ca/blog/2017/11/20/groups/ -[6]: https://jvns.ca/blog/2017/09/03/network-interfaces/ -[7]: https://jvns.ca/blog/2014/09/27/how-does-sqlite-work-part-1-pages/ diff --git a/sources/talk/20210325 Elevating open leaders by getting out of their way.md b/sources/talk/20210325 Elevating open leaders by getting out of their way.md deleted file mode 100644 index d7f78221da..0000000000 --- a/sources/talk/20210325 Elevating open leaders by getting out of their way.md +++ /dev/null @@ -1,80 +0,0 @@ -[#]: subject: (Elevating open leaders by getting out of their way) -[#]: via: (https://opensource.com/open-organization/21/3/open-spaces-leadership-talent) -[#]: author: (Jos Groen https://opensource.com/users/jos-groen) -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) - -Elevating open leaders by getting out of their way -====== -Your organization's leaders likely know the most effective and -innovative path forward. Are you giving them the space they need to get -you there? -![Leaders are catalysts][1] - -Today, we're seeing the rapid rise of agile organizations capable of quickly and effectively adapting to market new ideas with large-scale impacts. These companies tend to have something in common: they have a clear core direction and young, energetic leaders—leaders who encourage their talented employees to develop their potential. - -The way these organizations apply open principles to developing their internal talent—that is, how they facilitate and encourage talented employees to develop and advance in all layers of the organization—is a critical component of their sustainability and success. The organizations have achieved an important kind of "flow," through which talented employees can easily shift to the places in the organization where they can add the most value based on their talents, skills, and [intrinsic motivators.][2] Flow ensures fresh ideas and new impulses. After all, the best idea can originate anywhere in the organization—no matter where a particular employee may be located. - -In this new series, I'll explore various dimensions of this open approach to organizational talent management. In this article, I explicitly focus on employees who demonstrate leadership talent. After all, we need leaders to create contexts based on open principles, leaders able to balance people and business in their organization. - -### The elements of success - -I see five crucial elements that determine the success of businesses today: - - 1. Talented leaders are engaged and empowered—given the space to develop, grow, and build experience under the guidance of mentors (leaders) in a safe environment. They can fail fast and learn fast. - 2. Their organizations know how to quickly and decisively convert new ideas into valuable products, services, or solutions. - 3. The dynamic between "top" and "bottom" managers and leaders in the organization is one of balance. - 4. People are willing to let go of deeply held beliefs, processes, and behaviors. It's brave to work openly. - 5. The organization has a clear core direction and strong identity based on the open principles. - - - -All these elements of success are connected to employees' creativity and ingenuity. - -### Open and safe working environment - -Companies that traditionally base their services, governance, and strategic execution on hierarchy and the authority embedded in their systems, processes, and management structure rarely leave room for this kind of open talent development. In these systems, good ideas too often get "stuck" in bureaucracies, and authority to lead is primarily [based on tenure and seniority][3], not on talent. Moreover, traditionally minded board members and management don't always have an adequate eye for management talent. So there is the first challenge! We need leaders who can have a primary eye on leadership talent. The first step to balance management and leadership at the top. Empowering the most talented and passionate—rather than the more senior—makes them uncomfortable. So leaders with potentially innovative ideas rarely get invited to participate in the "inner circle." - -Fortunately, I see these organizations beginning to realize that they need to get moving before they lose their competitive edge. - -The truth is that there is no "right" or "wrong" choice for organizing a business. The choices an organization makes are simply the choices that determine their overall speed, strength, and agility. - -They're beginning to understand that they need to provide talented employees with [safe spaces for experimentation][4]—an open and safe work environment, one in which employees can experiment with new ideas, learn from their mistakes, and [find that place][5] in the organization [where they thrive][6]. - -But the truth is that there is no "right" or "wrong" choice for organizing a business. The choices an organization makes are simply the choices that determine their overall speed, strength, and agility. And more frequently, organizations are choosing open approaches to building their cultures and processes, because their talent thrives better in environments based on transparency and trust. Employees in these organizations have more perspective and are actively involved in the design and development of the organization itself. They keep their eyes and ears "open" for new ideas and approaches—so the organization benefits from empowering them. - -### Hybrid thinking - -As [I've said before][7]: the transition from a conventional organization to a more open one is never a guaranteed success. During this transformation, you'll encounter periods in which traditional and open practices operate side by side, even mixed and shuffled. These are an organization's _hybrid_ phase. - -When your organization enters this hybrid phase, it needs to begin thinking about changing its approach to talent management. In addition to its _individual_ transformation, it will need to balance the needs and perspectives of senior managers and leaders alongside _other_ management layers, which are beginning to shift. In short, it must establish a new vision and strategy for the development of leadership talent. - -The starting point here is to create a safe and stimulating environment where mentors and coaches support these future leaders in their growth. During this hybrid period, you will be searching for the balance between passion and performance in the organization—which means you'll need to let go of deeply rooted beliefs, processes, and behaviors. In my opinion, this means focusing on the _human_ elements present in your organization, its leadership, and its flows of talent, without losing sight of organizational performance. This "letting go" doesn't happen quickly or immediately, like pressing a button, nor is it one that you can entirely influence. But it is an exciting and comprehensive journey that you and your organization will embark on. - -And that journey begins with you. Are you ready for it? - -Resolved to be a more open leader in 2016? Start by reading these books. - --------------------------------------------------------------------------------- - -via: https://opensource.com/open-organization/21/3/open-spaces-leadership-talent - -作者:[Jos Groen][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/jos-groen -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/leaderscatalysts.jpg?itok=f8CwHiKm (Leaders are catalysts) -[2]: https://opensource.com/open-organization/18/5/rethink-motivation-engagement -[3]: https://opensource.com/open-organization/16/8/how-make-meritocracy-work -[4]: https://opensource.com/open-organization/19/3/introduction-psychological-safety -[5]: https://opensource.com/open-organization/17/9/own-your-open-career -[6]: https://opensource.com/open-organization/17/12/drive-open-career-forward -[7]: https://opensource.com/open-organization/20/6/organization-everyone-deserves diff --git a/sources/talk/20210405 What motivates open source software contributors.md b/sources/talk/20210405 What motivates open source software contributors.md deleted file mode 100644 index c8f8dd148c..0000000000 --- a/sources/talk/20210405 What motivates open source software contributors.md +++ /dev/null @@ -1,93 +0,0 @@ -[#]: subject: (What motivates open source software contributors?) -[#]: via: (https://opensource.com/article/21/4/motivates-open-source-contributors) -[#]: author: (Igor Steinmacher https://opensource.com/users/igorsteinmacher) -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) - -What motivates open source software contributors? -====== -New study finds people's reasons for contributing have changed since the -early 2000s. -![Practicing empathy][1] - -The reasons people contribute to free and open source (FOSS) projects has been a topic of much interest. However, the research on this topic dates back 10 or more years, and much has changed in the world since then. This article shares seven insights from a recent research study that revisited old motivation studies and asked open source contributors what motivates them today. - -These insights can be used by open source community managers who want to grow a community, organizations that want to understand how community members behave, or anyone working with others in open source. Understanding what motivates today's contributors helps us make impactful decisions. - -### A brief history of open source motivation research - -We need to look into the origins of open source and the free software movement to understand why studying what motivates contributors is so fascinating. When the free software movement started, it was in defiance of corporations using copyright and license terms to restrict user and developer freedoms. The free software movement is a story of rebellion. It was difficult for many to understand how high-quality software emerged from a movement of people who "scratched their own itch" or "volunteered" their skills. At the core of the free software movement was a collaborative way for creating software that became interesting to companies as well. The emergence of open source was a philosophical shift to make this collaboration method available and acceptable to businesses. - -The state of the art of research into motivation in open source is a [publication from 2012][2] that summarizes research studies from more than a decade prior. Gordon Haff reviewed this topic in [_Why do we contribute to open source software?_][3] and Ruth Suehle in _[Drive and motivation: Daniel Pink webcast recap][4]_. - -Over the last 10 years, much has changed in open source. With corporations' increasing interest in open source and having paid employees working on open source projects, it was high time to revisit motivation in open source. - -### Contributors' changing motivations - -In our scientific study, _[The shifting sands of motivation: Revisiting what drives contributors in open source][5]_, we investigated why people join FOSS projects and why they continue contributing. One of our goals was to study how contributors' motivations have changed since the 2000s. A second goal was to take the research to the next level and investigate how people's motivations change as they continue contributing. The research is based on a questionnaire answered by almost 300 FOSS contributors in late 2020. - -### Seven key findings - -Some of the study's results include: - - 1. **Intrinsic motivations play a key role.** The large majority of people contribute to FOSS because of fun (91%), altruism (85%), and kinship (80%). Moreover, when analyzing differences in motivations to join and continue, the study found that ideology, own-use, or education-related programs can be an impetus to join FOSS, but individuals continue for intrinsic reasons (fun, altruism, reputation, and kinship). - - 2. **Reputation and career motivate more than payment**. Many contributors seek reputation (68%) and career (67%), while payment was referenced by less than 30% of the participants. Compared to earlier studies, reputation is now considered more important. - - 3. **Social aspects have gained considerable importance since the 2000s.** Enjoying helping others (89%) and kinship (80%) rose in the rankings compared to surveys from the early 2000s. - - 4. **Motivation changes as people gain tenure.** A clear outcome of the paper is that current contributors often have a different motivation from what led them to join. Of the 281 respondents, 155 (55%) did not report the same motivation for joining and continuing to contribute. - -The figure below shows individuals' shifts in motivation from when they joined to what leads them to keep contributing. The size of the boxes on the left represents the number of contributors with that motivation to start contributing to FOSS, and on the right, the motivation to continue contributing. The width of the connections is proportional to the number of contributors who shifted from one motivation to the other.  - -![Motivations for contributing to FOSS][6] - -(Source: [Gerosa, et al.][7]) - - 5. **Scratching one's own itch is a doorway.** Own-use ("scratch own itch") has decreased in importance since the early days. The contributors who joined FOSS for own-use-related reasons often shifted to altruism, learning, fun, and reciprocity. You can see this in the figure above. - - 6. **Experience and age explain different motivations**. Experienced developers have higher rates of reporting altruism (5.6x), pay (5.2x), and ideology (4.6x) than novices, who report career (10x), learning (5.5x), and fun (2.5x) as greater motivations to contribute. Looking at individual shifts in motivation, there was a considerable increase (120%) in altruism for experienced respondents and a slight decrease (-16%) for novices. A few young respondents joined FOSS because of career, but many of them shifted towards altruism (100% increase). - - 7. **Coders and non-coders report different motivations.** The odds of a coder reporting fun is 4x higher than non-coders, who are more likely (2.5x) to report ideology as a motivator. - - - - -### Motivating contributors based on their contributor journey - -Knowing how new and long-time contributors differ in motivation helps us discover how to support them better.  - -For example, to attract and retain new contributors, who might become the future workforce, projects could invest in promoting career, fun, kinship, and learning, which are particularly relevant for young contributors. - -Because over time altruism becomes more important to contributors, FOSS projects aiming to retain experienced contributors, who tend to be core members or maintainers, could invest in strategies and tools showing how their work benefits the community and society (altruism) and improve social interactions. - -Also in response to the increased rank of altruism, hosting platforms could offer social features to pair those needing help with those willing to help, highlight when a contributor helps someone, and make it easier to show appreciation to others (similar to stars given to projects). - -These are some of our ideas after reviewing the study's findings. We hope that sharing our insights helps others with different backgrounds and experiences come up with more ideas for using this data to motivate new and seasoned contributors. Please share your ideas in the comments below. - -The research paper's authors are Marco A. Gerosa (Northern Arizona University), Igor Wiese (Universidade Tecnologica Federal do Paraná), Bianca Trinkenreich (Northern Arizona University), Georg Link (Bitergia), Gregorio Robles (Universidad Rey Juan Carlos), Christoph Treude (University of Adelaide), Igor Steinmacher (Universidade Tecnologica Federal do Paraná), and Anita Sarma (Oregon State University). The full [study report][7] is available, as well as the [anonymized data and artifacts][8] related to the research. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/21/4/motivates-open-source-contributors - -作者:[Igor Steinmacher][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/igorsteinmacher -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/practicing-empathy.jpg?itok=-A7fj6NF (Practicing empathy) -[2]: https://www.semanticscholar.org/paper/Carrots-and-Rainbows%3A-Motivation-and-Social-in-Open-Krogh-Haefliger/52ec46a827ba5d6aeb38aaeb24b0780189c16856?p2df -[3]: https://opensource.com/article/19/11/why-contribute-open-source-software -[4]: https://opensource.com/business/11/6/today-drive-webcast-daniel-pink -[5]: https://arxiv.org/abs/2101.10291 -[6]: https://opensource.com/sites/default/files/pictures/sankey_motivations.png (Motivations for contributing to FOSS) -[7]: https://arxiv.org/pdf/2101.10291.pdf -[8]: https://zenodo.org/record/4453904#.YFtFRa9KhaR diff --git a/sources/talk/20210415 Microsoft Gets into the OpenJDK Business- What Does it Mean for You.md b/sources/talk/20210415 Microsoft Gets into the OpenJDK Business- What Does it Mean for You.md deleted file mode 100644 index 48d663b1fc..0000000000 --- a/sources/talk/20210415 Microsoft Gets into the OpenJDK Business- What Does it Mean for You.md +++ /dev/null @@ -1,98 +0,0 @@ -[#]: subject: (Microsoft Gets into the OpenJDK Business: What Does it Mean for You?) -[#]: via: (https://news.itsfoss.com/microsoft-openjdk/) -[#]: author: (John Paul Wohlscheid https://news.itsfoss.com/author/john/) -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) - -Microsoft Gets into the OpenJDK Business: What Does it Mean for You? -====== - -Microsoft is getting into the Java business. The question is “What does this mean for the Open-Source community?” Has Microsoft learned anything from their past interactions with Java? Let’s see. - -### Introducing Microsoft Builds of OpenJDK - -Microsoft recently announced that they would be releasing builds of OpenJDK. According to [the announcement][1], these builds will be Long-Term Support (LTS). - -The builds will include Java 11 (based on OpenJDK 11.0.10+9) for “macOS, Linux, and Windows”. They will be available for both servers and desktop systems. They are also introducing Early Access builds of Java 16 for Windows on ARM (based on OpenJDK 16+36). “The Microsoft Build of OpenJDK is a simple drop-in replacement for any other OpenJDK distribution available in the Java ecosystem.” - -All of the binaries available are considered “Preview”. The announcement mentions that Java 11 was released in 2018. So what call it a “Preview”? Because Microsoft wants feedback from customers on “things like the packaging and installation experience” before they make them production ready. - -Since they are consider Long-Term Support, Java 11 will be supported until 2024. OpenJDK 17 will be made available when Java 17 “is finalized”. Microsoft will not be offering support for Java 8. - -For those interested in the recipes Microsoft is using to bake its Java cake, they are using the “same build scripts used by the Eclipse Adoptium project and tested against the Eclipse Adoptium Quality Assurance suite (including OpenJDK project tests)”. - -The binaries are licensed as “General Public License 2.0 with Classpath Exception (GPLv2+CE)”. - -### Not Microsoft’s First Java Rodeo - -![][2] - -What’s interesting is that this is not the first time that Microsoft got involved with Java. Back in 1996, Microsoft introduced the imaginatively named [J++][3]. Initially, J++ got a lot of [good press][4]. - -However, the honeymoon didn’t last. [In 2007][5], Sun Microsystems sued Microsoft. They said that Microsoft “breached its licensing agreement by adding extensions that weren’t Java-compatible”. The suit was settled in 2001. “Microsoft was required to pay Sun $20 million, as well as to permanently stop using “Java-compatible” trademarks.” J++ supported ended in 2004. - -This was just one of [many times][6] that Microsoft enacted their [Embrace, Extent, Extinguish mantra][7]. This time it was Microsoft plans that were extinguished. - -Sometimes, its hard to equate all of the underhanded tactics that Microsoft committed under Bill Gates and his philanthropy. - -### So What Does This All Mean? - -The burning question is why is Microsoft even bothering to create these binaries in the first place? There are at least half of a dozen organizations that offer OpenJDK binaries, including IBM, Amazon, and Eclipse. - -[Mike and Chris from Coder Radio][8] has repeatedly mentioned that Microsoft is transforming itself into a company that creates tools for programmers. They don’t care what platform programmers use, just that they use Microsoft tools. (In the OpenJDK announcement, Microsoft listed the available platforms as “macOS, Linux, and Windows”.) This newest announcement is the latest step in the transformation. - -What does it mean for open source? If Microsoft leaves the OpenJDK binaries unchanged, probably not much. At most, they will make the binaries work better on Windows and with Visual Studio Code. However, the big concern would be if they start changing the code. - -My advice: Keep your eggs out of Microsoft’s basket, so you don’t get locked into their tooling. At least, until they have proven that they are not evil. After all, there are plenty of alternative already. - -![][9] - -I'm not interested - -#### _Related_ - - * [Microsoft Makes 'Extensible Storage Engine' Open-Source, Used by Windows 10 & Microsoft Exchange][10] - * ![][11] ![][12] - - - * [Is Google Locking Down Chrome to Resist the Rise of Chromium Based Browsers?][13] - * ![][11] ![Google Chrome][14] - - - * [Good News! elementary OS is Coming to Raspberry Pi 4][15] - * ![][11] ![elementary OS Raspberry Pi Build][16] - - - --------------------------------------------------------------------------------- - -via: https://news.itsfoss.com/microsoft-openjdk/ - -作者:[John Paul Wohlscheid][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://news.itsfoss.com/author/john/ -[b]: https://github.com/lujun9972 -[1]: https://devblogs.microsoft.com/java/announcing-preview-of-microsoft-build-of-openjdk/ -[2]: data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9JzM3NScgd2lkdGg9JzI5NScgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB2ZXJzaW9uPScxLjEnLz4= -[3]: https://en.wikipedia.org/wiki/Visual_J%2B%2B -[4]: https://www.drdobbs.com/microsofts-visual-j-10/184415556 -[5]: https://www.informit.com/articles/article.aspx?p=101152 -[6]: https://birdhouse.org/beos/byte/30-bootloader/ -[7]: https://en.wikipedia.org/wiki/Embrace,_extend,_and_extinguish -[8]: https://coder.show/ -[9]: data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9JzI1MCcgd2lkdGg9Jzc1MCcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB2ZXJzaW9uPScxLjEnLz4= -[10]: https://news.itsfoss.com/microsoft-ese-open-source/ -[11]: data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9JzIwMCcgd2lkdGg9JzM1MCcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB2ZXJzaW9uPScxLjEnLz4= -[12]: https://i0.wp.com/news.itsfoss.com/wp-content/uploads/2021/02/ese-microsoft.jpg?fit=1200%2C675&ssl=1&resize=350%2C200 -[13]: https://news.itsfoss.com/is-google-locking-down-chrome/ -[14]: https://i0.wp.com/news.itsfoss.com/wp-content/uploads/2021/02/google-chrome.jpg?fit=1200%2C675&ssl=1&resize=350%2C200 -[15]: https://news.itsfoss.com/elementary-os-raspberry-pi-release/ -[16]: https://i2.wp.com/news.itsfoss.com/wp-content/uploads/2020/12/elementaryos-raspberry-pi-build.jpg?fit=800%2C450&ssl=1&resize=350%2C200 diff --git a/sources/talk/20210419 13 ways to get involved with your favorite open source project.md b/sources/talk/20210419 13 ways to get involved with your favorite open source project.md deleted file mode 100644 index 809d8c4319..0000000000 --- a/sources/talk/20210419 13 ways to get involved with your favorite open source project.md +++ /dev/null @@ -1,116 +0,0 @@ -[#]: subject: (13 ways to get involved with your favorite open source project) -[#]: via: (https://opensource.com/article/21/4/open-source-project-level) -[#]: author: (Mike Bursell https://opensource.com/users/mikecamel) -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) - -13 ways to get involved with your favorite open source project -====== -Apply GET/SET principles to connecting with open source projects. -![Looking at a map for career journey][1] - -Many of my [blog][2]'s readers already know lots about open source, but I'm also aware that many know little, if anything, about it. I'm a big, big proponent of open source software (and beyond, such as open hardware), and there are lots of great resources you can find to learn more about it. - -One very good starting point is the one you're now reading, Opensource.com. It's run by a bunch of brilliant people for the broader community by my current employer, Red Hat. (I should add a disclaimer that I'm not only employed by Red Hat but also a [Correspondent][3] at Opensource.com—a kind of frequent contributor/Elder Thing.) It has articles on pretty much every aspect of open source that you can imagine. - -I was thinking about APIs today (they're [in the news][4] as I'm writing this, after a US Supreme Court judgment on an argument between Google and Oracle), and it occurred to me that if I were interested in understanding how to interact with open source at the project level but didn't know much about it, then a quick guide might be useful. The same goes if I were involved in an open source project (e.g., [Enarx][5]) interested in attracting contributors (particularly techie contributors) who aren't already knowledgeable about open source. - -Given that most programmers will understand what GET and SET methods do (one reads data, the other writes data), I thought this might be a useful framework for considering engagement.[1][6] I'll start with GET, as that's how you're likely to be starting off—finding out more about the project—and then move to SET methods for getting involved with an open source project. - -This is far from an exhaustive list, but I hope that I've hit most of the key ways you're most likely to start getting involved or encouraging others to get involved. The order I've chosen reflects what I suspect is a fairly typical approach to finding out more about a project, particularly for those who aren't open source savvy already but, as they say, YMMV.[3][7] - -I've managed to stop myself from using Enarx (which I co-founded) as the sole source of examples and have tried to find a variety of projects to give you a taster. Disclaimer: their inclusion here does not mean that I am a user or contributor to the project, nor is it any guarantee of their open source credentials, code quality, up to date-ness, project maturity, or community health.[4][8] - -### GET methods - - * **Landing page:** The first encounter you have with a project will probably be its landing page. Some projects go for something basic, others apply more design, but you should be able to use this as the starting point for your adventures around the project. You'd generally hope to find links to various of the other resources listed below from the landing page. - * See [Sigstore][9]'s landing page. - * **Wiki:** In many cases, the project will have a wiki. This could be simple, or it could be complex. It may allow editing by anyone or only by a select band of contributors to the project, and its relevance as a source of truth may be impacted by how up to date it is. Still, the wiki is usually an excellent place to start. - * See the [Fedora Project][10] wiki. - * **Videos:** Some projects maintain a set of videos about their project. These may include introductions to the concepts, talking-head interviews with team members, conference sessions, demos, how-tos, and more. It's also worth looking for videos put up by contributors to the project but not necessarily officially owned by the project. - * See [Rust Language][11] videos. - * **Code of conduct:** Many projects insist that their project members follow a code of conduct to reduce harassment, reduce friction, and generally make the project a friendly, more inclusive, and more diverse place to be. - * See the [Linux kernel][12]'s CoC. - * **Binary downloads:** As projects get more mature, they may choose to provide precompiled binary downloads for users. More technically inclined users may choose to compile their own binaries from the codebase (see below), but binary downloads can be a quick way to try out a project and see whether it does what you want. - * See the binaries from [Chocolate Doom][13] (a Doom port). - * **Design documentation:** Without design documentation, it can be very difficult to get really into a project. (I've written about the [importance of architecture diagrams][14] before.) This documentation is likely to include everything from an API definition to complex use cases and threat models. - * See [Kubernetes][15]' design docs. - * **Codebase:** You've found out all you need to get going: It's time to look at the code! This may vary from a few lines to many thousands, include documentation in comments, or include test cases, but if the code is not there, then the project can't legitimately call itself open source. - * See [Rocket Rust web framework][16]'s code.[5][17] - * **Email/chat:** Most projects like to have a way for contributors to discuss matters asynchronously. The preferred medium varies among projects, but most will choose an email list, a chat server, or both. These are where to get to know other users and contributors, ask questions, celebrate successful compiles, and just hang out. - * See [Enarx chat][18]. - * **Meetups, videoconferences, calls, etc.:** Although in-person meetings are tricky for many at the moment (I'm writing as COVID-19 still reduces travel opportunities), having ways for community members and contributors to get together synchronously can be really helpful for everybody. Sometimes these are scheduled on a daily, weekly, or monthly basis; sometimes, they coincide with other, larger meetups, sometimes a project gets big enough to have its own meetups; sometimes, it's so big that there are meetups of subprojects or internal interest groups. - * See the [Linux Security Summit Europe][19]. - - - -### PUT methods - - * **Bug reports:** The first time many of us contribute anything substantive back to an open source project is when we file a bug report. Bug reports from new users can be really helpful for projects, as they not only expose bugs that may not already be known to the project, but they also give clues as to how actual users of the project are trying to use the code. If the project already publishes binary downloads (see above), you don't even need to compile the code to try it and submit a bug report. But bug reports related to compilation and build can also be extremely useful to the project. Sometimes, the mechanism for bug reporting also provides a way to ask more general questions about the project or to ask for new features. - * See the issues page for [exa][20] (a replacement for the _ls_ command). - * **Tests:** Once you've started using the project, another way to get involved (particularly once you start contributing code) can be to design and submit tests for how the project _ought_ to work. This can be a great way to unearth both your assumptions (and lack of knowledge!) about the project and the project's design assumptions (some of which may well be flawed). Tests are often part of the code repository, but not always. - * See [GNOME Shell][21]'s test repository. - * **Wiki:** A wiki can be a great way to contribute to the project, whether you're coding or not. Many projects don't have as much information available as they should, and that information may not be aimed at people coming to the project "fresh." If this is what you've done, then you're in a great position to write material that will help other "newbs" get into the project faster, as you'll know what would have helped you if it had been there. - * See the wiki for [Wine][22] (Windows Emulator for Linux). - * **Code:** Last but not least, you can write code. You may take hours, months, or years to get to this stage—or you may never reach it—but open source software is nothing without its code. If you've paid enough attention to the other steps, gotten involved in the community, understood what the project aims to do, and have the technical expertise (which you may well develop as you go!), then writing code may be the way you want to contribute. - * See [Enarx][23] (again). - - - -* * * - - 1. I did consider standard RESTful verbs—GET, PUT, POST, and DELETE—but that felt rather contrived.[2][24] - 2. And I don't like the idea of DELETE in this context! - 3. "Your Mileage May Vary," meaning, basically, that your experience may be different, and that's to be expected. - 4. That said, I do use lots of them! - 5. I included this one because I've spent _far_ too much of my time looking at this over the past few months… - - - -* * * - -_This article was originally published on [Alice, Eve, and Bob][25] and is reprinted with the author's permission._ - -Six non-code opportunities for contributing to open source software code and communities. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/21/4/open-source-project-level - -作者:[Mike Bursell][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/mikecamel -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/career_journey_road_gps_path_map_520.png?itok=PpL6jJgY (Looking at a map for career journey) -[2]: https://aliceevebob.com/ -[3]: https://opensource.com/correspondent-program -[4]: https://www.eff.org/deeplinks/2021/04/victory-fair-use-supreme-court-reverses-federal-circuit-oracle-v-google -[5]: https://enarx.dev/ -[6]: tmp.WF7h0s934j#1 -[7]: tmp.WF7h0s934j#3 -[8]: tmp.WF7h0s934j#4 -[9]: https://sigstore.dev/ -[10]: https://fedoraproject.org/wiki/Fedora_Project_Wiki -[11]: https://www.youtube.com/channel/UCaYhcUwRBNscFNUKTjgPFiA -[12]: https://www.kernel.org/doc/html/latest/process/code-of-conduct.html -[13]: https://www.chocolate-doom.org/wiki/index.php/Downloads -[14]: https://opensource.com/article/20/5/diagrams-documentation -[15]: https://kubernetes.io/docs/reference/ -[16]: https://github.com/SergioBenitez/Rocket/tree/v0.4 -[17]: tmp.WF7h0s934j#5 -[18]: https://chat.enarx.dev/ -[19]: https://events.linuxfoundation.org/linux-security-summit-europe/ -[20]: https://github.com/ogham/exa/issues -[21]: https://gitlab.gnome.org/GNOME/gnome-shell/tree/master/tests/interactive -[22]: https://wiki.winehq.org/Main_Page -[23]: https://github.com/enarx -[24]: tmp.WF7h0s934j#2 -[25]: https://aliceevebob.com/2021/04/06/get-set-methods-for-open-source-projects/ diff --git a/sources/talk/20210421 How to take your open source project to the next level.md b/sources/talk/20210421 How to take your open source project to the next level.md deleted file mode 100644 index 2a56c4c9f7..0000000000 --- a/sources/talk/20210421 How to take your open source project to the next level.md +++ /dev/null @@ -1,116 +0,0 @@ -[#]: subject: (How to take your open source project to the next level) -[#]: via: (https://opensource.com/article/21/4/open-source-saas) -[#]: author: (Stef Walter https://opensource.com/users/stefw) -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) - -How to take your open source project to the next level -====== -Merely releasing your SaaS's source code is not enough to make it open -source. -![Green graph of measurements][1] - -Open sourcing the code to your software as a service (SaaS) is not sufficient to make it actually be open source. Does that sound contradictory to you? Let me explain. - -Most services that espouse "open source" do so by simply throwing the code over the wall. It's better than nothing but really misses the point that powers open source: enabling users to make a change to the software they're using. - -Some other popular services powered by Open Source software, do include the tools used to operate/deploy their service. Pause for applause. - -But that’s also insufficient to actually enable users to become contributors effectively. - -Much of a service's value comes from things other than the code. It comes from the infrastructure it runs on, the operational processes, the monitoring, the backups, the metrics, the high availability, the scalability. It comes from data, from the network effect—with other users, with other interconnected services, with integrated tools, from legal agreements, and so on. - -Any non-toy service is not reproducible. - -Launching a clone of the service to contribute effectively is a high barrier. Certain kinds of contributions clearly are possible. But contributors are essentially asked to "fork" the non-code aspects of the service to iterate on their changes against their real-world use cases. - -What's more, without true open source principles, we are missing a way to have a community develop with a center of gravity around the service itself. This leads to companies forking the service in a way that typical open source projects with a true community are resilient to. - -I believe that if we enable contributions to services _rather than just the software_, we reap the advantages of true open source. That means enabling users to make a change to a running service and experience that change themselves. - -You still with me? - -Yes, that means opening a pull request against a running service and experiencing that change before it's merged. - -This is not as insane as it sounds. - -It appears that every technique we need to enable such a capability is already in use in modern deployment and operations methodology. We just have to connect the dots. - -### Why should I care? - -I've been part of open source for over 20 years now. Although I'm just one contributor, together, we've changed something fundamental about the world. Our lives are too short, and software is too complex to have one company or one individual invent everything from scratch. So, we work together across humanity to accomplish what no individual team could. This is our legacy, and it has become commonplace. - -And yet, there's a very simple principle that drives open source: - -> Open source thrives when it converts some -> small percentage of users into contributors. - -If you interrupt that principle, you starve open source. SaaS does just that: When someone else runs your software for you, the intuitive mechanisms for you to change that software are not available. - -![How users become contributors][2] - -(Source: Stef Walter, [CC-BY-SA][3]) - -"But," you may say, "if the source code for that running service was _open_, then I could still change it." - -Sure, you could change the code in some components. Still, for any reasonably complex service, you wouldn't be able to run your changes or experience your changes against real-world workflows, much less iterate on them, until they're good enough to share with others. - -In reality, the threat here is far more fundamental: Users of services cannot readily change something in the service, not only because the processes are operated by someone else but because they have explicitly chosen not to be involved in operating the software. - -If the primary way to use Postgres was "as a service," then that (fabulous) project would be starved for contributors. This is because the number of contributors in such a project is a function of some small percentage of users deciding to try to make change. - -As this mechanism for using SaaS takes over the world, the pool of users who can contribute to open source shrinks dramatically. - -For a long time, I saw this as a fundamental threat that would starve open source. I was unable to reconcile SaaS with a healthy open source ecosystem. - -But recently, I've become convinced that if we enable an effective contribution model on a service, one that doesn't require that the users become operators of the service, then we can reconcile this threat, and open source will thrive on services instead of being starved by them. - -### You want me to do what?!? - -To enable contributions by users of a service, users that have explicitly chosen not to operate the software themselves, we have to set up a process by which they can make a change to a running service and experience that change before others do. - -For example, a user of such a hypothetical service should be able to: - - 1. Discover which component of a service to contribute to - 2. Make a nonsensical change (like adding a printf-style log statement) or change the spelling of a word - 3. Experience that change when they use the service or when it acts on their data - - - -After discussing this with others, I firmly believe we have all the techniques we need, whether they're canary deployments, load balancing, continuous delivery, infrastructure as code, and so on. It's been hard to find a single problem that an existing practice doesn't solve. - -It turns out that many experienced engineering teams have come to that same conclusion. Rapid deployment of changes to services is a powerful capability that's highly sought after. For example, [GitHub deploys changes before they're merged][4]. Whereas [Facebook rapidly deploys changes][5] to a few canary machines and scales each change up to production. Everyone has their own version of continuous delivery. It's hard to take an engineering team seriously if they haven't figured out how their team members can get a change rapidly deployed. - -Open source has all the ingredients to have a decisive advantage here. To effectively collaborate on _open source services_, with contributors working across all of humanity.  - -Let's try to craft a playbook to achieve this basic capability that drives open source software and apply it to open source services: That is, the ability to change code and interact with that change… on a service. - -_Note: [Thanks to the reviewers of this article!][6]_ - -* * * - -_This originally appeared on [stef.thewalter.net][7] and is republished with the author's permission._ - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/21/4/open-source-saas - -作者:[Stef Walter][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/stefw -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/metrics_lead-steps-measure.png?itok=DG7rFZPk (Green graph of measurements) -[2]: https://opensource.com/sites/default/files/uploads/funneling-open-source-service.png (How users become contributors) -[3]: https://creativecommons.org/licenses/by-sa/4.0/ -[4]: https://github.blog/2015-06-02-deploying-branches-to-github-com/ -[5]: https://engineering.fb.com/2017/08/31/web/rapid-release-at-massive-scale/ -[6]: https://github.com/stefwalter/blog/pull/1 -[7]: http://stef.thewalter.net/open-source-services.html diff --git a/sources/talk/20210422 Energy infrastructure platform uses open source to fight climate change.md b/sources/talk/20210422 Energy infrastructure platform uses open source to fight climate change.md deleted file mode 100644 index 222722b89d..0000000000 --- a/sources/talk/20210422 Energy infrastructure platform uses open source to fight climate change.md +++ /dev/null @@ -1,74 +0,0 @@ -[#]: subject: (Energy infrastructure platform uses open source to fight climate change) -[#]: via: (https://opensource.com/article/21/4/seapath-open-energy-infrastructure) -[#]: author: (Dr. Shuli Goodman https://opensource.com/users/shuligoodman) -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) - -Energy infrastructure platform uses open source to fight climate change -====== -SEAPATH is a Linux Foundation project that aims to modernize the power -grid through an open energy infrastructure. -![Light bulb][1] - -LF Energy is a Linux Foundation project working to accelerate the energy transition of the world's grids and transportation systems through open source. In December, our project took a major step toward achieving its mission when we and our member organizations Alliander, RTE, and Savoir-faire Linux launched [SEAPATH][2], which stands for Software Enabled Automation Platform and Artifacts. - -SEAPATH is a reference design and a real-time, open source platform for grid operators to run virtualized automation and protection applications. It is the second project for LF Energy's [Digital Substation Automation Systems][3] initiative and a vital step toward adopting renewable energy on the power grid. It will accelerate the grid's decarbonization, helping lead the planet to [carbon neutrality by 2050][4]. Power system transformation [leads all efforts for decarbonization][5]; it's the _key_ enabler for fighting climate change. - -### Breaking down silos - -Coordinating power generation, distribution, and transmission systems is a critical component of a green grid. - -Currently, the grid's infrastructure operates on a centralized, point-to-point framework, requiring a source like a gas- or coal-fired power plant to distribute electricity. Essentially, the grid was built on a foundation of silos with different systems for energy generation, transmission, and distribution. However, due to the high variability of renewable energy—power can be produced only when the sun shines or the wind blows—it's difficult to integrate clean energy sources into siloed systems. The [increasing use of electric vehicles][6] is also causing power supply and demand fluctuations. - -These challenges make it difficult for grid operators to control and optimize renewable sources of energy. Furthermore, the grid's infrastructure isn't sustainable for a clean energy future. In fact, the grid of the future will not be a grid at all. Rather, power system networks will process tsunamis of data that enable the orchestration, choreography, and coordination of energy supply and demand. The future energy framework will operate like the internet, digitally connecting thousands of power systems and processing data from their substations to generate, transmit, and distribute electricity. - -### Interoperability through open source - -In working toward clean energy integration, grid operators use digital substations, which require a growing number of computational devices to support field sensors, applications, and automation technologies. - -Typically, these components are provided by multiple proprietary solutions, making interoperability difficult due to redundant hardware requirements. This challenge largely correlates with vendor lock-in throughout the energy industry. US regulators allow utility companies to sign [50-plus year contracts][7] that secure their place in specified regions. As a result, utilities use proprietary solutions for their portion of the grid, making interoperability between substations difficult. In March 2021, we launched [FledgePOWER][8], a new project that seeks to address this problem. - -Solutions do not always share the same specifications, but they often handle similar data. Implementing new solutions is costly, creates technical debt, and is time-consuming. To manage these heterogeneous environments, operators tend to run deprecated legacy systems for decades. With the speed of change increasing, network operations have become increasingly complex, less flexible, and more expensive to operate. Being able to abstract this complexity offers system and network operators new tools for interoperability in a rapidly transforming environment. - -SEAPATH's goal is similar to the Linux Foundation's [OpenDaylight project][9], an open source initiative that catapulted software virtualization for telecommunication networks and set the industry standard for software-defined network infrastructure. SEAPATH aims to apply the same technology OpenDaylight uses to consolidate multi-provider systems on the grid into one platform. This aims to enable operators to digitally implement electricity distribution and transmission through data from their substations. This consolidation also supports time- and cost-efficiency, scalability, flexibility, innovation, and novel technology implementations and merging utility practices. - -Through cross-industry collaboration with SEAPATH, the energy sector can build customer- and vendor-agnostic virtualization technologies required by a modern, climate-conscious grid. The more flexible and scalable the grid can be for greener energy, the faster we can reach decarbonization. - -### How to get involved with SEAPATH - -If you are interested in learning more about SEAPATH or joining the project, here's how you can get involved: - - * **Learn about SEAPATH:** Check out LF Energy's [SEAPATH project page][2] to learn more about the initiative. We have a technical steering committee (TSC), a mailing list, open meetings, a wiki feed, and a roadmap that can help answer any questions you may have about the project. - * **Use SEAPATH:** To access SEAPATH, you must be a member of LF Energy. Organizations can join by [becoming a member][10]. LF Energy is funded through membership dues and contributions of engineering resources. Once registered, you can access SEAPATH on its [GitHub page][11]. If you can't join as an LF Energy member, we still encourage you to contribute by participating in technical projects and discussion lists. - - - -Time is running out for the energy industry to come together and improve the grid for our future. By joining as partners, the entire energy industry—and the entire world—can benefit from a grid powered by green energy for a brighter future. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/21/4/seapath-open-energy-infrastructure - -作者:[Dr. Shuli Goodman][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/shuligoodman -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/bulb-light-energy-power-idea.png?itok=zTEEmTZB (Light bulb) -[2]: https://www.lfenergy.org/projects/seapath/ -[3]: https://wiki.lfenergy.org/display/HOME/Digital+Substation+Automation+Systems+%28DSAS%29+Initiative -[4]: https://grist.org/climate/yes-the-u-s-can-go-carbon-neutral-by-2050-says-new-princeton-study/ -[5]: https://e360.yale.edu/features/deep-decarbonization-a-realistic-way-forward-on-climate-change -[6]: https://www.iea.org/reports/global-ev-outlook-2020 -[7]: https://apnews.com/article/7393a2dd5c69f590a8e7db3d19f1e240 -[8]: https://www.lfenergy.org/projects/fledgepower/ -[9]: https://opensource.com/business/14/10/opendaylight-helium-gets-out-gate -[10]: https://www.lfenergy.org/join/ -[11]: https://github.com/seapath diff --git a/sources/talk/20210423 Sustainable economic development begins with open thinking.md b/sources/talk/20210423 Sustainable economic development begins with open thinking.md deleted file mode 100644 index 73e1154810..0000000000 --- a/sources/talk/20210423 Sustainable economic development begins with open thinking.md +++ /dev/null @@ -1,124 +0,0 @@ -[#]: subject: (Sustainable economic development begins with open thinking) -[#]: via: (https://opensource.com/open-organization/21/3/sustainable-development-environment) -[#]: author: (Ron McFarland https://opensource.com/users/ron-mcfarland) -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) - -Sustainable economic development begins with open thinking -====== -Do our global development practices respect planetary boundaries? -Greater transparency could provide insight. -![2 cents penny money currency][1] - -To be successful, open organizations must have specific purposes, address achievable goals, perform clear tasks, effectively evaluate the results of their work, and introduce countermeasures or revisions to their operations. [Open organization principles][2] serve vital functions throughout this process. - -This is true no matter the scale of the problem an open organization confronts. In this three part review of [_The Age of Sustainable Development_][3] by Jeffrey Sachs, I'll examine an issue with global scope—sustainable economic development—to demonstrate how thinking openly can help us address global issues. - -Specifically, in this article I'll discuss the important role of _transparency_ in assessing environmental damage and destruction some economic development programs can cause, and I'll explain how the principle of transparency also helps us think about specific actions we can take to combat destructive forces. In the next article, I will discuss human suffering on a global scale—here again stressing transparency. And in the third and last article, I will bring both these concerns together and discuss global governance. That is where we'll recognize the importance of open organization principles for making progress on these issues. - -One more note: All these articles address extremely complex subjects. So at the end of each, I'll share a video presentation offering additional explanation. I'll start that discussion by introducing what I call the Open Organization Principles Loop, so you can visualize how these principles can be applied to sustainable global economic development issues. - -Simply put, letting [open principles][2] guide our work creating sustainable, global economic development will help: - - * Make global, environmental and human suffering problems **transparent** - * Form and unite organizations/**communities** at the local (not only global) level to tackle those problems - * Start **collaboration** within and between communities to find detailed, local solutions - * Recruit and **include** members globally to gain broad perspectives on how to achieve goals - * **Adapt** strategies to each region globally and in each local community - - - -All this starts with exposing specific problems and making them vividly transparent. Once exposed, these problems must be broadly presented and made _immediately personal_ to every individual. - -This is the discussion I hope to start in this article on global environmental issues. - -The earth has what we might call "planetary boundaries." Respecting these boundaries means being prosperous, socially inclusive, and environmentally responsible. - -### Stressing planetary boundaries - -In a previous article entitled "[Climate challenges call for open solutions][4]," I discussed only the issue of carbon-free power generation, particularly through fourth-generation nuclear power plants that are now being developed. But reading Sach's book, _The Age of Sustainable Development_, made me realize that energy generation through nuclear power plants is an approach _too narrow_ to address the massive climate challenges the world faces (the phrase "climate challenge" might _itself_ be too narrow). "Sustainable economic development" might be a better phrase to describe what should be our most pressing concern, of which climate change is only _one_ component issue. When we use the term "sustainable," we're referring to methods that effectively avoid driving something or some species to extinction—including humankind. It is the conservation of living and mineral resources in ways that continue to make life on earth economically viable. - -Sachs' book suggests a wide range of strategies on detailed concerns that could move the global society toward sustainable economic development. I will quickly review them and explain where open organization principles can play a role. - -The earth has what we might call "[planetary boundaries][5]": it can only support life to the extent that life forms respect these boundaries. They are the foundations of ecosystems like forests and fisheries, for example. Respecting these boundaries means being prosperous, socially inclusive, and environmentally responsible. - -We must monitor and manage our relationships with these planetary boundaries globally. Here are at least nine boundaries: - - 1. **Climate change**: This is directly related to [greenhouse gases][6] (GHGs). - 2. **Ocean acidification**: Rising acidity threatens various marine life. - 3. **Stratospheric ozone depletion**: Evidence suggests a direct link to skin cancers and other disorders. - 4. **Biogeochemical flow boundaries (Nitrogen Cycle/Phosphorus Cycle)**: Chemical fertilizers are required for high crop yield, but their runoff negatively impacts the surrounding environment. - 5. **Global freshwater use and water scarcity**: Groundwater is declining worldwide while demand is growing with population growth. - 6. **Land degradation**: Deforestation is a major problem, as forests withdraw CO2 in the atmosphere and are the habitat of many species. - 7. **Biodiversity loss**: We depend on biodiversity for our food supply, for our safety from many natural hazards like flooding, industry/construction material supply, freshwater and combating pests and pathogens. - 8. **Atmospheric aerosol loading**: Simply put, smog causes problems like life-threatening lung disease. - 9. **Chemical pollution**: Petrochemical production, steel production, and mining processes put deadly pollutants into their surrounding environments. - - - -Sachs indicates that humans have stressed these boundaries in major areas around the globe, and earth's natural system can't cope with that pressure. Sachs believes that during this century human beings will stress all nine boundaries in critically dangerous ways, unless dedicated organizations and communities are formed to establish projects that execute on reversing them. - -### Why can't we just save the world? - -It's difficult to convince people of environmental importance and to assemble organizations, communities, neighborhoods and resources to execute action plans. Sachs cites six primary reasons for this: - - 1. **Global problems.** No single actor can take charge to get things started and organizing on a global scale is extremely difficult. - 2. **Short-term special interests groups.** Many parties have competing goals, and no one is [speaking for the planet][7]. - 3. **Impact timeframe.** The greatest impact will be on those not born yet. - 4. **Current economic structure.** The solutions might be incompatible with the current economic structure. But, its damage to the environment must be exposed and a new sustainable economic structure technically developed to replace it. - 5. **Pace of change.** The impact is not visible on a daily, weekly, or even monthly basis. - 6. **Complexity.** Environmental issues are caused by many human activities, not just one. - - - -Reviewing these six characteristics, we see that getting solutions adopted globally requires a powerful sales job. But applying open organization principles can be significantly helpful, particularly making the problems as transparent as possible on a global scale. - -Both globally and locally, communities can't continue with their current modes of economic development—not if they want to respect planetary boundaries. Business as usual, Sachs stresses, will destroy us all. - -As I mentioned earlier, Sachs notes that generally addressing sustainable development directly is too vague and unhelpful. The challenge must be broken down into detailed projects and tasks for each region and community on the planet. Here are some specific examples of initiatives that are important but could vary by region: - - 1. Building/home energy use reduction - 2. Environmentally friendly transportation - 3. Secure food production to reach demand - 4. Clean/efficient electrical power generation, storage and distribution - 5. Environmentally friendly urban designing - 6. Ocean biodiversity protection - 7. Plant biodiversity protection - 8. Wildlife biodiversity protection - 9. Air pollution & the CO2 reduction - 10. Freshwater supply to satisfy future demand - - - -### The cost of doing nothing - -Both globally and locally, communities can't continue with their current modes of economic development—not if they want to respect planetary boundaries. Business as usual, Sachs stresses, will destroy us all. - -At the start of this discussion, I mentioned the importance of transparency and the need to expose the environmental damage that many human economic activities cause. Information and communication technology specialists will become increasingly central to these transparency efforts, as they can effectively and cost efficiently use automated data gathering, analytics, telecommunications, and other technologies to help increase transparency. (Wondering how you might do this? Why not [ask our community][8]?) - -In the next article, I will attempt to make vividly transparent the impact of unsustainable development practices on human inequality and suffering at a global level. Armed with a full understanding of both these challenges, in my last article in this series, I'll present global governance to tackle them. In that governance all open organization principles will play vital roles. - --------------------------------------------------------------------------------- - -via: https://opensource.com/open-organization/21/3/sustainable-development-environment - -作者:[Ron McFarland][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/ron-mcfarland -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/Medical%20Costs%20Transparency_1.jpg?itok=CkZ_J88m (2 cents penny money currency) -[2]: https://theopenorganization.org/definition/ -[3]: https://www.goodreads.com/book/show/23215948-the-age-of-sustainable-development -[4]: https://opensource.com/open-organization/19/10/global-energy-climate-challenges -[5]: http://www.igbp.net/news/features/features/aplanetontheedge.5.1b8ae20512db692f2a680003122.html -[6]: https://en.wikipedia.org/wiki/Greenhouse_gas#/media/File:Global_GHG_Emissions_by_Sector_2016.png -[7]: https://opensource.com/open-organization/19/10/open-platform-greenpeace -[8]: http://theopenorganization.community diff --git a/sources/talk/20210502 15 unusual paths to tech.md b/sources/talk/20210502 15 unusual paths to tech.md deleted file mode 100644 index 1fd0f98266..0000000000 --- a/sources/talk/20210502 15 unusual paths to tech.md +++ /dev/null @@ -1,92 +0,0 @@ -[#]: subject: (15 unusual paths to tech) -[#]: via: (https://opensource.com/article/21/5/unusual-tech-career-paths) -[#]: author: (Jen Wike Huger https://opensource.com/users/jen-wike) -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) - -15 unusual paths to tech -====== -Our past lives can be exciting and funny. Here are some surprising ways -folks have made their way to open source. -![Looking at a map for career journey][1] - -The lives we led before we arrived where we are now sometimes feel like a distant land full of memories we can't quite recall. And sometimes we have lived experiences that we'll just never forget. Many times those experiences teach us and help us appreciate where we are today. We may even wish for those days as we recount our past lives. - -What did you do before tech? Tell us in the comments. - -I did **janitorial work** in the university cafeteria after it closed every day, and I got extra pay cleaning it up after live gigs held there (which happened about 4 times a year). We started to clean up for the following morning after the venue was vacated about 4 am, and had to get it cleaned and set up for opening the following morning at 7 am. That was fun. I worked summers in a livestock mart in the West of Ireland, running the office, keeping the account books, minding the cash that came through. I also had stints as a barman, lecturer, and TA at a local university while I was a post-grad, and once spent a few days stocking a ship with boxes of frozen fish in a Dutch port. —[Dave Neary][2] - -I was a **musician** in the Marine Corps, but being a bassoonist in the Corps means that you're mostly playing bass drum. After burning out, I changed to data comms for my second enlistment. —Waldo - -My last job before tech was as **a papermaker at a hi-speed newsprint plant** around 1990-1998. I loved this job, working with huge machines and a nice product. I did a lot of jobs from clamp lift driver to planner shipments abroad and back to production. What led me to tech was a program at the paper mill; they had a budget for everyone to get a PC. Honestly, for me, it was super vague what purpose that would serve me. But not long after I got into web design with a colleague, I became a hardcore XHTML and CSS frontend developer with the help of my PC. —[Ben Van 't Ende][3] - -I worked at McDonald's through high school and college. In summers, I also worked at **a few factory jobs, a screw and bolt factory,** where I got to drive a forklift (which is heaven for an 18-year-old). I also worked at a plastics factory, eventually on the shipping deck. My first tech job was in 1982 for Westwood Family Dentistry. This was a large, mall dentistry chain and they were paying me to write their front desk software and billing software on [MP/M-based][4] PCs from Televideo. If you ever watched the movie "War Games," these are the terminals Mathew Broderick used. This was prior to Microsoft releasing MS-DOS. The code was written in Cobol. —[Daniel Walsh][5] - -I was a **sound engineer recording audiobooks** for visually impaired people. There was a global project to set up a new global standard and move to digital recordings which became the DAISY standard and system. After that, I moved to the IT department in the company I worked for. —[Jimmy Sjölund ][6] - -Before tech, I was working in **public relations** at an agency that specialized in high tech, scientific, and research clients. I convinced the agency to start working with online information, and my first project in that arena was creating a weekly intelligence report for the Semiconductor Industry Association, based on posts in newsgroups like comp.arch and comp.realtime. When the World Wide Web (yes, that's how everyone referred to it at the time) began becoming more well-known one of my PR clients (a lawyer for tech startups) asked me if I knew how it worked. I did (and told him so), and he hired me to create his firm's website. The site, for Womble, Carlyle, Sandridge & Rice, was the first law firm website in North Carolina. A few more requests in the same vein later, I'd shifted my focus to online-only, leading to 20+ year career in web strategy. —[Gina Likins ][7] - -I graduated in humanities in 1978 and started to teach human geography at Milan University while working as a **map editor** at Touring Club Italiano, at the time the largest map publisher in Italy. I soon realized that a career in geography was good for the mind but bad for the wallet, so I moved to a Swedish company, Atlas Copco, as house organ editor. Thanks to a very open-minded manager, I learned an awful lot in term of marketing communications, so after a couple of years I decided that it was time to challenge my skills in real marketing, and I was hired by Honeywell Information Systems, at the time second only to IBM in the information technology market. Although I was hired to manage marketing communications of PC compatible printers, after six months I was promoted to European Marketing Director, and after a couple of years, I become Corporate VP of Peripherals Marketing. In 1987, I moved to real PR at SCR (now Weber Shandwick), then Burson Marsteller, and then Manning Selvage & Lee. In 1992, I started my own PR agency, which was acquired by Fleishman-Hillard in 1998. In 2003, I left Fleishman-Hillard as Senior VP of Technology Communications, to start a freelancing career. While looking at the tools for the trade, I stumbled on OpenOffice, and at age 50 I eventually entered the FOSS community as a volunteer handling marketing and PR (of course). In 2010, at age 56, I was one of the founders of the LibreOffice project, and I am still enjoying the fun here (and in several other places, such as OSI, OASIS, and LibreItalia). — -[Italo Vignoli ][8] - -Right after college at age 23, I had a job where I went to hot zones around the US wherever there were **toxic spills or man-made chemical disasters**. So I visited some real cesspools in America full of death and misery and lived there for months at a time. I was there to support the investigators of the Agency for Toxic Substances and Disease Registry and the Center for Disease Control by editing the interviews they collected for clarity and sending them to the home office in Atlanta by modem. That job extended in technical responsibility with every new place they sent me off to, but it was awesome! I was 100% focused on being a toxicologist by that point. So after that, I got a job as a network analyst for the University of Buffalo medical school so I could get discounted tuition to attend the med school. I even taught medical computing to other 25-year-olds my age and saw my future in med technology. But after a year I realized I couldn't do eight more years of university. I didn't even like most doctors I had to work with. The scientists (PhDs) were awesome but the MDs were pretty mean to me. That's when my boss said to me that my true passion was hacking and he thought I was good at it. I told him he was crazy and that medicine was the future, not security. Then he quit, and I didn't like my new boss even more so I quit. I then got an offer to help start IBM's new Ethical Hacking service called eSecurity. And that's how I became a professional hacker. —[Pete Herzog][9] - -I was always in information technology, it's just that the technology evolved. When I was still in elementary school, I delivered newspapers, which I would argue to be information produced by information technology. In high school, I continued that but eventually was fetching and storing data from the "stacks" at the local library (as well as doing lookups, working with punch cards, etc: Our books had punch cards for return by dates. So, when someone checked out a book, we would use a microfilm (or was it a microfiche?) camera to photograph the book description card, and a punch card which would then be inserted into the book's pocket. Upon return, the punch cards were removed and stacked to be sent through a card sorter, that -- presumably -- would do something about any cards missing from the sequence. (We weren't privy to the sorter or any computer that might have been attached. The branch would pack up the punch cards and send them to the main library.) As mentioned in a previous article for OpenSource.com, I was introduced to my first computer in high school. I had a job as a graveyard shift computer operator at a local hospital, mounting the tapes, running the backups, running batch jobs that printed reports on five-part carbon -- which left me with a deep-seated hatred for line-printers -- and then delivering those reports throughout the hospital -- kind of like being a newspaper delivery boy again. Then, college, where I ended up being the operator / "sys admin" (well, that last is a bit of a stretch, but not much) of a Data General Nova 3. And finally, onto an internship as a coder that, like Zonker T. Harris, I never left. —[Kevin Cole][10] - -Probably the most surprising jobs I had before working in free and open source software (FOSS) were: - - * Political organizer working on state-level campaigns for marriage equality, a higher minimum wage and increased transparency in state government - * Local music promoter, booking and promoting shows with noise bands, experimental acts and heavy rock, etc - * Cocktail waitress/bouncer/spotlight operator at a drag bar, whatever they needed that night - - - -—[Deb Nicholson][11] - -I never had a job in tech but was a neurologist. After going through the extended initiation of learning Linux, installing it on various machines, I then used it in my practice. I used to have my own computer in the office, running Linux, in addition to the office's system. As far as I know, I was the only doctor to carry around a laptop while on rounds in the hospital. There I kept my patient list, their diagnoses, and which days I visited them, all in a Postgres database. I would then submit my lists and charges for the day to the office from this database. With the hospital's wifi, I had access to the electronic data and lab results also. I would do EMGs (electromyography) and for a while used TeX to generate the reports, but later found that Scribus worked better, with some basic information contained in a file. I would then type out the final report myself. I could have a patient go straight to his doctor's office after the test, carrying a final report with him. To facilitate this, once I found that we had some space set aside for us doctors on the hospital's server, I could install Scribus there for various uses. When I saw a patient who needed one or more prescriptions, I wrote a little Python script to make use of Avery labels, which I would then paste on a prescription blank and sign. Without a doubt, I had the most legible prescriptions you would ever see from a doctor. Patients would tell me later when they went to the pharmacy, the pharmacist would look at the prescription and say, "What's this?!". If I was doing this for a hospitalized patient, this meant I could make an extra copy and take it to the office to put in the patient's chart also. While we still had paper charts in the hospital (used for doctors' notes) I made a mock-up of a physicians' notes and orders page in Scribus with Python, and when I saw a patient, I would enter my notes there, then print out on a blank sheet with the necessary holes to fit in the chart. These pages were complete with the barcode for the page type and also the barcode for the patient's hospital number, generated with that Python script. After an experience of waiting a week or two for my office dictation to come back so I could sign it, I started typing my own office notes, starting with typing notes as I talked to the patient, then once they were gone, typing out a letter to go to the referring physician. So I did have a job in tech, so to speak, because I made it so. —[Greg Pittman][12] - -I started my career as a journalist covering the European tech sector while living in London after grad school. I was still desperate to be a journalist despite the writing on that profession's wall. I didn't care which beat I covered, I just wanted to write. It ended up being the perfect way to learn about technology: I didn't need to be the expert, I just had to find the right experts and ask the right questions. The more I learned, the more curious I became. I eventually realized that I wanted to stop writing about tech companies and start joining them. Nearly nine years later, here I am. —[Lauren Maffeo][13] - -Well, that degree in English Literature and Theology didn't really set me up for a career in computing, so my first job was *supposed *to be teaching (or training to be a teacher in) English for 11-18-year-olds. I suppose my first real job was working at the Claremont Vaults in Weston-super-mare. It was a real dive, at the wrong end of the seafront, was smoke-filled at all times (I had to shower and wash my hair as soon as I got home every night), and had 3 sets of clientele: - - * The underage kids. In the UK, this meant 16 and 17-year-olds pretending to be 18. They were generally little trouble, and we'd ask them to leave if it was too obvious they were too young. They'd generally shrug and go onto the next pub. - * The truckers. Bizarrely (to 18-year-old me, anyway), the nicest folks we had there. Never any trouble, paid-up, didn't get too smashed, played a lot of Country on the jukebox. - * The OAPs (Old-Age Pensioners). Thursday night was the worst, as pensions (in those days) were paid on Thursdays, so the OAPs would make their way down the hill to the nearest post office, get their pension, and then head to the pub to get absolutely ratted. They'd get drunk, abusive, and unpleasant, and Thursdays were always the shift to try to avoid. I don't miss it, but it was an education for an entitled, privately-educated boarding-school boy with little clue about the real world! - - - -—[Mike Bursell][14] - -In no particular order: **proofreader, radio station disk jockey,** bookkeeper, archaeology shovelbum, reactor operator, welder, apartment maintenance and security, rent-to-own collections, electrician's helper, sunroom construction... and I'm definitely missing a few. The question isn't so much "what led me to tech" as "what kept me from it," the answer is insufficient personal connections and money. My entire life was leading me to tech, it was just a long, rocky, stumbling road to get there. I might never have gotten there, if I hadn't gotten an injury on the construction job serious enough to warrant six months of light duty—the company decided to have me come into the office and "I don't know, make copies or something" rather than just paying me to sit at home, and I parlayed that into an opportunity to make myself absolutely indispensable and turned it into a job as the company's first Information Technology Manager. It's probably worth noting that the actual conversion to IT Manager didn't just happen because I made myself indispensable—it also happened because I literally cornered the CEO a week prior to me going back out into the field to build sunrooms, and made a passionate case for why it would be an enormous waste to do that. Lucky for me, that particular CEO appreciated aggressive ambition, and promptly gave me a raise and a job title. —[Jim Salter][15] - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/21/5/unusual-tech-career-paths - -作者:[Jen Wike Huger][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/jen-wike -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/career_journey_road_gps_path_map_520.png?itok=PpL6jJgY (Looking at a map for career journey) -[2]: https://opensource.com/users/dneary -[3]: https://opensource.com/users/benvantende -[4]: https://en.wikipedia.org/wiki/MP/M -[5]: https://opensource.com/users/rhatdan -[6]: https://opensource.com/users/jimmysjolund -[7]: https://opensource.com/users/lintqueen -[8]: https://opensource.com/users/italovignoli -[9]: https://opensource.com/users/peteherzog -[10]: https://opensource.com/users/kjcole -[11]: https://opensource.com/users/eximious -[12]: https://opensource.com/users/greg-p -[13]: https://opensource.com/users/lmaffeo -[14]: https://opensource.com/users/mikecamel -[15]: https://opensource.com/users/jim-salter diff --git a/sources/talk/20210506 Optimal flow- Building open organizations where leaders can emerge.md b/sources/talk/20210506 Optimal flow- Building open organizations where leaders can emerge.md deleted file mode 100644 index e9073ee7b8..0000000000 --- a/sources/talk/20210506 Optimal flow- Building open organizations where leaders can emerge.md +++ /dev/null @@ -1,122 +0,0 @@ -[#]: subject: (Optimal flow: Building open organizations where leaders can emerge) -[#]: via: (https://opensource.com/open-organization/21/5/optimal-flow-open-leaders) -[#]: author: (Jos Groen https://opensource.com/users/jos-groen) -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) - -Optimal flow: Building open organizations where leaders can emerge -====== -To create innovative and engaged organizations, you'll need to set the -conditions for open leaders to thrive. This checklist can help. -![Arrows moving across a landscape][1] - -Previously in this series on open organizations and talent management, I’ve discussed the importance of [cultivating an organization’s open leaders][2] by getting out of their way and letting them flourish. As someone invested in developing your organization’s next generation of leaders, know that your goal here isn’t to be entirely “hands off”; instead, your goal is to spend time building the systems and processes that help new leaders find their footing and unleash their passion. The truth is that leadership talent rarely develops on its own. - -Building these systems and processes is critical during your open organization’s _hybrid phase_. In this article, I’ll discuss what that means and why it’s so important. I’ll also offer a few crucial questions you should be asking yourself as you nurture talent during this phase of your organization’s transformation. - -### A breeding ground for leadership talent - -Conventional organizations don’t become [open organizations][3] over night. They _evolve_ into open organizations. That means your organization will never be _entirely closed_ or _entirely open_; it will exist in a state of transition. [This is the organization’s _hybrid_ state.][4] - -As [I’ve said before][2], during an organization’s hybrid phase, “you’ll encounter periods in which traditional and open practices operate side by side, even mixed and shuffled.” This can be a challenge. But it can also be an opportunity. - -This hybrid situation is especially critical, because it’s the time when your vision and approach to leadership talent development determine the success of the transformation to a more open organization (and the speed at which you achieve that success). It’s the breeding ground of your new organizational culture. - -So your focus on vision and strategy is key here. You’ll need to create the principles and preconditions for a psychologically safe environment, one with permeable boundaries that allow talent to flow. - -Here are some steps you might take to do this. - -### Think flow - -First of all, get to know your own purpose, strengths, and passions. And do this not just “in your head,” with [your heart and gut intelligence][5], too. In this way, leaders can explore their own compass and intuitive power from within. What do I intrinsically like and dislike? - -You’ll need to create the principles and preconditions for a psychologically safe environment, one with permeable boundaries that allow talent to flow. - -Then imagine ways you can ensure a successful flow of talent throughout your organization. Consider various leadership development stages and map those stages to the areas and positions inside your organization where leadership talent might develop step by step. - -Ultimately, to create opportunities for your emerging leaders, you’re trying to connect knowledge from various areas—people, market, business, financial control and the “me” in that field. So if you are able to put them in these positions or in projects where these areas interconnect, you’ll achieve optimal flow. - -This will involve some key questions like: - - * How will leadership talent contribute to the success of the organization? - * What kind of balance between managers and leaders are you aiming for? - * Does your organization currently have enough leadership coaches and mentors available to help? - - - -Don’t forget to tap mentors outside your pool of existing managers. Managers tend to train other managers; leaders tend to train other leaders. By “leaders,” I mean those employees who assume inclusiveness and trust, who recognize the qualities of colleagues that make them so successful, and who share responsibility. Leaders support responsible people in making and implementing decisions. Leaders want to make themselves superfluous. - -### The safety to learn - -When thinking about talent development, know that you will need to provide a safe environment for emerging leaders to practice and learn. This way, talented employees can gain crucial experience. Failure is a great learning tool and a powerful part of this experience. But to be able to fail, people must feel there is a safety net—that is, that they can fail safely. - -As you work through your organization’s hybrid period, ask: - - * What resources do you need to create a safe environment for growth - * How will you know that you’ve created that environment? - - - -### Working through tensions - -You’ll experience tension during your organization’s hybrid period, as various parts of the organization (and various stakeholders) embrace change at their own paces. While some employees—especially your emerging leaders—will be pushing forward, others in the organization may not yet be ready for change that rapidly. As a result, you might observe insufficient willingness to invest in talent, in preparation, and in the guidance these emerging leaders need. - -So ask yourself: - - * Is the organization prepared to invest in up-and-coming leaders? - * Do you actually know how talented employees are prepared for their futures in your organization? - - - -### The space to practice - -Leadership talent must be given time and space to practice; this will lay the foundation for their success. For example, you might offer highly skilled and motivated employees an opportunity to present to the board, or even to a group of colleagues. Or you can give potential leaders a consulting role on the board. Have them prepare and chair important meetings. Have them research and prepare reports. - -Nothing is more important than teaching them to dig deeper into a subject they’re responsible for. - -Nothing is more important than teaching them to dig deeper into a subject they’re responsible for. You can also think about giving them a significant project or task that will introduce them to some aspects of leadership and collaboration. - -So ask yourself: - - * How can I create opportunities for my emerging leaders to gain visibility? - * How can I better understand what my younger leaders care about? - - - -### Model what you seek - -Leadership talent develops through collaboration. So make sure you’re available as a coach and mentor for emerging leaders in your organization. This is the best way to see precisely what future leaders are capable of and learn whether they have the capacity to stretch even further. Don’t limit the support you offer them to some training and perhaps a bit of external coaching. Offer these yourself. Teach your leadership talent how they can begin to stand on their own—and, yes, to fail on their own, too. Share the experiences that have shaped you as a leader, and offer your own insights into the aspects of the business you find most compelling. In short, help them gain the skills they need to create their own thriving teams, even when that means making their own presence less important or even unnecessary. A passionate and committed leader takes the time to do this. Great leaders create other leaders! - -So ask yourself: - - * What exemplary behavior can I provide so that emerging leaders might learn from it? - * How can I be available to answer questions openly at all levels of awareness for the talent? - * What insights can I offer that are essential for further development? - * How can I personally support leaders as they develop their skills? - * What does the talent need from me to develop further? - - - -In my next article, I’ll address leadership talent in various locations in your organization—at the top, in the middle management, and on the ground. - --------------------------------------------------------------------------------- - -via: https://opensource.com/open-organization/21/5/optimal-flow-open-leaders - -作者:[Jos Groen][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/jos-groen -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/BUSINESS_opennature2-a.png?itok=UfPGAl5Q (Arrows moving across a landscape) -[2]: https://opensource.com/open-organization/21/3/open-spaces-leadership-talent -[3]: https://theopenorganization.org/definition/ -[4]: https://opensource.com/open-organization/20/6/organization-everyone-deserves -[5]: https://opensource.com/open-organization/21/4/open-leadership-listen-heart diff --git a/sources/talk/20210507 6 examples of open source best practices in knowledge-sharing projects.md b/sources/talk/20210507 6 examples of open source best practices in knowledge-sharing projects.md deleted file mode 100644 index e473e47bc4..0000000000 --- a/sources/talk/20210507 6 examples of open source best practices in knowledge-sharing projects.md +++ /dev/null @@ -1,112 +0,0 @@ -[#]: subject: (6 examples of open source best practices in knowledge-sharing projects) -[#]: via: (https://opensource.com/article/21/5/open-source-knowledge-sharing) -[#]: author: (Deb Bryant https://opensource.com/users/debbryant) -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) - -6 examples of open source best practices in knowledge-sharing projects -====== -Compare how six different knowledge-sharing communities approach -gathering, maintaining, and distributing their best practices. -![Practicing empathy][1] - -As someone who has watched my fair share of projects and initiatives come and go, I value the follow-on effects of good knowledge sharing. Even knowledge from bygone projects is available to learn from the past; such is the benefit and the curse of an internet that never forgets—all the practices good, no-longer-good, and never-were-good are out there to be found. - -As the head of Red Hat's [Open Source Program Office][2] (OSPO), I both appreciate and benefit from the myriad ways different communities create and share knowledge about open source. - -The very effort of creating open source software is a massive knowledge-sharing experience, covering all the domains of software development with many methods and practices. Although there is rarely only one way to achieve a goal, open source communities have, over time, honed their knowledge into best practices as a natural byproduct of the open collaboration and transparency passed on within their respective communities. - -But what about best practices that span communities, which are useful beyond the unique needs of a single project and broadly applicable to any and all open source software efforts? I'll look at six different knowledge-sharing communities that take six approaches to gathering, maintaining, and distributing their best practices. - -### TODO Group - -The TODO Group creates and maintains a set of [Open Source Guides][3] to support any organization developing an OSPO. An OSPO is a central program office working on a range of activities for the organization, defined by the organization's mission and open source interactions. It may be involved in license compliance, open source development practices, upstream community management, fostering internal community, facilitating relationships with foundations and standards bodies, and so forth. - -The best practices in these guides are to help organizations implement and run an effective OSPO. By collaborating within the TODO Group, the member OSPOs can raise their own knowledge while bringing up the collective knowledge of other OSPOs inside and outside of the TODO Group. Just as spreading good software development practices can help projects interoperate better, this raises the tide for all OSPOs for mutual benefit. - -The guides cover creating a new open source program. Featured topics include program management best practices such as using code, participating in existing communities, recruiting open source developers, and starting, running, and shutting down a project. - -These guides are examples of the benefits of knowledge sharing around a niche collaboration on tools and best practices. They provide guidance and assurance around a process-driven approach to open source software development as influenced by an open source program or projects office in all types of organizations. - -### OSI - -As part of expanding its education programs, the Open Source Initiative (OSI) has partnered with Brandeis University's Graduate Professional Studies and introduced a new [Open Source Technology Management][4] program. (Full disclosure: I'm a current OSI Board member.) This program's goal is to meet the growing demand for expertise from organizations seeking to professionalize their open source activities, from strategic planning to operational governance, and authentically collaborate and manage open source resources. - -In a series of four-week online microcourses, participants learn more about a range of topics, including how open source communities operate, how an organization might integrate with them, how communities develop software openly, and how businesses might embrace open source. - -The program is shaped by input from leading open source content experts and provides four learning options that align with each participant's lifestyle and learning style. A person can participate in a single microcourse or take several to earn a digital badge or certificate. These courses include content that students will find immediately useful in their work alongside material that supports graduate studies, should the student choose to complete an additional assessment for graduate-level credit. - -This is an example of a knowledge-sharing experience that combines several goals, from professional to academic pursuits. - -### IEEE SA OPEN - -The Institute of Electrical and Electronics Engineers goes back to 1884; in the intervening 137 years, IEEE has grown to be the world's largest technical professional society. Such societies are a pinnacle of knowledge-sharing communities, and IEEE's remit as a standards-developing organization overlaps with computer science and thus, open source software. - -The new [IEEE SA OPEN][5] program, launched in 2020, is a collaboration platform to "bridge the gap between standards developers and other open technical communities." One of its key tools is a 100% open source Git forge that is being expanded to embed knowledge directly and automatically into its processes. - -The documentation includes guidance from specific advisory groups, such as community, marketing, technical, academic, and diversity and inclusion. These advisory groups create a collaborative body of documentation and processes, which are then rolled out to be available for all projects on the SA OPEN platform. - -Not only does this documentation provide a list of needs for an open source project when starting, such as a governance framework, a code of conduct, and a contribution policy, the SA OPEN platform team plans to automate the creation and lifecycle of these documents for each project. This is done using an extensible open source platform that can be coded to embody "the IEEE way" of doing open source development. - -This knowledge-sharing method works by distilling the world of best practices and toolchains into a single set of solutions that can align with the long-horizon efforts of an organization like IEEE. - -### The Open Source Way - -Built around a collaborative-writing approach, the Open Source Way community considers itself to encompass all open source software projects, focusing on best practices for community architecture, design, and management. In this broad area, the community's real-world practitioners provide the core practices around what to do, how to do it, and especially why to do things the open source way. - -The Open Source Way community began in 2010 around the idea of a handbook written by practitioners, for practitioners. The core material was born at Red Hat from a need to record in one place the advice writers had been repeating to hundreds and thousands of people over the previous decade. It was released as an open source project, as it was self-evident that content about practicing the open source way needed to be written and published in an open source manner. For a few years, the handbook and wiki were locations where open source community management practitioners collaborated. - -The recently announced [2.0 guidebook][6] is a complete overhaul from the 1.0 guide of 2010, reflecting the evolution of open source software development over more than a decade. The guidebook works on the principle that "the path to creating a sustainable open source community starts by making something useful for the user base while lowering barriers to participation and contribution." It includes chapters on communication, diversity and inclusion, participant motivation, the nature and methods of a contribution, onboarding, governance, community roles, and community manager self-care. - -In addition to being a resource for community members of all types looking to improve their participation and contribution practices, the Open Source Way provides an overall community of practice that supports individual and organizational improvement. - -As a knowledge-sharing community, the Open Source Way project covers best practices within a broad range of how communities are created and thrive from the perspective of a much wider group of authors and contributors than other similar material and books. - -### Teaching Open Source - -The organizing principle of the [Teaching Open Source][7] (TOS) community is that for college-level educators to be most effective at teaching how to participate in open source communities, they should benefit from direct experience and connection to those communities. Via workshops and other programs, the TOS community brings instructors and professors into direct connection with open source software projects as part of the mission to "(bridge) the gap between traditional computing curricula and student work in open source communities." - -Once instructors are connected with projects, they facilitate students conducting classwork assignments as project contributions. For example, an upper-division programming class might have student assignments that include working on modules for a specific open source project. A lower-division writing class might have students research and write a friendly description for the release notes of a single feature for an upcoming release of open source software. - -The body of knowledge in the Teaching Open Source community has been organized around "teachers helping teachers." One popular workshop is the Professors' Open Source Software Experience (POSSE), a multiday hands-on workshop that teaches open source participation techniques to instructors. The TOS community creates the workshop materials and all the pedagogy around it out of its community of practice. - -This knowledge-sharing community exemplifies how a focused open source best-practices effort can provide a lot of value in a comparatively narrow niche. - -### The Open Organization - -Another example of a community blending open source best practices and knowledge sharing in a specified domain is the [Open Organization][8] project. This community works specifically at the intersection of open principles and organizational culture and design, "leading a global conversation about the ways open principles change how people work, manage, and lead." The Open Organization community is always asking: How can we adapt open principles and practices to all kinds of organizational contexts, so everyone can tap the benefits of living and working openly? - -In its own way, this community's origin story parallels that of the Linux kernel. The Open Organization community formed when former Red Hat CEO Jim Whitehurst published [_The Open Organization: Igniting Passion and Performance_][9], which concluded with a short invitation to continue the conversation about "how we can all lead and work better in the future." For several years since that founding moment, the community has focused its efforts on writing [several books and guides][10] that extend Jim's original writing, including a field guide, open leadership manual, workbook, and guides for distributed teamwork, IT culture change, and educators. The books feature chapters written by authors in different industries and geographic regions, bringing a diverse range of voices and experiences to this global conversation. - -As an open source knowledge-sharing community, the Open Organization project stands out for its focus on purposefully written and published books covering the breadth and depth of what it means to practice open principles in any kind of organization. - -### Conclusion - -These six knowledge-sharing projects demonstrate one of the wondrous things about open source software: bringing different approaches to similar but different problems. As these practice-oriented communities focus on the power of collaboration, they generate creative content out of the experiences and voices in their domain. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/21/5/open-source-knowledge-sharing - -作者:[Deb Bryant][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/debbryant -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/practicing-empathy.jpg?itok=-A7fj6NF (Practicing empathy) -[2]: https://www.redhat.com/en/about/open-source-program-office -[3]: https://todogroup.org/guides/ -[4]: https://opensource.org/ostm -[5]: https://saopen.ieee.org/ -[6]: https://lists.theopensourceway.org/archives/list/announce@theopensourceway.org/message/IDH3UEJW2MNJA5MGAKLXINWVTL2JGFJM/ -[7]: http://teachingopensource.org/ -[8]: https://theopenorganization.org/ -[9]: https://www.redhat.com/en/explore/the-open-organization-book -[10]: https://theopenorganization.org/books/ diff --git a/sources/talk/20210509 My first tech job- 8 stories from the community.md b/sources/talk/20210509 My first tech job- 8 stories from the community.md deleted file mode 100644 index 222b8ae4d7..0000000000 --- a/sources/talk/20210509 My first tech job- 8 stories from the community.md +++ /dev/null @@ -1,58 +0,0 @@ -[#]: subject: (My first tech job: 8 stories from the community) -[#]: via: (https://opensource.com/article/21/4/my-first-tech-job) -[#]: author: (Jen Wike Huger https://opensource.com/users/jen-wike) -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) - -My first tech job: 8 stories from the community -====== -Folks share what job led to their career in tech. -![Selfcare, calm routine][1] - -Riffing on the topic of what unusual jobs people had before tech, a few of our responses from the community were more focused on jobs that *led *to a job in tech. - -These eight authors shared their experiences. Share yours in the comments. - -* * * - -While getting a degree in English and Anthropology, I formatted and laser-printed my resume using a text editor on the big mainframe at my college, because it made my resume look extra fancy. That fancy resume landed me my first job as a technical writer for financial services. Then, I went back to school and got a degree in folklore. Realizing that a folklore degree was just a license to beg for a living, I opted to go back into technical writing, but for IT at a pharmaceutical company. That led to a career in usability and user experience before the term "user experience" was coined. For extra spice, I then took a hiatus from computers to homeschool for 15 years (all grades, all subjects, K-12), which was an education in and of itself. Eventually, the kids grew up, and I needed a job. **Red Hat decided that my patchwork career was just what my department needed.** That was six years ago. I not very techie by Red Hat standards, but none of my non-tech friends actually understand my job, so maybe I'm a techie after all? —[Ingrid Towey][2] - -I've always been technically minded, when I was a kid I would take things apart, and usually put them back together. I repaired various appliances, the VCR, and other audio equipment. I also learned to program BASIC on our Atari 400 home computer (circa 1982). In college, I was initially working on a bachelor's degree in Geography but continued to play around with computers and added a minor in Computer Science. I worked in a grocery store until I switched to being a computer lab assistant in college. This is where I based my first Opensource.com article. While still in college, I built custom computers at several different small companies. **After college, I moved to the DC area and began doing government IT work.** —[Alan Formy-Duval][3] - -I worked in education. I taught ESL and then was at MIT OpenCourseWare for several years. I was already interested in open licensing at that point, and the power it had to help people. At OCW, I spent time faced with the technical limitations of our work, and how not everyone we wanted to reach had access to the infrastructure they need to learn what they want to learn. **I moved into tech in response to those concerns.** —[Molly de Blanc][4] - -My last job before getting into tech was as a retail employee at the Rubbermaid store in the mall. Prior to that, I'd been a short-order cook. **I landed my first tech job "because you know [Microsoft] Word" as an intern in the IT department** of a company that, several years later, ended up hiring me as a help desk technician full time when I graduated from college. All of this, despite getting a degree in music. —[Chris Collins][5] - -I was a physics student during university, and my first paid internship was taking thin-film x-ray diffraction data at a national lab. I spent most of my days feeding samples into an x-ray diffractometer, which gathers data you can use to calculate the crystalline structure of the samples. My goal throughout my university career was to go into physics research. The next year, grant funding mostly dried up, and I wasn't able to find another lab internship. But I knew computer programming, and a friend pointed me to a paid internship at a small company, doing code cleanup and writing small audit utilities. I really liked working there and got along very well with the IT folks. **When I graduated with my BS, they offered me a job in the IT department, managing Unix servers.** —[Jim Hall][6] - -I made my living playing the French horn for five years. I did tech stuff as a hobby with geeky friends in music school using Linux, Python, etc, mostly for amusement. Most of those friends found their way into tech jobs soon after completing their music degrees. Eventually, a couple of them offered to pay me to do part-time work, which sounded fun and was a nice way to hedge my bets against the thin job security of the performing arts. I loved the work, and after five years of balancing a full-time music career and a nearly full-time freelance tech career, **I got an offer I couldn't refuse and took a salaried job in tech.** Working "only" Monday-Friday felt like I was on vacation all the time. I miss performing, which is an experience unlike any other, but I am thrilled with my career path in tech and would not change a thing. Of that group of friends from music school, several work at Red Hat, several at Google, one at SAS, and a smattering of other places. —[Michael Hrivnak][7] - -Before university, I studied for a year in a US high school and kept in touch with relatives at home through email at a time when only military and higher education had access to the internet. I went on to learn about environmental protection at the university back at home. Of course, I wanted to get an email address ASAP. First, I was refused because first-year students don't get one. When I insisted, I got an email address and was also invited to work at the faculty IT group. **The rest is history: I have two non-IT degrees but ended up working as a sysadmin, QA engineer, and later with open source communities. **—[Peter Czanik][8] - -I worked as a financial manager for a political consulting company in Boston, and I worked on a number of campaigns before going to grad school in Michigan. That led to being a professor of economics, and **from there to IT as I worked at incorporating computer technology into my teaching methods.** I was successful enough at it to become the Faculty Development Officer, responsible for training all of my colleagues. —[Kevin O'Brien][9] - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/21/4/my-first-tech-job - -作者:[Jen Wike Huger][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/jen-wike -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/meditate_zen_wfh_outside_family_selfcare_520.png?itok=qoSXLqRw (Selfcare, calm routine) -[2]: https://opensource.com/users/i-towey -[3]: https://opensource.com/users/alanfdoss -[4]: https://opensource.com/users/mollydb -[5]: https://opensource.com/users/clcollins -[6]: https://opensource.com/users/jim-hall -[7]: https://opensource.com/users/mhrivnak -[8]: https://opensource.com/users/czanik -[9]: https://opensource.com/users/ahuka diff --git a/sources/talk/20210522 17 true stories about switching to Linux.md、 b/sources/talk/20210522 17 true stories about switching to Linux.md、 deleted file mode 100644 index adeb51ed02..0000000000 --- a/sources/talk/20210522 17 true stories about switching to Linux.md、 +++ /dev/null @@ -1,92 +0,0 @@ -[#]: subject: (17 true stories about switching to Linux) -[#]: via: (https://opensource.com/article/21/5/switch-to-linux) -[#]: author: (Jen Wike Huger https://opensource.com/users/jen-wike) -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) - -17 true stories about switching to Linux -====== -There are many reasons people start using Linux, but few turn back once -they begin. -![Linux keys on the keyboard for a desktop computer][1] - -It's been 30 years since Linus Torvalds created Linux, way back in 1991, as a free alternative to Unix. In that time, it's grown from a niche project to a powerful, widely used operating system that [sustains much of what's essential][2] in modern computing—the cloud, the Internet of Things, supercomputers, the devices that kept students learning during a global pandemic, and much, much more. The Linux community is a passionate, dedicated, and effective advocate for the operating system in all its iterations, and that enthusiasm has translated into steadily increasing adoption.  - -There are many reasons and ways people come to Linux, but once they get here, most never turn back to the proprietary systems where they started. So we asked Opensource.com contributors to tell us how they began their tech journey with Linux. Their responses are a diverse and powerful testament about why Linux has withstood the test of time, continuously improving and gaining fans around the world. - -* * * - -"Curiosity sparked my earliest explorations with Linux. I came to realize very early that Linux can be used in so many ways that support the education of students and teachers whom I worked with every day. Linux and open source software leveled the playing field for many of my students and library patrons. Linux extended the life of hardware platforms that became obsolete by the design of proprietary operating systems. It is a gift that keeps giving every day." —[Don Watkins][3] - -"My Linux journey started during my first year at university [in Budapest] in 1994. There was no Gmail or Hotmail at that time; even most of the teachers did not have an email address. Students could apply for one only in their second year. I just arrived back from my high school year in the United States, where I used email, so I wanted to have an email address as soon as I arrived at the university. After a week of asking, I got an email address and an invitation to participate in the faculty–student IT group. The main server was Novell NetWare, and there was a FreeBSD box for experimenting. My task was to install the faculty's first Linux server. For a few months, it was experimental for other members of the group, but soon it became a production server. I really enjoyed learning it while doing it. And once I got a stronger machine at home, I also started using Linux on my desktop too, next to Windows. In '96 I became familiar with SUSE Linux 4.3 and, ever since, SUSE and later openSUSE have been my main OS on the desktop." —[Peter Czanik][4] - -"In the ancient times, I owned an Apple IIe. What I didn't like was that Apple seemed to give not quite enough hardware to do what I needed. Furthermore, it was, and still is, a 'closed shop,' where Apple tightly controls not only the software but the hardware it runs on. (All about profits.) The next step was the appearance of GUI environments, and I decided to buy an Amiga and was very happy with it. It actually allowed you to do some things, and you could get lots of free support. Well, we know what happened to Amigas. So then, remaining in my Apple-aversion state (which I continue to this day), I bought a Windows machine... Ohhhhhhh, what a letdown—everything was like a black box. It either worked or didn't and you had no clue as to why. So at this point, I was searching around BBSes and computer magazines and ran across Linux. It didn't take long before I told myself, 'I can do this!' I sent for my Red Hat Linux CDs and I was off and running. I think my first Red Hat Linux was 5.1 or something like that. I still recall the joy I had when I first got X to work properly. It's been computer heaven ever since. I started out with dual-boot setups, partly because of the many driver issues with Linux and various hardware. I'd search around with Windows to find the driver, save it to floppy, then reboot to Linux to install. But it wasn't long before I just bought a new Windows machine and blew away Windows to install Linux." —[Greg Pittman][5] - -"I was in high school with a guy named Matt, who was a year ahead of me. We hung out a lot in the electronic music lab, and he also got me hooked up with a gig as a student sysadmin for the campus VAX/VMS and Unix servers. One day, Matt tipped me off to a new Minix alternative circulating on Usenet, and I spent rather too much time getting GCC to build it on my shiny new 386 PC. Unlike Minix, this kernel could legally be distributed in electronic source (and even compiled binary) form, so you didn't have to type it all in from a textbook. We lost touch after he graduated, but Matt went on to lead the Linux Documentation Project and wrote the first edition of _Running Linux_, which has pride of place on my lab bookshelf today, next to my K&R." —[Jeremy Stanley][6] - -"I discovered open source as a concept through Creative Commons. Recognizing them as philosophical relatives, I soon discovered that many of the tools I used (e.g., GIMP, Firefox, Audacity) were open source, and you could use an open source operating system. This was scary, but Windows Vista was generally acting up while I was in grad school. Ubuntu's WUBI installer overcame my hesitation to try Linux, and I found myself using it by default. Eventually, Windows hid the Ubuntu install, but the Linux community helped me recover my files, leading me to abandon Windows as my primary OS more than 10 years ago now." —[Kyle R. Conway][7] - -"For me, my exposure came from being a poor college kid who couldn't afford a Windows license. I also worked in a bookstore and had a nice discount on Red Hat Linux 5.2. I used it for a little while and then branched out to try various other distributions: Debian, Slackware, and even FreeBSD wouldn't install for one reason or another. I found Gentoo Linux in its 1.0 to 1.2 timeframe which finally worked correctly with my network card (the 'it works with everything' 3Com 3c509 adapter). From there I became a developer, maintaining several packages for the distribution until my retirement in 2007. I certainly would not be where I am today if it were not for that discounted Red Hat Linux 5.2, and who could have thought that some 20 years later, I would be working at the very same Red Hat?" —[Lisa Seelye][8] - -"For me, it was a virus in Windows Vista (the whole thing was a virus, to be honest), and my good fortune of acquiring an Ubuntu image around the same time, not really knowing much about Linux or FOSS at all. After figuring out how to install it, I found the experience was excellent: super-fast and completely intuitive for the default programs. So I liked it from an end-user point of view from the off. Then I delved deeper into this thing called 'open source,' started to understand the utility of free software, and have been a supporter ever since." —[Laurence Urhegyi][9] - -"I'd been a DOS user since the 1980s, so I didn't mind the command line. When I went to university in 1990, I discovered our Unix lab in the computer science department, and I managed to get an account. Coming from the DOS world, I found Unix pretty easy to pick up. Many of the commands were the same or similar, and Unix provided much more powerful tools like awk and grep and sed. In 1993, I started looking around for something to replace MS-DOS. While I still loved DOS and was at home with the DOS applications, I wanted the power of a Unix system. I asked around on a discussion board system called Usenet, and someone suggested this new thing called Linux. It was a Unix-like operating system, but it could run on my '386 computer. I paid someone $99 to send me the floppies to install SoftLanding Systems Linux 1.03. It worked great. The tagline 'Gentle Touchdowns for DOS Bailouts' proved true, as the installer was very DOS-like. Linux felt just like the big Unix systems in the campus lab, but I could run it on my home computer. And even better, I was able to dual-boot with MS-DOS, so I could still boot back to DOS to run my word processor or spreadsheet. (Linux didn't have many applications in 1993, so I still needed to boot back to DOS to run some things.) I've also shared my [Linux origin story][10] and my history with [SLS Linux][11] on Opensource.com." —[Jim Hall][12] - -"I worked in IT at a university, so Linux was around. But it was like all my other relationships at the time—I messed around with it for fun and exploring but made no real commitment. When IBM started a new service called eSecurity (which was one of the first, major ethical hacking services), I got a spot on the first team for EMEA (Europe, Middle East, and Africa). When I arrived, they handed me a 486DX laptop (still have it but, no, it doesn't work). Apparently, the department was way underfunded. It was old even then, and the only thing it could run well was Linux. It also happened to be the OS I needed to do my job as a hacker, so I installed Red Hat and ran with it. Back then we had a saying, 'Linux was made by hackers to be the playground for hackers.' We meant this in a really positive way too. And I still strongly believe you can't work successfully in network security if you don't run Linux." —[Pete Herzog][13] - -"It has been so long that I sometimes find it hard to imagine I actually switched from something else. Back in 1996, I'd heard about Linux but never had spare hardware I could run it on. At work, we used a mix of Mac, Unix, and Windows. Then, at the 1996 WWDC, I got an MkLinux CD off Apple that would install on my 601 PowerPC-based Mac at work. The whole idea of having a personal 'Unix-like' workstation was too cool, so I persuaded my boss to let me try it out and never looked back. Within a year, we had Linux and FreeBSD running regularly and the main Office server had migrated off Unix onto a Dell box running Red Hat Linux." —[Steven Ellis][14] - -"I switched (the first time) when I went from being a test engineer at IBM to a full-time Java developer at a startup way back in the first internet bubble. It was so much easier to code on at the time. I had to switch back several years later (mostly because I was required to use Windows on the fed contract, AND because WOW had just come out, and it didn't play nice with Wine at the time). I never stopped using it on servers, mind you—that IS how I make a living after all." —[Kevin Sonney][15] - -"I've always been a 'power user' in that I like to tweak my software (and hardware—my desktops have always been self-assembled). I used DOS, then Win 3.1 (sparingly), then with Windows 95, I used the GUI more and more. During this time, when I could scrape up enough cash, I'd get more RAM or that 486 with a co-processor or whatever. Usually, the hardware upgrades would cause blue screens and a reinstall. Also, as things would gunk up and slow down, I usually ended up reinstalling everything every six months or so. In my ignorance, I thought this was annoying but normal. I continued this pattern through Windows 2000. Then, when Windows XP was released, I realized that I would have to ask Microsoft for permission (through the new activation 'feature') for my hardware upgrades and cleanup reinstalls. That was the final straw. In 2005, I got a set of Fedora discs, wiped Win2000 off my machine—cold turkey, and never looked back. There were tweaky troubles back in the day getting some hardware to run, but I no longer needed to reinstall for _any_ hardware change! And the computer ran just as well two years later as it did when I installed it! So, I got out of the habit of continual reinstalls, although, these days when I occasionally do a fresh install, it's a 20-minute ordeal instead of the weekend-long process it was with Windows! I started with Fedora with GNOME. Later, I switched to KDE because I liked the look of it. Then when KDE4 broke things I depended on, I tried out Ubuntu. I used that until the Unity debacle, at which point I switched to Linux Mint. That's where I'm at today, and I couldn't be happier!" —[Lee Carpenter][16] - -"So I ended up on Linux because I was an annoying teenager. OK, perhaps that requires a bit more explanation. A family friend was a Windows/DOS administrator, and I was always bugging him for how to do different things on my computer. For a while, he was helpful but at a certain point I overwhelmed his desire to be helpful and he started to get rather annoyed with me constantly bugging him about obscure and abstract things that I was trying to do. His solution was to go to a co-worker who was a FreeBSD admin and ask that guy to set up a system for me. His thought process was that since he didn't know anything about FreeBSD, he couldn't help me when I had questions. However, the FreeBSD admin realized that he did not want to become my tech support either, so he installed Slackware. A few weeks later, I was given a system with Slackware on it. I was told how to use the `man` command and then, 'Good luck and have fun.' From that point on, it was just my curiosity of what is this weird 'Linux' thing I was given, how does it work, and what can I do with it." —JT  - -"In the mid-'90s, I was an Amiga user. I worked on DOS and Windows, but my personal machines were Amigas. When I went back to school for a degree, I had to learn and work with C, so I bought one of the Amiga compilers but found that it was not readily compatible with the Sun systems at school. Someone at school informed me about Linux, so I got a laptop to use it with, picked my distro, and ordered Slackware CDs (because it sounded neat). I've been a Linux user ever since. (Still like the Amigas when I'm in a retro mood, though.) If I recall, it took me a few days of manually editing modelines to get X working on that old Compaq Armada, but it worked!" —Murph - -"As I will always remember, I never switched but was pushed to Linux, no options given nor available, at my first job. It used it only once or twice during academics before getting into my first employment; I knew little about what the Linux-based OS looked like. Though I was fond of C/C++ from my academic time, I only practiced it on Windows XP using Turbo C. It took me a lot of time and learning to get the bare basics, but I am forever happy to have been pushed to Linux." —[Abhishek Tamrakar][17] - -"I think I was rebel or divergent all my life. I hate the lack of alternatives. When I met OS/2, I switched to it—but it didn't take long. After I met Linux, I felt like I found my missing piece." —[Hüseyin GÜÇ][18] - -"I'm a smidgin disappointed that no one says, 'I pine for the days of Minix-1.1, when men were men and wrote their own device drivers. I was finding it frustrating that everything worked in Minix,' or similar harkening back to the [initial announcement][19]. For me, my only real exposure to computers growing up was as an undergrad in university labs (Vax) playing CircleMUD and doing assigned work for various classes in basic Fortran and C, Apple IIes in my high school 'computer lab,' and my own trusty Spectrum 128K +2 that I had at home. My conversion to Linux happened when I was a college postgrad student in 1997, struggling to get some C code inherited from a prior project that I needed for my research project running on Windows. Someone suggested using the Solaris servers in the lab. The code built the first time, and before I knew it my Windows was mostly xterms and emacs windows running on a Hummingbird XServer. Another student told me it would be easier for me just to run Linux and helped me install (IIRC) Red Hat Linux 5.1 off a _Linux for Dummies_ cover CD. Something about being on my hands and knees trying to read the chipset on my network card, so I could recompile the kernel to get Ethernet working, and being told that if I got my XFree386 config wrong I could burn out my monitor, seemed attractive to me." —[Dave Neary][20] - -* * * - -What led you to switch to Linux? Please share your experience in the comments! - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/21/5/switch-to-linux - -作者:[Jen Wike Huger][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/jen-wike -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/linux_keyboard_desktop.png?itok=I2nGw78_ (Linux keys on the keyboard for a desktop computer) -[2]: https://opensource.com/article/19/4/top-moments-linux-history -[3]: https://opensource.com/users/don-watkins -[4]: https://opensource.com/users/czanik -[5]: https://opensource.com/users/greg-p -[6]: https://opensource.com/users/fungi -[7]: https://opensource.com/users/kreyc -[8]: https://opensource.com/users/lisa -[9]: https://opensource.com/users/laurence-urhegyi -[10]: https://opensource.com/article/17/5/how-i-got-started-linux-jim-hall-freedos -[11]: https://opensource.com/article/17/8/linux-anniversary -[12]: https://opensource.com/users/jim-hall -[13]: https://opensource.com/users/peteherzog -[14]: https://opensource.com/users/steven-ellis -[15]: https://opensource.com/users/ksonney -[16]: https://opensource.com/users/carpie -[17]: https://opensource.com/users/tamrakar -[18]: https://opensource.com/users/hguc -[19]: https://static.lwn.net/2001/0823/a/lt-release.php3 -[20]: https://opensource.com/users/dneary diff --git a/sources/talk/20210527 How Linux made a school pandemic-ready.md b/sources/talk/20210527 How Linux made a school pandemic-ready.md deleted file mode 100644 index e974eac128..0000000000 --- a/sources/talk/20210527 How Linux made a school pandemic-ready.md +++ /dev/null @@ -1,75 +0,0 @@ -[#]: subject: (How Linux made a school pandemic-ready) -[#]: via: (https://opensource.com/article/21/5/linux-school-servers) -[#]: author: (Don Watkins https://opensource.com/users/don-watkins) -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) - -How Linux made a school pandemic-ready -====== -By going all-in on Linux, teacher Robert Maynord ensured his school was -ready for remote learning—even before it needed to be. -![Digital images of a computer desktop][1] - -More than 20 years ago, when [Robert Maynord][2] started teaching at [Immaculate Heart of Mary School][3] in Monona, Wisconsin, the school had only eight functioning computers, all running Windows 95. Through his expertise in and enthusiasm for Linux and open source software, Robert has transformed the school community, its faculty, and its students, who are in kindergarten to eighth grade. - -"In those early years, it quickly became apparent that paying license fees to Microsoft for each computer, in addition to purchasing all the software to install, was absurd when the computer itself was only worth $20," says Robert. So he began installing Linux on the school's computers. - -Robert holds a PhD in education with an emphasis on technology for twice-exceptional children. I was eager to learn more about him and his work, so I asked for the opportunity to interview him. The following email conversation has been edited slightly for grammar and clarity. - -**Don Watkins: What got you interested in Linux?** - -**Robert Maynord**: My first experiences with computers involved an Amiga 1000, which I used to edit videos and create a four-color magazine. I was always amused by my Apple Mac friends who bragged about having the new orange screens when I was working with 1,024 colors. The [Amiga was a gaming machine][4], and the community reflected an open, exploratory attitude with people making parts and programs in garages and selling them in small quantities through the mail. When the Amiga was no longer available and Linux was becoming more popular, it was the next logical step for me—for philosophical reasons more than financial concerns—to enter the world of open source technology. - -A few years later, I was working in several schools as a consultant, repairing non-working machines and modifying Macs so that they could communicate with Windows computers. I was hired by one of the schools to teach computers and get their lab working. They had eight Windows 95 machines, and three of them worked. Their budget was essentially zero. I acquired a few donated machines from a local non-profit and soon discovered that the operating systems and software would cost far more than what the old computers were worth. At this point, I fully committed to the world of Linux—the only possible way to get our school up and running. - -**DW: What first steps did you take?** - -**RM**: My first steps involved experimenting with various distributions, including Debian and Red Hat. This was pre-RHEL and pre-Fedora. Linux required a significant amount of work to be made useful on our diverse, recycled machines. When the school finally dropped their dial-up modems and began to use Ethernet cards, it was a substantial improvement. The advent of multiple distributions over time greatly added to the overall usability of Linux, especially when the desktop user interface improved. After 2005, we began to look more closely at the emerging Ubuntu distribution because its rapid growth in popularity and the distributions built on it meant that installation on a diversity of machines was more predictable. - -**DW: How has using Linux and open source benefited the school, other than lowering the total cost of ownership?** - -**RM**: The school has greatly benefited from using Linux and open source systems because it has allowed a closer integration of technology with the daily needs of classroom teachers and administration. When a new system or implementation is needed, we do not contract with an outside service provider; we can do almost everything in-house. For example, when we needed online video interaction with our distance-learning students because of COVID-19, I set up a [BigBlueButton server that integrated well with Moodle][5]. Another example is our phone system. The phones are all digital, connecting through a CAT-6A network. They communicate to our trunk and outside lines through a FreePBX server running Linux. The wiring, phone setup, and server setup were all done internally, and if there is a problem, it is solved quickly, with no "service call" required. - -It is also important to emphasize that, as a school, we collect a large amount of data on students and teachers. We are in full charge of the ownership of this data, and it is not turned over to Google or any other large data-mining companies. This places the school in much closer agreement to the spirit of COPPA (Children's Online Privacy Protection Act), allowing us to shield students from being tracked, and preventing any permanent long-term profile from being built from their activities. Since we work with K-8 children, this consistent protection of their privacy remains central and essential. - -**DW: What hardware are you using as servers? Where do you get them?** - -**RM**: We are currently using a range of servers, some being custom-built for us by a local computer shop. Several of our servers are older, donated by corporate recycling programs, but a few of them are newer with SSD drives. In general, we have maintained the stance of using less-expensive hardware rather than making large investments every three years. We are a small parochial school with around 200 students, and so our budget is defined accordingly. However, we are receiving a large amount of funding in the near future from federal COVID Relief Funds. This funding will allow us to replace dated netbooks and other hardware. About half of our netbooks are Acer C720Ps, and half are Dell 3189s. All the netbooks run GalliumOS and have a full suite of programs, including [Epoptes][6], where teachers can directly monitor students' use of time. In addition to desktops, teachers all have Dell E6420 laptops with cameras so that synchronous online students can be video connected throughout the day. On the smaller size of the hardware spectrum, we are implementing Linux-based Raspberry Pi computers for the students to learn game emulation, robot construction, and programming or coding. - -**DW: What whiteboard software are you using with Linux?** - -**RM**: We have evolved through several whiteboard systems, including Promethean and Smart. However, the delay in upgrades for those systems proved to be too discouraging for the teachers. At this point, most of our teachers simply use an Ubuntu desktop on their whiteboards, controlled with a wireless mouse and keyboard. Since the whiteboards have the same [Nextcloud][7] local folders on the desktops, teachers can prepare their presentations on their laptops or desktops and have them immediately available on the whiteboards. - -In addition to the projector-based whiteboards, we have one Clevertouch board for use in the library. The Clevertouch board is a touch screen and Linux compatible, displaying a Linux desktop. Dell also has a selection of Linux-compatible touch screens, which we are considering. When mounted on portable supports, touch screens have the advantage of being movable throughout the classroom. - -**DW: What are the advantages of using open source software for instruction as opposed to proprietary software?** - -**RM**: Far and away, the most important benefit of using open source software is that both teachers and students are learning technological skills in a broad framework, rather than narrowly based on brand names and marketing strategies. We all remember the days when a teacher, when asked about using a computer, would respond, "I took a workshop in Word." Then there were the days when the Oregon Trail was the cutting edge of educational instruction. Both students and teachers benefit greatly when they learn that there are many different browsers rather than just "the internet." Likewise, there are very important reasons to know about Duck Duck Go and Brave, rather than defaulting to "search Google." - -**DW: What advantages do your students and faculty have as a result of using open source software?** - -**RM**: Because we use open source software, we have the singular advantage of addressing technology directly as skilled users with students and faculty and not simply as consumers. Technology is clearly a central, integrated part of our world, essential to how we live, and we each carry the responsibility for how it is used. We can and should be much more than passive consumers. Just like all aspects of life, technology has issues of ethics and justice that we must struggle with for the good of all. To do less would be to abdicate our responsibility to society. I know of at least two schools that have recently "retired" their computer teachers in favor of a complete turnover of school-related technology to Google Classrooms. In other words, students will be taught that Google Docs is synonymous with computing. This is, in my opinion, a terrible loss. The schools have abdicated their responsibility for a broad education, replacing it with "convenience." Hopefully, over time, educators will realize the importance and advantage of a technologically well-educated population for society as a whole. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/21/5/linux-school-servers - -作者:[Don Watkins][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/don-watkins -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/computer_desk_home_laptop_browser.png?itok=Y3UVpY0l (Digital images of a computer desktop) -[2]: https://twitter.com/robertmaynord -[3]: https://www.ihmcatholicschool.org/ -[4]: https://opensource.com/article/19/3/amiga-raspberry-pi -[5]: https://opensource.com/article/21/3/moodle-plugins -[6]: https://epoptes.org/ -[7]: https://nextcloud.com/ diff --git a/sources/talk/20210621 Why transparency is critical to your open source project-s security.md b/sources/talk/20210621 Why transparency is critical to your open source project-s security.md deleted file mode 100644 index 1a0f806da7..0000000000 --- a/sources/talk/20210621 Why transparency is critical to your open source project-s security.md +++ /dev/null @@ -1,82 +0,0 @@ -[#]: subject: (Why transparency is critical to your open source project's security) -[#]: via: (https://opensource.com/article/21/6/security-transparency) -[#]: author: (Ana Jimenez Santamaria https://opensource.com/users/anajs) -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) - -Why transparency is critical to your open source project's security -====== -A community's health and transparency are good measures of a project's -security. -![Lock][1] - -The Biden Administration's recent [executive order on cybersecurity][2] aims to improve [security assurance][3] and the use of best practices. Transparency and project health are two factors that help to support security across the entire software industry—especially now. - -### Software security is now open source software security - -Because [92% of modern applications][4] contain open source components, improving software security generally means improving open source software security. - -According to the Biden executive order: - -> "The trust we place in our digital infrastructure should be proportional to how trustworthy and transparent that infrastructure is." - -Transparency is a cornerstone of security assurance because it helps establish trust and confidence in the technology. Indeed, without transparency, trust and security evaporate. Therefore, one of the ways we can help improve security is by enhancing the transparency of our projects. - -Transparency through open source can provide information about a project that allows users to assess its health in at least two ways: - - * **Cross-community environments:** Cross-team and community collaboration are keys to meeting constantly evolving security, privacy, and safety standards. Security is a complex process involving multiple teams across a single organization and multiple organizations (i.e., cross-community), given its open source nature. - * **Public disclosure:** Transparency also enables organizations to quickly build and issue public security reports to identify potential threats and vulnerabilities. - - - -### How to measure transparency to achieve security assurance - -Open source should be in the DNA of every modern organization that wants to achieve a high level of transparency. However, transparency involves more than simply allowing access to code, products, designs, services, or APIs. Transparency is a **commitment to total clarity**. - -Open source has evolved into a complex ecosystem of projects and organizations with different kinds of relationships. [Open source program offices][5] (OSPOs) enable companies, public institutions, governments, and other organizations to keep tabs on the size and health of their open source ecosystems. They take care of not only the projects the organization is using but also the ones it's releasing or contributing to. - -One of the ways to measure transparency across open source ecosystems is by assessing the answers to the following questions about a community's health: - - * **How many maintainers are needed to keep the project sustainable?** The [Bus Factor][6] is a way to determine how many contributors a project can lose before it stalls. The metric (which hypothesizes what would happen if certain contributors got run over by a bus) calculates the smallest number of people who make 50% of contributions and visualizes the answer. - * **Who are the core developers?** The [Onion Model][7] is an approach to identifying the most committed developers and the ones the project relies upon most. - * **What organizations are involved in the software development process?** In addition to analyzing the number of companies whose employees make commits, issues, or code contributions, the [Elephant Factor][8] determines the minimum number of companies doing half of the work. - * **Does the software have security certifications?** Possessing well-known security certifications, such as the [Core Infrastructure Initiative Best Practices Badge][9], indicates that open source projects follow best practices and meet required certification criteria. - * **How active is the community?** There are various ways to assess whether a community is active. One way is to look at the community's reaction speed, including how fast issues are resolved vs. how many are ignored. - - - -Most of these questions are part of the [CHAOSS metrics][10] definition. Community Health Analytics Open Source Software (CHAOSS) is a Linux Foundation project focused on creating a standard set of metrics and software to help define open source community health. Its GrimoireLab tool makes it [easier][11] for projects to analyze and report their community health metrics. - -### Closing thoughts - -Open source software [took over the world][12] a long time ago. The Biden administration's new executive order is another reason to take the open source ecosystem seriously, as both public entities and private companies rely upon it. But open source innovation has a unique methodology that doesn't follow traditional business processes. Using open source involves [investing in OSPOs][13] and measuring transparency by looking at a project's health based on its activity to achieve the required security assurance. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/21/6/security-transparency - -作者:[Ana Jimenez Santamaria][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/anajs -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/security-lock-password.jpg?itok=KJMdkKum (Lock) -[2]: https://www.whitehouse.gov/briefing-room/presidential-actions/2021/05/12/executive-order-on-improving-the-nations-cybersecurity/ -[3]: https://www.igi-global.com/dictionary/quantitative-security-assurance/70165 -[4]: https://blog.tidelift.com/open-source-is-everywhere-survey-results-part-1 -[5]: https://opensource.com/article/20/5/open-source-program-office -[6]: https://chaoss.community/metric-bus-factor/ -[7]: https://chaoss.github.io/grimoirelab-sigils/common/onion_analysis/ -[8]: https://chaoss.community/metric-elephant-factor/ -[9]: https://chaoss.community/metric-cii-best-practices-badge/ -[10]: https://chaoss.community/metrics/ -[11]: https://opensource.com/article/21/6/health-metrics-cauldron -[12]: https://techcrunch.com/2019/01/12/how-open-source-software-took-over-the-world/ -[13]: https://todogroup.org/guides/create-program/ diff --git a/sources/talk/20210630 How a college student founded a free and open source operating system.md b/sources/talk/20210630 How a college student founded a free and open source operating system.md deleted file mode 100644 index 67d33c7b4a..0000000000 --- a/sources/talk/20210630 How a college student founded a free and open source operating system.md +++ /dev/null @@ -1,150 +0,0 @@ -[#]: subject: (How a college student founded a free and open source operating system) -[#]: via: (https://opensource.com/article/21/6/freedos-founder) -[#]: author: (Joshua Allen Holm https://opensource.com/users/holmja) -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) - -How a college student founded a free and open source operating system -====== -An interview with FreeDOS founder Jim Hall. -![Puzzle pieces coming together to form a computer screen][1] - -[Jim Hall][2] is best known as the computer programmer who founded the FreeDOS project. Jim began the project in 1994 as a replacement for MS-DOS while he was still a student at the University of Wisconsin–River Falls. Jim created FreeDOS in response to Microsoft ending support for MS-DOS in 1994. Recently Jim agreed to an email interview. Correspondent Joshua Allen Holm joined me in posing the following questions to Jim. - -**Don Watkins: What kind of skill set invites you to write your own operating system?** - -I think even a beginner can get started writing an operating system like FreeDOS, although it would take a more advanced programmer to write the kernel. - -[I am a self-taught programmer][3]. I learned about programming from an early age by tinkering on our Apple II computer at home. Much later, I learned C programming—my brother was a computer science student when I was a physics student, and he introduced me to C. I picked up the rest by reading books and writing my own programs. - -I wrote a lot of small utilities that enhanced my command line on MS-DOS or even replaced certain DOS commands. And you can write a lot of those programs even with a basic level of programming experience. You can write file utilities like FIND, FC, CHOICE, TYPE, MORE, or COPY—or user commands like ECHO or CLS—with only an introduction to C programming. With a bit of practice, you can write system-level programs like ATTRIB, or the COMMAND shell. - -**DW: Were you inspired by Linus Torvalds when you decided to write your own version of DOS and how did that contribute to your licensing decision?** - -In a way, yes. I really liked DOS and had been using it since the early 1980s. I ran MS-DOS on my personal computer at university. But in 1993, I discovered Linux. - -I really liked the Unix systems in our campus computer lab, where I spent much of my time as an undergraduate university student. When I heard about Linux, a free version of Unix that I could run on my ’386 computer at home, I immediately wanted to try it out. [My first Linux distribution][4] was Softlanding Linux System (SLS) 1.03, with Linux kernel 0.99 alpha patch level 11. That required a whopping 2MB of RAM, or 4MB if you wanted to compile programs, and 8MB to run X windows. - -I dual-booted Linux with MS-DOS. I booted into Linux most of the time, but I still booted back into MS-DOS to write papers in a word processor, to use a spreadsheet program to analyze data for my lab classes or to play my favorite DOS games. - -In 1994, I heard that Microsoft planned to “do away” with MS-DOS. The next version of Windows would eliminate DOS. I didn’t like that, and I still wanted to run DOS. I decided that if folks could come together over the Internet to write something like Linux, surely, we could do the same with DOS. After all, DOS was fairly simple compared to Linux. - -On June 29, 1994, [I announced the “PD-DOS” project][5] to write our own DOS. I called it “PD” because I thought it would be in the public domain. But I quickly learned about the GNU General Public License that the Linux kernel used, and decided that was a much better license. No one could take our source code and create a proprietary version of DOS. We changed the name to “Free-DOS” after another week or so. We later dropped the hyphen to become “FreeDOS.” - -**Joshua Allen Holm: What are the advantages of using FreeDOS over alternative ways of running DOS applications (e.g., DOSBox)?** - -Using DOSBox to run DOS applications in Linux is a great way to run certain DOS applications. But DOSBox is really intended to launch a single DOS program, like a game. The DOS command line is pretty limited in DOSBox. - -In contrast, FreeDOS provides a full DOS command line. We include all of the commands you remember from classic DOS, and added other commands and utilities to do new things. FreeDOS also includes compilers and assemblers so developers can write new programs, utilities, and tools to make your DOS experience more useful, Internet programs to help you get on a network, and even open source games. - -**JAH: Looking back over the years you have worked on FreeDOS, is there anything you would have done differently?** - -There’s only one event that I wish I could take back. I occasionally reach out to companies that sold DOS applications in the 1980s and 1990s and ask them if they will release the source code to their old DOS programs under an open source software license. That’s a great way to contribute to the open source community. - -One popular DOS program was a replacement for the MS-DOS COMMAND shell. 4DOS, by JP Software, was an extremely powerful DOS shell and included many modern features. For example, 4DOS supported built-in aliases, color-coded directory listings, and a “swapping” mechanism that freed up more conventional memory to run programs. - -I contacted JP Software to ask if they would release the source code to 4DOS under an open source software license. JP Software had stopped supporting DOS, and instead focused on a similar replacement for the CMD shell in Windows NT, called 4NT. They were interested in releasing the source code to 4DOS but were concerned that someone might take the 4DOS source code and release a version for Windows. In effect, that would put JP Software in competition with their older product. - -I still didn’t understand the fine points of open source software licenses, and I gave them bad advice. I suggested they might start with an existing open source license and add a term that said you could only run it on DOS. They then released the 4DOS source code under a modified version of the MIT license. - -Unfortunately, limiting where you can run the software violates one of the tenets of open source software and free software. Users should be able to run open source software anywhere, and for any use. An open source license isn’t “open source” if you are limited to running it only on one operating system. - -So despite best intentions, I gave JP Software really bad advice there, and 4DOS isn’t actually open source software. We used to include 4DOS in FreeDOS—but as we are preparing the FreeDOS 1.3 release, we want to be careful to only include open source software. So FreeDOS 1.3 RC4 (“release candidate 4”) does not include 4DOS.  - -**JAH: What are some interesting ways people are using FreeDOS?** - -Over the years, I’ve seen people use FreeDOS to do a lot of really interesting things! - -One of the earliest cool examples was someone who built pinball machines like you used to see in arcades. He embedded a version of FreeDOS to track the score and update the video screen on the back of the machine. I don’t know exactly how he did this, but my guess is every target or bumper on the pinball board probably generated a keyboard event. You can write a DOS application to read the “keyboard” and update the score based on that. - -A few years ago, a user found a video of a train control system in Russia [that ran on a FreeDOS PC][6]. They rebooted the computer, and if you freeze the video at the right point, you can briefly see the FreeDOS kernel starting up. It disappears quickly, but you can see it at 0:07 in the video. - -More recently, I saw someone had managed to boot an original IBM PC 5150 with FreeDOS [from a vinyl record][7], using the 5150’s rarely used cassette tape storage port. It’s really cool to see FreeDOS being used this way. It’s a method that I would never have thought to try, but sometimes you have to do something just for the fun of it. - -**JAH: Why work on DOS in 2021?** - -We still work on DOS in 2021 for a few reasons. I guess the first reason is that DOS is still interesting. We’ve added a lot to FreeDOS over the years. Where the original MS-DOS had a limited set of commands, FreeDOS includes dozens of useful utilities and tools, including editors, compilers, assemblers, games, and other neat programs. - -But it has to be more than just a cool hobby. I find that working on FreeDOS makes for a very interesting programming challenge. In modern systems like Linux, you can take advantage of a lot of memory at once, and you can address it all in one big block. As a result, many programmers will load a lot of libraries and other code to create their projects. This is a very easy way to build a complicated project. You can build a very complex system in a very short time this way. And for many systems, time to market is the most important factor. - -Loading a bunch of libraries and other code blocks is very inefficient, however. You may have the same basic functionality implemented half a dozen ways across the different libraries because each library implements something their own way. So your code grows and requires more memory. - -Maybe that’s not a problem on a desktop PC. I run Linux, and my modern desktop PC has 32GB of memory. Loading a bunch of stuff into memory isn’t a big deal. But on a shared server, where you might have multiple instances of that project running, you’ll quickly run into memory limitations. How many instances can you run at the same time on a server? That 32GB of memory starts to look pretty slim. - -You can’t load all of that into memory on a DOS machine. To remain compatible with the original DOS, FreeDOS has all the limitations of DOS. When MS-DOS was popular, a powerful PC might have had 4MB, 8MB, or even 16MB of extended memory. But the computer only had 640kb of “main” memory, due to how DOS addressed memory. And that’s megabytes and kilobytes, not gigabytes. A kilobyte is a thousand bytes (the basic unit of memory). A megabyte is a thousand kilobytes. And a gigabyte is a thousand megabytes. So today’s computers have memory that is about 1,000,000 more than a DOS computer. - -By programming on a limited system like FreeDOS, you constantly have to think about the tradeoffs. How much memory does my program really need to do its job? Is it faster to read a file into memory to work on it, or process the file one bit at a time? And you’re always keeping in mind what libraries and other code you use in your program. A DOS program can only be so big, so you need to be careful about how you write a DOS program. - -When you write DOS programs all the time, you get really good at optimizing a program. You think about programming in a different way, because you’re always considering how to do something more efficiently. That’s a challenge, but an interesting one. - -**DW: How big is the FreeDOS community?** - -FreeDOS was a very popular project throughout the 1990s and into the early 2000s, but the community isn’t as big these days. But it’s great that we are still an engaged and active group. If you look at the news items on our website, you’ll see we post updates on a fairly regular basis. - -It’s hard to estimate the size of the community. I’d say we have a few dozen members who are very active. And we have a few dozen others who reappear occasionally to post new versions of their programs. I think to maintain an active community that’s still working on an open source DOS from 1994 is a great sign. - -Some members have been with us from the very beginning, and I’m really thankful to count them as friends. We do [video hangouts on a semi-regular basis][8]. It’s great to finally “meet” the folks I’ve only exchanged emails with over the years. - -It's meetings like this when I remember open source is more than just writing code; it's about a community. And while I've always done well with our virtual community that communicates via email, I really appreciated getting to talk to people without the asynchronous delay or artificial filter of email—making that real-time connection means a lot to me. - -**DW: How does someone get involved in the community?** - -I think our community is very welcoming, so anyone is free to join. We communicate via an email list, which you can find on the [FreeDOS website][9]. Join the freedos-user email list if you want to talk about FreeDOS or ask for help. Developers should join the freedos-devel email list; that’s where most of the FreeDOS developers hang out. Our email list volume is pretty low, so you aren’t likely to fill up your inbox by subscribing to either email list. - -A great way to get started is by writing or updating documentation, or by fixing bugs. I think that’s true of pretty much every open source project out there. We always need folks to work on the documentation and fix bugs. But for a project like FreeDOS, I think reading through the documentation is important if you’re new to DOS. A common mistake for newcomers is thinking of FreeDOS as a stripped-down version of Linux, when in fact DOS uses a different memory and execution model. You can learn about that by reading the documentation, which is why I recommend new contributors start there. - -For the more adventurous, we maintain a list of priority projects on our website. If you’d like to contribute to FreeDOS, but aren’t sure what needs work, you might consider tackling one or more of these projects: - - * If you’ve got some programming experience: - * Port FreeDOS utilities to OpenWatcom C and NASM—our preferred C compiler and Assembler for FreeDOS. (Some older FreeDOS programs were probably written for Borland C or Turbo C or Microsoft C, or Microsoft ASM or Turbo ASM) - - * Port GNU utilities to FreeDOS, such as using IA-16 GCC (while IA-16 GCC requires a ’386 or better to compile, programs compiled with IA-16 GCC run on all CPUs) - - * Create a new alternative shell, similar to COMMAND.COM but with expanded BAT programming - - * Add international language support to a FreeDOS program that currently only supports one language. - - * If you’re a highly-skilled DOS developer: - * Write a guest tool like VMSMOUNT for VirtualBox - - * Write a driver for modern sound cards - - * Add some kind of UEFI bootstrap BIOS emulator, perhaps implemented as a CSM - - - - -We like to make it easy for new contributors to get started in FreeDOS, and we welcome everyone who wants to work on FreeDOS. If you still don’t know how to contribute, feel free to ask on the email list. - -You can find FreeDOS at [www.freedos.org][10] -Join FreeDOS on Facebook at [facebook.com/groups/freedos/][11]  -Follow FreeDOS on Twitter at [twitter.com/freedos_project][12] - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/21/6/freedos-founder - -作者:[Joshua Allen Holm][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/holmja -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/puzzle_computer_solve_fix_tool.png?itok=U0pH1uwj (Puzzle pieces coming together to form a computer screen) -[2]: https://opensource.com/users/jim-hall -[3]: https://opensource.com/article/20/8/learn-open-source -[4]: https://opensource.com/article/17/8/linux-anniversary -[5]: https://groups.google.com/g/comp.os.msdos.apps/c/oQmT4ETcSzU/m/O1HR8PE2u-EJ?pli=1 -[6]: https://www.youtube.com/watch?v=eAate0v8hDE -[7]: https://www.youtube.com/watch?v=bqz65_YfcJg -[8]: https://opensource.com/article/20/8/meet-open-source-collaborators -[9]: https://www.freedos.org/ -[10]: http://www.freedos.org/ -[11]: https://www.facebook.com/groups/freedos/ -[12]: http://twitter.com/freedos_project diff --git a/sources/talk/20210709 Apply lean startup principles to your open source project.md b/sources/talk/20210709 Apply lean startup principles to your open source project.md deleted file mode 100644 index 3294521866..0000000000 --- a/sources/talk/20210709 Apply lean startup principles to your open source project.md +++ /dev/null @@ -1,224 +0,0 @@ -[#]: subject: (Apply lean startup principles to your open source project) -[#]: via: (https://opensource.com/article/21/7/lean-startup-open-source) -[#]: author: (Ip Sam https://opensource.com/users/ipkeisam) -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) - -Apply lean startup principles to your open source project -====== -Lean startup principles help you manage your open source project with -efficiency and success. -![Mobile devices are a big part of our daily lives][1] - -There are a lot of benefits to starting an open source project. In general, open source projects benefit from collaboration, adoption, transparency, lower ownership costs, development best practices, more contributors and reviewers, and better quality. - -When you contribute to open source projects, you can build your technical and leadership skills, get good experience for your resume, learn new development tools, understand industry trends, work with top engineers around the world, gain mentorship opportunities, meet people with similar interests, improve your people skills, and more. - -When you develop your own open source project, you are much like the CEO of a startup company, and many startups use lean principles. This article demonstrates how you can apply lean startup principles to develop and advance your open source projects. - -### Come up with a good open source idea - -When brainstorming a good open source idea, consider three domains: industry, inventory, and customers. You want to come up with an idea at the intersection of these domains. For example, I am working on an open source project for the hybrid cloud. Cloud computing is my industry. Inventory could be the set of Ansible playbooks available for the cloud computing industry. The customers could be my OpenShift clients interested in using Ansible playbooks to set up their hybrid cloud infrastructure. These get me to the intersection of the three domains, and this could be a great open source idea. - -![A good open source idea][2] - -(Ip Sam, [CC BY-SA 4.0][3]) - -Once you identify your open source idea, start developing a proof of concept (PoC) prototype project, put it into a Git repository, and create the project's backlog: - - 1. Start a simple PoC prototype. - 2. Push the PoC into a public GitHub repository. - 3. Create your README, LICENSE, CONTRIBUTING, and CODE_OF_CONDUCT files. - 4. Set up high-level epics and stories in Jira. - - - -Next, start working on positioning your open source idea for long-term success. Consider your competitors' offerings, customers' needs, and company capabilities. For example, if I know customers want to do cloud automation in an OpenShift cluster, I understand the customers' needs. My team's capabilities are producing Ansible automation to automate OpenShift cluster installation and upgrades. And I need to make sure no competitors are doing similar work. In my open source project, I use Ansible for automation. Other companies may be using shell scripts or PowerShell scripts. Even though they are developing automation technologies, their offerings do not directly interfere with what my open source project is doing. Therefore, I can get into the sweet spot below. - -![Position your open source idea][4] - -(Ip Sam, [CC BY-SA 4.0][3]) - -### Use lean startup principles - -Managing risks is important for an open source project. At any time, a project can lose funding, people, and resources. Business requirements and scope can change. Release schedules can be delayed or canceled. Timelines can change with a lot of uncertainty. As the CEO of your open source project, you can use lean startup principles to minimize risks and maximize profits for your project. - -The lean startup principles focus on developing the minimal viable project (MVP) that gives you value from production as soon as possible. It also pushes for smaller release cycles and fast iteration. Using validated learning through feedback loops from production, you can validate your open source project and make modifications as product data becomes available. - -In the lean startup cycle, first, you come up with your open source idea. Then you convert your idea into code by doing a simple MVP. In between, you set up the build phase (where you build unit tests to ensure the quality of your code), continuous integration/continuous development (CI/CD) pipelines for automated deployments, the cloud computing infrastructure, the developer sandbox, and other development best practices. These are part of your build phase to enable your developers to code faster. - -You need to measure everything from coding to production data. For example, measure the MVP's usability to make sure end users can use it properly. Use monitoring and alerts so that you know when production issues occur. Static code analysis helps you catch code issues and security vulnerabilities. Finally, use feedback data from product users and stakeholders; it helps you measure faster. - -All of this data enables you to learn about your project. You can learn faster by doing more customer interviews or working with customers during development cycles. You can also learn faster by setting up cross-functional teams with other business departments. As you go through the lean startup cycles again in the second iteration, you should be able to code faster, measure faster, and learn faster than in the first iteration. - -![The lean startup cycle diagram][5] - -(Ip Sam, [CC BY-SA 4.0][3]) - -Lean startup methodologies help you create an idea, formulate hypotheses from your idea, create an MVP, and test the MVP to validate your hypotheses. Then you go through what you learned to fine-tune your hypotheses and start your second iteration. - -![Lean startup methodologies][6] - -(Ip Sam, [CC BY-SA 4.0][3]) - -Lean startup is a combination of customer development and agile development. It supports faster iterative development cycles and incremental product development. - -### Leverage design thinking, lean startup, and agile - -![Lean startup and agile][7] - -(Ip Sam, [CC BY-SA 4.0][3]) - -The figure below shows the three cycles of design thinking, lean startup, and agile. The first part is always design thinking (the green cycle), where you gather requirements to define your idea. Often, these come from product managers. Then you move to the lean startup (blue) cycle, where you come up with prototypes, do some experiments, and go through the learning period. Based on your learning, you can enter the agile (yellow) cycle. These often involve the typical two-week sprints, coming up with stories in your product backlogs, bringing stories from the backlog to sprint planning, doing sprint execution, moving stories to completion, and shipping incremental products to production by doing a deployment. At the end, you have the sprint review, sprint demo, and sprint retrospective. After completing the agile cycle, you go back to the blue cycle to begin the build process, measurement, and the next iteration. - -![Design thinking, lean startup, and agile cycles together][8] - -(Ip Sam, [CC BY-SA 4.0][3]) - -Often, you have multiple MVPs before you get to the final product. Use customer feedback and product data to shape the next MVP version. - -![Lean startup MVPs][9] - -(Ip Sam, [CC BY-SA 4.0][3]) - -The project management triangle helps you maintain product quality. Scope, cost, and time are the corners of the triangle. The shape of the triangle represents product quality. If you reduce your scope and costs, the triangle's shape will change, meaning your quality will decrease. - -![Lean project management][10] - -(Ip Sam, [CC BY-SA 4.0][3]) - -Lean startup principles can help you manage scope, cost, and time. By doing each release with the lean startup principles, you can get to incremental changes, small release cycles, small release feature sets, and feedback loops. For each idea, measure if it works, is making money, and generating business value. If your answer to each is yes, begin the reinvestment process to generate more new ideas. - -![Lean releases][11] - -(Ip Sam, [CC BY-SA 4.0][3]) - -### Recruit contributors and build a team - -Project marketing is an important starting point for recruiting contributors and investors into your open source project. Learn how to sell your project, present it at major conferences and events, and demo your PoC or MVP at local developer meetups. If you work for a large organization, you may be able to turn it into an internal project. - -Different people with different backgrounds, working styles, and cultures will come into your project, and your goal is to develop them into a high-performing team. The team will go through learning curves as it finds how to work together. For example, when you get new team members, your team's current working style may not fit them well, and you might get resistance. When individuals do not want to get out of their comfort zone to learn new skills, you might also get resistance. This might create a chaos situation, where team members disagree about how to do things. The team may split into different camps with different ideas. This brings team performance to the lowest point of the team maturity curve. When you reach the lowest point, listen to team members and work to understand their ideas and why people push back, then transform the different ideas into action items. You can leverage voting systems or use product data to validate the ideas. As conflicts are resolved, the team members will start to work better together and integrate their different ways of working into the overall team culture. This is where your team will reach a new status quo and team maturity. - -![Team maturity graph][12] - -(Ip Sam, [CC BY-SA 4.0][3]) - -The lean team management method can help you achieve team maturity. It leverages four levers of control: believe, boundary, measurement, and interactive. - - * **Believe:** This is your team's set of core values. For example, my team believes in quality as a requirement for each product. Therefore, quality is the team's core value. - * **Boundaries:** These relate to setting rules based on core values. For example, my team believes in quality, and we set rules to require unit and integration tests for each code change before committing it into the Git repository. This becomes a boundary for the team. If somebody checks in code without a test, that person is not following the rule, and it's time for you to educate the team members. - * **Measurement:** This includes key performance indicators (KPIs), targets, and budget. For example, my team's KPIs include measuring story cycle time in the sprint, story release time, defect rates, test coverage rate, and product issues. - * **Interactive:** The interactive process is where you revise the product based on your last cycle. Then you start the next iteration for the next set of core values. - - - -![Lean team management][13] - -(Ip Sam, [CC BY-SA 4.0][3]) - -### Minimize waste - -Eight types of waste—defects, overproduction, waiting, non-utilized talent, transportation, inventory, motion, and extra processing—in your development lifecycle harm team productivity. - - * **Defects:** It is cheaper to fix a defect early in the development lifecycle, so many teams use [test-driven development][14] (TDD) to reduce defects. - * **Overproduction:** If you are doing more than what you are asked to do, you are over-producing. This is tied to scope in stories; the scope should be small so that you do not risk overproduction. - * **Waiting:** Waiting is not efficient and wastes your team's resources. During sprint daily standups, identify stories that are blocked or waiting on external dependencies. As a scrum master, it is your job to help escalate these blocking issues to reduce waiting time. - * **Non-used talent:** Unused talent is always a waste, so ensure everyone on the team has enough work to do. - * **Transportation:** If you are moving projects from one team to another, you introduce more learning curves and ramp-up time. Try to reduce how much projects are transported. - * **Inventory:** Too much inventory that can't be sold is a waste. The inventory takes up space in your storage and consumes management time. - * **Motion:** Excessive unnecessary movements, such as going to meetings in different locations or even commuting, are a waste. Many organizations have a work-from-home policy to reduce motion waste. - * **Extra processing:** If you are doing the same validation test repeatedly on the same product, this extra processing might be a waste. Come up with a process flow in your development cycle so that you avoid extra processing. - - - -![Lean waste management][15] - -(Ip Sam, [CC BY-SA 4.0][3]) - -As the CEO of your open source project, your time is very valuable. If it's your job, you only have eight hours a day. If it's your side hustle, your time is even more limited. Lean time management involves a very simple matrix, as shown below. If you have a task that's important to the vision and must be done by you, go ahead and do it. If the task is important to the vision but can be done by a team member, delegate it. If the task is not important to the vision and must be done by you, minimize the time you spend on it. Finally, if the task is not vision-important and can be done by others, it is a waste of resources. - -![Lean time management][16] - -(Ip Sam, [CC BY-SA 4.0][3]) - -### Develop a lean strategy - -Lean strategy is a good way to analyze your open source product to come up with a long-term strategy. Ask yourself these questions: If your open source product did not exist, would your customers suffer any real loss? If so, what type of loss would it be? Is it difficult for your customers to replace your products to meet their needs? For example, if I am doing Ansible playbooks for cluster automation, can my customers replace my Ansible playbooks using a set of shell scripts? What would be the impact on the operational costs and learning curve? - -![Lean strategy questions][17] - -(Ip Sam, [CC BY-SA 4.0][3]) - -The lean strategy hierarchy is (from bottom to top) mission, values, vision, strategy, and balanced scorecard. At the base is your mission: Why do your open source project and team exist? What is your mission statement? Next are the values your team believes in. Vision is how you expect your product to evolve in the next two years. Strategy requires strategic planning. At the very top is the balanced scorecard, where you implement and monitor the plan for your open source project. - -![Lean strategy hierarchy][18] - -(Ip Sam, [CC BY-SA 4.0][3]) - -Your lean strategy statement includes your objective, scope, and competitive advantage. The objective defines what your strategy is designed to do and achieve in a specific time frame. The scope identifies the strategy requirements for your open source product to be successful. Your competitive advantage is the core of your strategy. How will you compete with competitors using this product and your strategy to achieve your objective? - -![Lean strategy statement][19] - -(Ip Sam, [CC BY-SA 4.0][3]) - -Pricing and differentiation are two important factors for achieving profit. You want to offer low price and high differentiation. Ask yourself: How is your product different from your competitors'? What are some features that are unique to your product? If you can maximize differentiation and minimize pricing, you will get to the profit frontier line. - -![Lean Profit Management][20] - -(Ip Sam, [CC BY-SA 4.0][3]) - -### Look to the future - -After running your open source project for a while and tracking everything, it's time to consider where you want to focus next on your journey as the CEO of your open source project. - -Begin by assessing perspective, capability, and profit potential. - - * Perspective involves how your product fulfills customers' needs. For example, can my Ansible playbook reduce manual operations in the OpenShift cluster to save 20% of the customer's operation costs? - * Capability is what your product can do and what new features it can offer. For example, can my Ansible playbooks operate in a way that supports OpenShift 3 and OpenShift 4 clusters? On-premises clusters versus AWS clusters? - * Profit potential includes how much revenue your product is generating for you in a time frame. Does your product fall into the profit frontier margin in the image above? - - - -![What's next?][21] - -(Ip Sam, [CC BY-SA 4.0][3]) - -Open source is the future. There is a lot going on in the open source community, and many companies are moving to open source models. Open source is a great way to get people involved in your project, and lean startup principles help you manage your open source project with efficiency. It will help you and your open source project go a long way. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/21/7/lean-startup-open-source - -作者:[Ip Sam][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/ipkeisam -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/mobile-demo-device-phone.png?itok=y9cHLI_F (Mobile devices are a big part of our daily lives) -[2]: https://opensource.com/sites/default/files/uploads/1_opensourceidea.jpg (A good open source idea) -[3]: https://creativecommons.org/licenses/by-sa/4.0/ -[4]: https://opensource.com/sites/default/files/uploads/2_positioning.jpg (Position your open source idea) -[5]: https://opensource.com/sites/default/files/uploads/3_leanstartupcycles.jpg (The lean startup cycle diagram) -[6]: https://opensource.com/sites/default/files/uploads/4_leanstartupmethodologies.jpg (Lean startup methodologies) -[7]: https://opensource.com/sites/default/files/uploads/5_leanstartupagile.jpg (Lean startup and agile) -[8]: https://opensource.com/sites/default/files/uploads/6_designthinkingleanstartupagile.jpg (Design thinking, lean startup, and agile cycles together) -[9]: https://opensource.com/sites/default/files/uploads/7_mvps.jpg (Lean startup MVPs) -[10]: https://opensource.com/sites/default/files/uploads/8_projectmanagementtriangle.jpg (Lean project management) -[11]: https://opensource.com/sites/default/files/uploads/9_leanreleases.jpg (Lean releases) -[12]: https://opensource.com/sites/default/files/uploads/10_teammaturity.jpg (Team maturity graph) -[13]: https://opensource.com/sites/default/files/uploads/11_leanteammanagement.jpg (Lean team management) -[14]: https://opensource.com/article/19/10/test-driven-development-best-practices -[15]: https://opensource.com/sites/default/files/uploads/12_leanwastemanagement.jpg (Lean waste management) -[16]: https://opensource.com/sites/default/files/uploads/13_leantimemanagement_0.jpg (Lean time management) -[17]: https://opensource.com/sites/default/files/uploads/14_leanstrategy.jpg (Lean strategy questions) -[18]: https://opensource.com/sites/default/files/uploads/15_leanstrategyhierarchy.jpg (Lean strategy hierarchy) -[19]: https://opensource.com/sites/default/files/uploads/16_leanstrategystatement.jpg (Lean strategy statement) -[20]: https://opensource.com/sites/default/files/uploads/17_profitfrontier.jpg (Lean Profit Management) -[21]: https://opensource.com/sites/default/files/uploads/18_whatsnext.jpg (What's next?) diff --git a/sources/talk/20210716 Dear Mozilla, Please Remove This Annoying ‘Feature- from Firefox.md b/sources/talk/20210716 Dear Mozilla, Please Remove This Annoying ‘Feature- from Firefox.md deleted file mode 100644 index cd4031ab75..0000000000 --- a/sources/talk/20210716 Dear Mozilla, Please Remove This Annoying ‘Feature- from Firefox.md +++ /dev/null @@ -1,66 +0,0 @@ -[#]: subject: (Dear Mozilla, Please Remove This Annoying ‘Feature’ from Firefox) -[#]: via: (https://news.itsfoss.com/mozilla-annoying-new-tab/) -[#]: author: (Abhishek https://news.itsfoss.com/author/root/) -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) - -Dear Mozilla, Please Remove This Annoying ‘Feature’ from Firefox -====== - -Despite its receding user base, Mozilla Firefox has remained my primary browser. Mozilla has revamped Firefox in the last couple of years and have added several features to it specially focused on protecting user privacy. I respect that. - -However, there is one ‘feature’ that annoys the hell out of me. This so-called feature relates to the auto-update of Firefox in the background. - -Auto-upgrade immediately remind of Windows updates. I mean, Windows is infamous for the forced restarts and updates, right? - -![Image Credit: Digital Trend][1] - -But why am I talking about this in reference to Firefox? Because Firefox, too, has a ‘Windows-que’ feature. - -It updates Firefox in the background. No problem there. That’s not entirely a bad thing. - -But then if you try to open a website in the new tab, it won’t let you do that unless you restart the browser. - -![][2] - -And that small thing stops the users from keep going with their work. What the hell, Mozilla! - -You may argue that it’s not that much of a pain. A quick restart won’t bring your world down, Abhishek. - -Right but imagine you are busy at work. You have more than 20 tabs opened. That’s normal if you are trying to troubleshoot as a developer, sysadmin, student or just trying to learn something in your field of interest. - -You cannot open a new webpage anymore. You have to restart the browser and when you restart, you have to click on each tab manually because Firefox does not load the previously opened webpages on its own. Sure you can see the tabs but the web pages are not actually loaded. - -This should be considered a bug, not a feature. Users should be given a choice to between rebooting right away or doing it later. - -I don’t remember any other browser infringing like this on its users, not even Google Chrome. But somehow Mozilla eggheads thought that this is a good “feature” to add to their open source browser. - -No, Mozilla! This is not a feature. This is a bug and should be fixed. You just cannot annoy your users like this otherwise they will be forced to use [alternate browsers like Brave][3] or Vivaldi and of course, Chrome. - -I end my rant and leave the field open for you. What do you think of these forced restarts by Mozilla Firefox? - -### Big Tech Websites Get Millions in Revenue, It's FOSS Got You! - -If you like what we do here at It's FOSS, please consider making a donation to support our independent publication. Your support will help us keep publishing content focusing on desktop Linux and open source software. - -I'm not interested - --------------------------------------------------------------------------------- - -via: https://news.itsfoss.com/mozilla-annoying-new-tab/ - -作者:[Abhishek][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://news.itsfoss.com/author/root/ -[b]: https://github.com/lujun9972 -[1]: data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjQyNyIgd2lkdGg9Ijc4MCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2ZXJzaW9uPSIxLjEiLz4= -[2]: data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjMwOCIgd2lkdGg9Ijc4MCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2ZXJzaW9uPSIxLjEiLz4= -[3]: https://news.itsfoss.com/chrome-like-browsers-2021/ diff --git a/sources/talk/20210718 17 open source technologists share their work-from-home uniforms.md b/sources/talk/20210718 17 open source technologists share their work-from-home uniforms.md deleted file mode 100644 index b8dd681da9..0000000000 --- a/sources/talk/20210718 17 open source technologists share their work-from-home uniforms.md +++ /dev/null @@ -1,117 +0,0 @@ -[#]: subject: (17 open source technologists share their work-from-home uniforms) -[#]: via: (https://opensource.com/article/21/7/work-home-uniforms) -[#]: author: (Jen Wike Huger https://opensource.com/users/jen-wike) -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) - -17 open source technologists share their work-from-home uniforms -====== -Nerdwear of the technically employed. What's your style? -![Taking a walk outside][1] - -As the world turns and some folks begin returning to the office, I feel it's a good time to ask our community of open source techies: _What's your work-from-home (WFH) uniform?_ - -Do you dress like you would if you were going into the office? Or are you more comfortable in workout clothes or even your PJs? Do you have a template you stick to most days? - -I have a format that helps me feel both productive and comfortable, and if I need to run an errand in public, I don't have to change first: A clean, nice-fitting shirt (T-shirts are OK) on top of comfortable pants (yoga is OK but not pajama). I've leaned into my stash of T-shirts from fun conferences I've attended with people I miss seeing and locales in my home state that make me proud. - -Some Opensource.com friends and contributors weigh in on their work-from-home uniforms below. What's yours? - -* * * - -Over the last eight years, I've learned that if I try to work in my PJs, I will get nothing done. In warm weather, I'm in shorts (cargo, of course) and a T-shirt. In cooler weather, it's jeans and a T-shirt with a sweater or hoodie. Never shoes, but I'll wear socks once my feet start getting cold. —[Ben Cotton][2] - -Last winter, I un-ironically told two friends: "I miss my clothes." Most of my wardrobe went untouched for a year, not because I had outgrown or no longer liked my outfits, but because I had nowhere to wear them. Working from home means I'm exercising at least once before, during, or after work. Between walking a (very brisk-paced) dog and taking a class at the gym on my lunch break, I often work in sneakers complete with bike shorts and a tank top. But when the situation calls, I can pop a cardigan on to look more professional. —[Lauren Maffeo][3] - -Before the pandemic, I tried dressing like I was going to do something that day. WFH was a privilege, and I really appreciated it, as it afforded me the ability to take care of my needs and work at the same time. Once the pandemic hit though, it became tiring to put on a front that I was going somewhere because, well, no one was. Most of the time, I'm wearing a Red Hat or Kubernetes/Cloud Native T-shirt and workout shorts. I live in Michigan, though, so those shorts get swapped out for joggers when it's cold. But that's pretty rare given my office is pretty warm thanks to all the computers. Oh, and slippers, like right now because my feet are cold for some reason. —[Chris Short][4] - -My WFW (work from work) uniform was always conference T's, jeans/cargo pants, and sandals or sneakers. So, my wardrobe hasn't changed... Well, that's not exactly true: Having not replenished my supply of conference T's, some of them have become a bit ratty, but I'm not on camera. And my hair is a bit messier. Sidenote: The New York Times had a recent [article][5] on a slide in hygiene and grooming during COVID, and, according to the article, many are saying they're going to remain a bit sloppier post-COVID. —[Kevin Cole][6] - -I used to wear suits and professional woman's wear for the office. Now I get to go back to the tech WFH uniform: nerd shirt, pants/skirt. Often I add a scarf to jazz it up for video. I wear shoes because my feet get cold. My colleagues mock me, but I do my hair and makeup every day. How I missed all my nerdware and hoodies due to "serious non-tech office jobs." —[Heather Leson][7] - -I try to stay dressed at home like there could be a strong reason to go out at short notice with my shoes and go-bag near the door. Too many years living in earthquake country, I guess. —[Stefano Maffulli][8] - -I wear pajamas most of the time, but I keep a "video shirt" ready in case I need to go on video for some reason. For a template, my day is driven by the calls and meetings on my calendar. During my breaks there, I'll run up and down the stairs a few times just to stretch my legs. —[Peter Gervase][9] - -No video meetings for me, but shorts and T-shirts are the regular. Jeans when it's colder. —[Bob Murphy][10] - -I love playing around with color, so I wear five different colored tops (mostly not ironed) for five days, paired with comfortable cotton pants. I love my earrings, so I match my tops and earrings. Every now and then, I do wear my jeans and other formal outfits to make sure that I fit into them. —[Nimisha Mukherjee][11] - -I start my day in gym clothes because I squeeze in a morning workout before I hit the keyboard. My current WFH uniform is a T-shirt or polo and shorts. I try to wear shorts as much as I can when I WFH. In fall and winter, I stick to chamois shirts, fleeces, and jeans. I end my day back in gym clothes because I hit the gym four out of five nights during the week. —[Will Kelly][12] - -My WFH outfit is the same as my office outfit: knit shirts and jeans. Unlike some of my colleagues, I have not grown a beard and let my hair get long and shaggy. A bike racer I knew once said, "You dress like a bum, you ride like a bum," and I feel the same is true for me: "You dress like a bum, you work like a bum." —[Gary Smith][13] - -I learned long ago when I started full-time remote work, that I needed to do the whole "get up, get ready, get dressed like you were going into the office" thing, providing some structure to my day and to get my head in "the right place" for work. Jeans, T-shirt, socks, boots (or shoes, but mostly boots1), and my ever-present head wrap. I don't know about everyone else, but I have a space that is dedicated for work, and I have my EDC2 bag that I take to and from my home office with my personal belongings, the same as I would any other job. When it is time to stop working, I pick up my bag and take it with me as a signal to myself that I'm done for the day. —[Kevin Sonney][14] -1 You keep livestock, you wear boots. I'm sure you can guess why. -2 "Every-day carry" - -I get up every morning at about the same time, around 7:30am, and get dressed in comfortable, casual clothes. I've been doing this for the last eight years since I retired. I have a light breakfast, and in the summer, I walk between four and five miles. Then I return home and begin my morning routine of juice or tea and toast, then checking email, attending meetings (more on Zoom or other virtual platforms this year). Keeping a routine is important to me, and dressing comfortably is, too. —[Don Watkins][15] - -At one point in my life, I was a chef. So, I have a bunch of chef pants, which are really comfortable but not stylish. I've been wearing them over the winter combined with some of my "ugliest" conference T-shirts. A couple of years ago, a coworker visited Russia and was staying with a family that had a grandmother who loved knitting wool socks. So, he brought wool socks back for everyone. So, ugly chef pants, ugly conference T-shirt, and wool socks hand-knitted by a Russian grandma. —[Craig Sebenik][16] - -My WFH uniform is not much different from my regular outfit. I like to be comfortable, no matter if I'm at home or talking in front of a thousand people at a conference. That means that I'm in T-shirts all around the year, no matter if it's WFH or a large IT event. It's one of the perks of being an engineer, not in sales or management. The only difference is that I wear jeans in public and something more comfortable, like sports pants, at home. —[Peter Czanik][17] - -It has been at least 30 years since I wore suits, then (for a while) "business casual." Most days now, I start early in my jammies. Wednesdays, I start with my yoga pants and top because my online yoga class starts at 9:30. Other days I change into jeans or cargo shorts and a solid black, conference, or other geeky T-shirt after breakfast. I always shave because that is one thing that makes me feel civilized. I am "retired," so I don't feel any need at all to have a different video presence other than my "normal" mode of dress. Besides, the only video meetings I attend are the Opensource.com and Enable Sysadmin weekly writer calls. —[David Both][18] - -The only rule is there are no rules! I wear whatever I want, mostly a Red Hat T-shirt and shorts or jogging pants. If I have an important meeting, I try to be more presentable. —[Kedar Vijay Kulkarni][19] - -Before walking the dogs, I am in sleepwear and a dressing gown while eating toast and having that first coffee. After the dog walk, I'm in shorts/polo/T-shirt if it's warm enough, or jeans/cargo pants if it's colder. I tend towards classic Shadowman shirts if I'm not on customer calls or major internal briefings, and the newer Red Hat logo-based shirts if I need official branding. Sadly, we're heading into winter here in New Zealand, so hoodies and jeans are starting to become a bit more normal. For my 3am calls with the United States, I've got a snug dressing gown and a warm drink. —[Steven Ellis][20] - -Thanks to the Opensource.com Correspondent program, here's my Spring, Summer, Fall, and Winter uniform. —[Chris Hermansen][21] - -![Opensource.com swag, a spring outfit][22] - -  - -![Opensource.com swag, a winter outfit][23] - -  - -![Opensource.com swag, a summer outfit][24] - -Summer - -* * * - -What's your WFH uniform? Are you in a T-shirt and pajama pants, or do you dress as if you're going into the office? Please share your remote work attire in the comments below. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/21/7/work-home-uniforms - -作者:[Jen Wike Huger][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/jen-wike -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/walking_selfcare_wfh_outside_520.png?itok=64WmWspJ (Taking a walk outside) -[2]: https://opensource.com/users/bcotton -[3]: https://opensource.com/users/lmaffeo -[4]: https://opensource.com/users/chrisshort -[5]: https://www.nytimes.com/2021/05/06/health/shower-bathing-pandemic.html -[6]: https://opensource.com/users/kjcole -[7]: https://opensource.com/users/hleson -[8]: https://opensource.com/users/reed -[9]: https://opensource.com/users/pgervase -[10]: https://opensource.com/users/murph -[11]: https://opensource.com/users/nimisha -[12]: https://opensource.com/users/willkelly -[13]: https://opensource.com/users/greptile -[14]: https://opensource.com/users/ksonney -[15]: https://opensource.com/users/don-watkins -[16]: https://opensource.com/users/craig5 -[17]: https://opensource.com/users/czanik -[18]: https://opensource.com/users/dboth -[19]: https://opensource.com/users/kkulkarn -[20]: https://opensource.com/users/steven-ellis -[21]: https://opensource.com/users/clhermansen -[22]: https://opensource.com/sites/default/files/uploads/spring_2.jpg (Opensource.com swag, a spring outfit) -[23]: https://opensource.com/sites/default/files/uploads/winter.jpg (Opensource.com swag, a winter outfit) -[24]: https://opensource.com/sites/default/files/uploads/summer.jpg (Opensource.com swag, a summer outfit) diff --git a/sources/talk/20210727 Avoid this common open source scanning error.md b/sources/talk/20210727 Avoid this common open source scanning error.md deleted file mode 100644 index a30000b983..0000000000 --- a/sources/talk/20210727 Avoid this common open source scanning error.md +++ /dev/null @@ -1,90 +0,0 @@ -[#]: subject: (Avoid this common open source scanning error) -[#]: via: (https://opensource.com/article/21/7/open-source-scanning-error) -[#]: author: (Jeffrey Robert Kaufman https://opensource.com/users/jkaufman) -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) - -Avoid this common open source scanning error -====== -Why do source-code scanners sometimes report incorrect license -information? -![Target practice][1] - -[Pete Townshend][2], legendary guitar player for British rock band The Who, is well-known for playing suspended chords. Suspended chords add musical tension to a song. For those piano players reading this who (like me) love to play in the key of C, simply play a C major chord (the notes C, E, and G) and replace the E note with either an F or a D. You are now on your way to becoming a British rock star![1][3] - -Music is often filled with combinations of chords, like suspended chords, that provide tension, then release. Although adding tension to a musical composition is desirable, adding tension to scanning software with open source tools is certainly unwelcome. - -An issue at Red Hat involving scanning software led me to write this article. - -Recently, an important customer raised a concern after scanning some of our software's source code. As you may know, Red Hat provides the source code of its software. The customer's scanning tool reported that a certain software file was licensed under the GPLv3, which was not expected. In fact, the software file was explicitly and solely marked as being licensed under the Apache 2.0 license. The customer requested that we look into this issue, and we were happy to do so. - -After our in-depth research, we concluded that their scanning software is clearly incorrect. We developed a hypothesis that explains the anomaly, which I will now explain. - -A popular type of open source software scanning tool compares the software being scanned to vast repositories of preexisting open source software and reports any matches. For example, assume there is an open source file named MIT.c that returns an integer one higher than the integer passed to it. In other words, it is a simple adder. It could look like this: - - -``` -Copyright 2021 Jeffrey R. Kaufman - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -int foo(int x) { -        x+=1; -        return x; -} -``` - -For this hypothetical example, assume that MIT.c was placed in a GitHub repository named The Simple Maths Project as an open source community-based project for solving simple arithmetic problems. This project contains many other similar C language files, all under the same MIT License. - -Since this hypothetical example function is so useful (of course it isn't, but stay with me here), it was included to provide simple arithmetic utility in many other open source projects on GitHub. Also, assume that one of these other projects, named The Sustained Chord Calculator, uses this MIT.c source file from The Simple Maths Project to help calculate the musical formulation for suspended chords. - -The hypothetical Suspended Chord Calculator project, in addition to using MIT.c, also includes several source files licensed under GPLv2. When The Suspended Chord Calculator project is compiled, you can assume the resulting executable will contain both GPLv2-licensed software and the MIT-licensed MIT.c as one combined work in such a way that MIT.c cannot be reasonably considered independent and a separate work in itself. That resulting executable would rightly be considered licensed under the GPLv2, and the obligations of the GPLv2 must be complied with. Compliance means providing (or offering to provide for three years) all of the sources used to create the binary or executable, including all the software files licensed under GPLv2 and MIT.c. - -Moving back to our problem… - -Suppose one of your software products uses MIT.c, in addition to your own authored software. Since MIT.c is solely under the MIT License, this would obligate you to comply with only the MIT License terms, which is easy to do. Typically, people comply by providing a copy of the MIT License along with the copyright notice with their software distribution. Or, if you are a company like Red Hat, providing the source code that contains the license text is also a method of compliance—and my recommended approach. (See [_An economically efficient model for open source software license compliance_][4].) - -If you decide to scan the source code of your software product using a source-code scanner of the type that references repositories of open source projects, your scanner may likely report that MIT.c is licensed under the GPLv2! Why? Because it will see MIT.c, in source-code form, associated with The Suspended Chord Calculator project licensed under the GPLv2 and assume, naively, that MIT.c also must be subject to GPLv2 terms. This is notwithstanding that the MIT.c source file is clearly marked with an MIT License, and you copied it only from the original MIT-licensed The Simple Maths Project. - -This is an unfortunate consequence of using these types of scanning systems. In this example, such systems will erroneously report generally every single open source project in its repository that uses MIT.c. There could be tens, hundreds, or even thousands of programs that use MIT.c, all under different licenses, and you will be provided with a giant stack of projects to review indicating that MIT.c could be MIT licensed, BSD licensed, GPLv2 licensed, or, frankly, carry any other open source license under the sun from a project that just happens to use MIT.c. And in the end, you will discover that the file was solely under MIT.c. In my experience, there are very few situations where this type of scanning is warranted and, even when it is justifiable, that the file license results are something other than you expected. It happens, but it is rare. - -There is another type of software scanning system that reports on licensing by looking only for matches to known license texts in the source files of the project. This type of scanner would detect the MIT License text in the source code and correctly report that the software is subject to the terms of the MIT License, notwithstanding the fact that MIT.c may be used in many other open source projects under varying license terms. Although this type of source-code scanner can also have false positives, in my experience, source-code scanners of the type that reference repositories of open source projects have significantly higher rates of misreporting for the reasons discussed previously. - -Frankly, source-code scanners that reference repositories of open source software to ascertain license data can be useful in certain situations, such as when you may be hyper concerned that an engineer has inadvertently copied and pasted source code from an unacceptable license without also copying over the applicable license text. In that situation, a source-code scanner of the type that looks only for matches to license texts would not detect that inclusion. However, as I stated before, this situation is exceptionally rare, making repository-matching source-code scanners prone to errors and a waste of resources for tracking down the truth. This is time and resources that could be devoted to more issues of substance. You can also address this situation by training your developers to never copy software from another source without also copying over any applicable license. - -A scanner that reports the incorrect license is doing a tremendous disservice to your organization by requiring you to resolve a false positive. Countless hours of wasted resources are devoted to these wild-goose chases…as our customer experienced. - -We won't be fooled again! - -* * * - -_I want to thank my colleague Richard Fontana for suggesting the title of this article. Read some of his great articles on Opensource.com under the [Law section][5]._ - -1\. If you want to learn more about music theory and suspended chords, check out Rick Beato's analysis of another great track from The Who at [What Makes This Song Great?™ Ep. 96 The Who][6]. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/21/7/open-source-scanning-error - -作者:[Jeffrey Robert Kaufman][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/jkaufman -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/target-security.png?itok=Ca5-F6GW (Target practice) -[2]: https://en.wikipedia.org/wiki/Pete_Townshend -[3]: tmp.K7c2OyIB7H#1 -[4]: https://opensource.com/article/17/9/economically-efficient-model -[5]: https://opensource.com/tags/law -[6]: https://www.bing.com/videos/search?q=rick+biato+what+makes+this+song+great+who&view=detail&mid=BBF5E938C3E5AD6D73BCBBF5E938C3E5AD6D73BC&FORM=VIRE diff --git a/sources/talk/20210730 What do we call post-modern system administrators.md b/sources/talk/20210730 What do we call post-modern system administrators.md deleted file mode 100644 index 3ae582f9cc..0000000000 --- a/sources/talk/20210730 What do we call post-modern system administrators.md +++ /dev/null @@ -1,76 +0,0 @@ -[#]: subject: (What do we call post-modern system administrators?) -[#]: via: (https://opensource.com/article/21/7/system-administrators) -[#]: author: (Joshua Allen Holm https://opensource.com/users/holmja) -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) - -What do we call post-modern system administrators? -====== -Our community discusses the responsibilities, possible titles, and -potential skills of today's sysadmins. -![Multi-colored and directional network computer cables][1] - -For today's sysadmin, many companies expect you to have cross-platform knowledge, network knowledge, _and_ application knowledge. Add to that a dash of programming ability, a pinch of sysadmin experience, a heaping portion of social skills, and a fanatical commitment to reliability and automation. - -What do we call this new, post-modern sysadmin? Do we use the same term and simply stretch the responsibilities? Or do we give this evolved role a new name? - -We chatted with friends at [Enable Sysadmin][2] and in the Opensource.com Correspondent program to get their thoughts. Here's what we heard: - -### Possible titles - - * How about Enterprise Architect or Solutions Architect?  - * Or are we talking more of a DevOps Engineer or Site Reliability Engineer? - * What level of experience and expertise are we looking at? Maybe an Applications Specialist or IT Helpdesk Administrator? - * Overheard: Platform Engineer or System Engineer - - - -### Potential skills - - * setting up a new user account in Google Workplace or similar - * configuring and ordering laptop, cell phone, service contracts - * software training (teaching a new user how to use kanban boards, shared storage solutions, or similar) - * preparing “procedures” manuals - * monitoring and checking security settings and storage usage - * keeping an eye on pooled storage - * deactivating a user leaving us - * arranging for pickup of equipment - * working with a user and provider having personal equipment difficulties - * keeping an eye on internet connection services, telephone services - - - -### Lingering questions - -Does today's sysadmin need to understand clustering, containers, FS sharding, unicast/multicast coms, and other similar topics? - -Is there a dividing line between infrastructure and systems? - -Could the title of systems administrator remain the same while the role changes? - -Does the image of a sysadmin crawling under the desk to fix broken cupholders still apply? - -Are most of today's sysadmins already using a PaaS approach in tandem with doing the basic administrative tasks of managing users, accounts, applications, and licenses? - -Are they also a helpful resource for colleagues, acting as an interpersonal bridge between other departments and IT? - -**Share your thoughts and experiences in the comments.** - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/21/7/system-administrators - -作者:[Joshua Allen Holm][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/holmja -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/connections_wires_sysadmin_cable.png?itok=d5WqHmnJ (Multi-colored and directional network computer cables) -[2]: https://www.redhat.com/sysadmin/ diff --git a/sources/talk/20210731 Dealing with burnout in open source.md b/sources/talk/20210731 Dealing with burnout in open source.md deleted file mode 100644 index 6d45dcf71c..0000000000 --- a/sources/talk/20210731 Dealing with burnout in open source.md +++ /dev/null @@ -1,105 +0,0 @@ -[#]: subject: (Dealing with burnout in open source) -[#]: via: (https://opensource.com/article/21/7/burnout-open-source) -[#]: author: (Kiran Oliver https://opensource.com/users/kiranoliver-0) -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) - -Dealing with burnout in open source -====== -What it is, why you should care, and how you can help prevent burnout. -![Red heart with text "you are not alone"][1] - -Burnout is something you don't expect to happen to you—until it does. The technology industry is one of the worst offenders; over [60% of industry professionals][2] report they've experienced burnout. Sixty percent! Chances are, you or someone you know has dealt with it. How can we tackle such a staggering burnout rate if those who make decisions about mental health barely know what burnout is, never mind how to prevent it? - -The answer is to start simple. Ask the question "what is burnout?" and go from there. - -![Definition of burnout][3] - -(Kiran Oliver, [CC BY-SA 4.0][4]) - -### Autistic burnout, neurodivergence, and mental health - -At [Upstream 2021][5], the Tidelift event that kicked off Maintainer Week celebrating open source maintainers, I gave [a talk about burnout in open source][6]. The individuals who attended my presentation shared their experiences with burnout and mental health as a whole, which are undeniably linked. - -Burnout manifests in cognitive, emotional, and physical symptoms. It can take on different forms that are unique to the individual experiencing it. - -Also, people who are [neurodivergent][7] (e.g., have autism, ADD/ADHD, dyslexia, dyspraxia, etc.) may have standard burnout symptoms, but it can also manifest as [autistic burnout][8], which is often harder to pin down. Crucially, burnout in neurodivergent employees can look like someone is slacking off, not doing their job, or missing important details, when none of these things are correct. - -### How to help people experiencing burnout - -When addressing burnout on a team, managers can do a few things to ensure the team has a psychologically safe environment: - - 1. Ask your human resources department if your insurance company offers mental health services. - 2. Make sure employees know about your company insurance plan's mental health benefits. - 3. Offer flexible time off. - 4. Be flexible with deadlines, if possible. - 5. Use asynchronous meetings. - 6. Embody best practices by taking time off and encouraging your team to do so. - 7. Learn to recognize the signs of burnout in yourself and others. - - - -As an individual contributor, you might be wondering how you can help your teammates. Here are some things that you can do: - - 1. Assign someone to triage issues, or implement an auto-labeling process on your team's kanban and ticketing systems. - 2. Make use of integrations and [productivity tools][9].  - 3. [Automate your business processes][10] wherever possible. - 4. Have a clearly defined process for code reviews. - 5. Encourage maintainers and contributors to take breaks. - 6. Understand and recognize the signs of burnout in yourself and others. - - - -### Burnout in open source communities - -In open source communities, burnout can lead to not responding to pull requests or leaving issues open for an extended period of time. It can look like missing meetings, roadmap deadlines, or general forgetfulness. It can also produce emotional fatigue, [anxiety][11], and stress, so someone might be more tired than usual or speak in a tone of voice different from their usual. They may also feel drained and lack the motivation to contribute to open source while struggling with burnout. For open source project maintainers, burnout can be a real challenge that the entire industry must continue to address. - -![What's under the surface of burnout][12] - -(Kiran Oliver, [CC BY-SA 4.0][4]) - -Recognizing burnout requires vulnerability on behalf of the person experiencing it as well as understanding and compassion from any person told about a team member feeling this way. If someone tells you they are burned out, respect and keep this information private. Do not broadcast it publicly, nor share it with anyone who does not need to know for official medical or legal reasons.  - -### Key takeaways - -Burnout is a genuine issue that impacts many open source practitioners. Here are some tips for how to address it in open source organizations and communities: - - * Be more accepting of neurodivergence in the workplace. - * Create supportive policies and procedures for employees in your organization or open source community that may be experiencing burnout. - * If you are a contributor to a large open source project, make sure you use automation and tools that allow people to step away and take a break with ease. - * Lean on your community for support. - * Learn to recognize the signs of burnout—not only in yourself but also in others. - * Support your community, and remember that it's okay to admit to feeling burned out. - - - -Do you have any other tips for dealing with burnout, either personally or with your open source colleagues? Please share them in the comments. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/21/7/burnout-open-source - -作者:[Kiran Oliver][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/kiranoliver-0 -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/red-love-heart-alone-stone-path.jpg?itok=O3q1nEVz (Red heart with text "you are not alone") -[2]: https://usblog.teamblind.com/wp-content/uploads/2020/03/TheStateof-Burnout2020.pdf -[3]: https://opensource.com/sites/default/files/uploads/burnoutdefinition.png (Definition of burnout) -[4]: https://creativecommons.org/licenses/by-sa/4.0/ -[5]: https://upstream.live/ -[6]: https://www.youtube.com/watch?v=WlQmwAJc5n4&list=PLDlsR_qA-s0gbycSxXNQIF_LhsMThD3Zi&index=9 -[7]: https://neurocosmopolitanism.com/neurodiversity-some-basic-terms-definitions/ -[8]: https://www.autism.org.uk/advice-and-guidance/topics/mental-health/autistic-fatigue/autistic-adults -[9]: https://opensource.com/article/21/1/open-source-productivity-apps -[10]: https://camunda.com/solutions/human-workflow/ -[11]: https://www.ncbi.nlm.nih.gov/pmc/articles/PMC6424886/ -[12]: https://opensource.com/sites/default/files/uploads/burnouticeburg.png (What's under the surface of burnout) diff --git a/sources/talk/20210805 Your one-on-one meeting doesn-t have to be this way.md b/sources/talk/20210805 Your one-on-one meeting doesn-t have to be this way.md deleted file mode 100644 index d0ba255c60..0000000000 --- a/sources/talk/20210805 Your one-on-one meeting doesn-t have to be this way.md +++ /dev/null @@ -1,86 +0,0 @@ -[#]: subject: "Your one-on-one meeting doesn't have to be this way" -[#]: via: "https://opensource.com/open-organization/21/8/one-on-one-meeting-tips" -[#]: author: "Catherine Louis https://opensource.com/users/catherinelouis" -[#]: collector: "lujun9972" -[#]: translator: " " -[#]: reviewer: " " -[#]: publisher: " " -[#]: url: " " - -Your one-on-one meeting doesn't have to be this way -====== -One-one-one meetings are opportunities for growth. But that's only -possible if you're transparent and collaborative about them. -![A hand reaching out.][1] - -Whenever I'm speaking with colleagues and clients near the end of a quarter, I often hear from managers rushing to squeeze their one-on-one meetings with employees into tight deadlines. Every time I ask an employee if they've enjoyed their one-on-one with a manager, the answer is unanimously "no." And every time I ask a manager if they've enjoyed their one-on-one with an employee, the answer is unanimously "no, but I have to do it." - -So what we have is a constantly recurring event that no one seems to prioritize, no one seems to enjoy, and no one seems to benefit from. And we choose to end every fiscal quarter like this. - -But it doesn't have to be this way. By thinking and acting openly, we can reframe and reinvent our one-on-one meetings to be productive, beneficial, and even _enjoyable_. - -Managers and other organizational leaders [bear their own set of responsibilities and can apply their own tactics for opening up one-on-one meetings][2]. In this article, I'll discuss what employees can do to ensure more open, honest, compelling, and fulfilling one-on-one meetings with their managers—and offer some examples of ways they can initiate the conversation. - -### Be transparent about your goals - -Be clear with your manager about the goals of your one-on-ones. This might sound strange; however, without structure and clear intent, these meetings can quickly go astray. Before the meeting, really think about what you want to accomplish and how your manager could help you achieve this. Which of your manager's more admirable skills and abilities could you benefit from learning more about? Are you in this role as a stepping stone for another position? Do you have a difficult time negotiating with certain stakeholders, and could your manager help with this? To decide what to prioritize in your one-on-ones, try this: Write today's date one year from now, then imagine the place where you want to be in your career. Using this vision as a starting point, work backward and craft goals you believe your manager can help you achieve on the road to getting where you'd like to be. - -**What this sounds like:** "I'd really like for our one-on-ones to be a dedicated time with you for open-ended conversation, for coaching, mentoring for me to achieve my next goal of {X} to get to know one another better, to provide each other context, or even for venting." - -And at the end of your _current_ one-on-one meeting, establish the goals of your _next_ one-on-one meeting and record them (see below) so you're both clear on what you'll need to prepare to discuss. - -**What this sounds like:** "Given that you've provided me with a path forward, I think the focus of our meeting should be my increased network opportunities with this new contact that you will have provided me." Or, if you're stuck and don't sense an immediate opportunity for forward movement (sometimes the case with sticky problems) end your meeting with a question to establish clear goals: "What can we both do between now and our next meeting to make progress on this situation?" - -So what we have is a constantly recurring event that no one seems to prioritize, no one seems to enjoy, and no one seems to benefit from. And we choose to end every fiscal quarter like this. - -### Accelerate your meeting cadence - -Change is easier when opportunities for feedback are more frequent. Ask your manager to let _you_ schedule one-on-one meetings with her, letting her know they'll happen more frequently than every quarter. Find your meeting cadence based on what is really happening in your work context. Always conclude your current one-on-one meeting by scheduling your next one. Soon you'll get into a nice rhythm. And try not to skip one-on-ones; instead of cancelling, reschedule them. - -**What this sounds like:** "I'd love help with my career here at {company X}, and to do this I'd like to be able to access your calendar for guidance at the time I'll have the need." - -To accelerate your feedback cadence even further, consider asking your manager to provide direct feedback in context rather than waiting to receive this feedback in a one-on-one at some later date. If you wait until the end of the quarter to hear feedback, there's very little you can learn, as you'll probably not remember what even happened to prompt the feedback you actually needed three months earlier. - -**What this sounds like:** "Would you mind giving me direct feedback at the time you notice something? I like to learn immediately, in context, and if it's praise or criticism, please provide this feedback with me privately." - -### Close your feedback loops - -One-on-one meetings should be rich opportunities for mutual feedback. Before you've finished, don't forget to remind your managers what you need from _them_, too. And most importantly, make sure they follow through. Even when people are acting with the best intentions, they're still busy and important conversational threads that begin in meetings can get lost when everyone gets back to work. You know how it goes: You've had a fantastic one-on-one with your manager. You've discussed a sticky situation, and your manager says, "I have a great solution for this. I have a colleague working in a different department who I believe knows a great deal about this, and I promise to get back to you with more guidance before our next meeting next month." And then the next meeting happens and you've both forgotten all about it. - -Keep an open, accessible, _shared record_ of what you've discussed at your one-on-one meetings and update this to include specific actions both you and your manager will take before you meet again. Reinforce your needs verbally; stress how important they are, and be clear that the focus of your next one-on-one will be the items you've already told your manager you need to do your best work. - -**What this sounds like:** "Wow that would be great. It's really important to me. Let's write this down so we don't forget." - -One-on-one meetings should be rich opportunities for mutual feedback. Before you've finished, don't forget to remind your managers what you need from them, too. - -### Skip status updates - -Don't let your one-on-one become another status meeting. Why? - - * If the discussion concerns a product you're working on, others on your team would likely benefit from being part of it; if you're being updated now, you're a bottleneck for this information. - * If you go down this path, you'll have no time to discuss the things you've already said you need to discuss (see above).  - * It's easy for your manager to listen, but it's also a way to avoid difficult conversations; attending a Scrum of Scrums meeting, for example, would be the place to hear updates. - - - -**What this sounds like:** "Every team member updates their status daily just prior to the Daily Scrum and the status of the three teams can be heard in the Scrum of Scrums. I'd rather use this hour with you to get your coaching on my career, problems with negotiating with stakeholder Y, and feedback on my personal development progress. If we don't have time to do this now, can we reschedule?" - -### Working for you? - -One-on-one meetings should be productive and energizing. If they aren't, you might need to open them up a bit. Hopefully the ideas I've shared here can help you do just that. And perhaps you have your own tips for making your one-on-one meetings spectacular. I hope you'll share them if you do. - --------------------------------------------------------------------------------- - -via: https://opensource.com/open-organization/21/8/one-on-one-meeting-tips - -作者:[Catherine Louis][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/catherinelouis -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/rh_003784_02_os.comcareer_job_rh1x_1.png?itok=b1dy5tlv (A hand reaching out.) -[2]: https://opensource.com/open-organization/18/5/open-one-on-one-meetings-guide diff --git a/sources/talk/20210811 My first programming language and early adventures.md b/sources/talk/20210811 My first programming language and early adventures.md deleted file mode 100644 index 529b8ef4f9..0000000000 --- a/sources/talk/20210811 My first programming language and early adventures.md +++ /dev/null @@ -1,116 +0,0 @@ -[#]: subject: "My first programming language and early adventures" -[#]: via: "https://opensource.com/article/21/8/my-first-programming-language" -[#]: author: "Tomasz Waraksa https://opensource.com/users/tomasz" -[#]: collector: "lujun9972" -[#]: translator: " " -[#]: reviewer: " " -[#]: publisher: " " -[#]: url: " " - -My first programming language and early adventures -====== -A student in 1988 in Poland is invited to a computer lab. -![Old UNIX computer][1] - -A few days ago, contributors to Opensource.com were asked to share our personal stories about how we got into programming. Many entertaining and fascinating responses were submitted. It would be interesting to quantify these data in time. Intriguing patterns emerged. The 70s generation was nostalgic about Fortran, punch cards, and dial-up access to shared mainframes. 80s kids (amongst which I qualify) shared stories of C, BASIC, or Pascal and their beloved Atari and Commodore computers. Surprisingly few stories from the 90s arrived. Almost like there's a generation gap. Maybe teenagers were running away in horror from C++, MFC, and the dreaded Hungarian notation, which was the order of the day. Then there's strange silence from the youngest generation. Maybe our young Raspberry Pi enthusiasts are [too busy making things][2]. - -Here's more about my road to programming. - -### My first programming language - -My first programming language was Microsoft BASIC. I learned it on the mighty MSX SpectraVideo 738 home PC. The MSX standard was a home computer architecture based on the Z80 CPU. Developed in the 80s by Microsoft, it was produced by Sony, Philips, Pioneer, Sharp, Yamaha, and many other vendors. My home country is Poland, and we were still under communist rule, and cut off from modern IT technology due to economic sanctions against us. But the winds of change came during the late 80s, and the MSX Spectravideo made it to my school. - -![MSX Specravideo 738][3] - -Image CC BY-SA [Hans Otten][4] - -I was a student at the time, so I wasn't paid. I got so fascinated with programming that I would be willing to pay myself for the pleasure. Thankfully, all schools and universities were free at that time. Imagine you would start your IT career with zero debt! I started during my early high school years, in 1988 in Poland. I had been growing long hair, playing guitar, listening to Black Sabbath, and hoping to have a rock band one day—all the while missing out on computers. And I had a friend, who I'll call Mr. Briefcase. He was another student, and also a computer nerd with a reputation. He entered the room one day and asked _how are you?_ He had to listen to me for a while, because the Polish _will_ tell you how they are, if you ask. Then he said: _"Hey, I'm going to the computer lab. You can join me. There's no one there today except me."_ I jumped excitedly: _"The entire evening?"_ He answered: _"Sure thing. I'll be busy, but you can play games and stuff."_ - -When we first entered the lab, it felt like a Star Destroyer command center from [Star Wars][5]. The following hardware was available: - - * One beautiful IBM PC clone, Spectravideo SVI-838 xPress-16 with an excellent clickety keyboard—no modern mechanical keyboard has yet been able to replicate that experience. Unfortunately, it was off-limits for newcomers like me. - * ZX Spectrums—I was not too fond of these, since they looked like toys with their rubbery keyboards. - * Futuristic MSX SVI-738 computers with color screens and Seikosha dot-matrix printers. - - - -The choice was made. I played for a while but got bored very quickly. I asked Mr. Briefcase: - -**Me**: _So what is it that you’re doing?_  - -**Briefcase**: _Programming._  - -**Me**: _How do you do that?_  - -**Briefcase**: _Here._ - -And he threw a manual at me. - -### Hello world - -I ran through the "hello world!" examples, and then stumbled onto a chapter about computer graphics. It turned out that our MSX had impressive graphic capabilities. After an hour of struggling with English, which was still foreign to me, there it was—my first working computer program, written in BASIC. I was thrilled, flabbergasted, and completely hooked. I could command this computing device to _do things_. Beautiful things. Utterly stupid things. Boring things. And it would do them all, without hesitation, line after line, only sometimes responding with `Syntax error!` - -It was pure magic! The very next day, I signed up for the computer lab. - -### Computer graphics - -In the following months, I had a lot of fun with computer graphics. Those machines were amazingly efficient in educating young people in computing. Programming a language interpreter was the only way to interact with it. It booted, and you had to enter commands to do anything useful. If you were curious enough, you would inevitably ask—are there more commands? In the end, you got sucked into programming without even knowing it. The entry threshold was so low. - -![Code][6] - -Image CC0 Alan Smithee - -For example, to draw a circle on the screen, all I had to do was: - - * Boot the computer and wait a few seconds. Yes, it only took seconds to boot! - * Write `10 CIRCLE 100`,`100`,`50` and press **ENTER**. Yes, we had to number the lines ourselves. - * Write `run` and press **ENTER**. - - - -There was a simplicity to programming in those days. Today, you have choices to make before you write a single line of code. You have to choose your development platform (web, desktop, both), your programming language, your framework, and more. - -Of course there are always choices to make, but it feels simpler when all you need are a few resources, and when your computer has only **64kB** of memory—the usual on 8-bit machines. To give you a sense of scale—a single high-resolution desktop icon on my Pop_OS Linux box can be bigger than that. Yet within this tiny memory, it could run an operating system and an academic-grade compiler. It could run graphic programs with flawless sprite animation and collision detection. It would play percussion tracks through a programmable noise generator. I have to admit, [I know it's possible][7] but I hardly know where to begin with these kinds of activities today. - -### Pascal and beyond - -My MSX had a 3.5" floppy drive—an amazing thing these days. One day we received floppies with the CPM 2.2 operating system and a [Turbo Pascal 3.0 compiler][8]. This is how I tasted my first actual programming language, while avoiding further exposure to BASIC. Turbo Pascal was beautiful: expressive, concise, safe, and structured. There's an anecdotal theory about why programmers from Central and Eastern Europe have such highly valued skills. In western countries, C and C++ were the order of the day, full of fun quirks and idiosyncrasies. Over here though, we started with Pascal. It was a programming language of choice in schools and universities. The differences between these two are substantial, and the theory is that they wired our young minds in a substantially different way. - -![Turbo Pascal][9] - -Image [Public Domain][10] - -Pascal was much more disciplined than C, and it was as "close to the metal" as it gets. Pascal had pointers, direct memory operations, and even `asm ... end` block for assembly code injection. Yet pointers weren't thrown in everywhere like they are in C, and buffer overflow attacks through null-terminated strings were non-existent. Strings in Pascal is just an array of characters, and only the first entry contains the explicit string length. Simple! It also had a proper module system, precompiled libraries, strict type control, and a blazing fast compiler on top of that. - -Turbo Pascal had an enormous impact on the way I think while programming. Eventually it implemented object-oriented programming, and smoothly prepared me for complex software architectures and programming on Windows with Borland Delphi. I touched C and C++ only when I had no other choice. - -Decades later, I've realized that all my career, I have unconsciously followed in the footsteps of [Anders Hejlsberg][11]. He and his team were creators of a highly successful line of Turbo compilers at Borland. Then they created Delphi, which was a relief for Windows programmers struggling with Visual Basic, WFC, MFC, Charles Petzold books, and Hungarian notation. After Borland, he continued at Microsoft and created [.NET][12], which I happily jumped into. Finally, he created TypeScript, which became the backbone of modern enterprise web development. - -Nowadays, I'm busy architecting and developing large web applications for enterprises. JavaScript and TypeScript is the order of the day, with back-ends running on NodeJS, .NET, or Python and writing little utilities and scripts with Python and Bash, and struggling with complexities of cloud computing and [YAML][13]. After all these years, I still enjoy the thrill. I can't imagine a more satisfying job that keeps challenging me and never gets dull and boring. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/21/8/my-first-programming-language - -作者:[Tomasz Waraksa][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/tomasz -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/retro_old_unix_computer.png?itok=SYAb2xoW (Old UNIX computer) -[2]: https://opensource.com/articles/21/3/raspberry-pi-projects -[3]: https://opensource.com/sites/default/files/svi738.jpg (MSX Specravideo 738) -[4]: http://msx.hansotten.com/special-msx-hardware/svi-738-xpress/ -[5]: https://opensource.com/article/21/5/open-source-star-wars -[6]: https://opensource.com/sites/default/files/basic.jpg (Code) -[7]: https://opensource.com/article/17/10/python-101 -[8]: https://en.wikipedia.org/wiki/Turbo_Pascal -[9]: https://opensource.com/sites/default/files/uploads/turbo-pascal.png (Turbo Pascal) -[10]: https://commons.wikimedia.org/wiki/File:Turbopascal_6.png -[11]: https://en.wikipedia.org/wiki/Anders_Hejlsberg -[12]: https://opensource.com/article/19/9/getting-started-net -[13]: https://www.redhat.com/sysadmin/yaml-beginners diff --git a/sources/talk/20210818 Setting new expectations for open source maintainers.md b/sources/talk/20210818 Setting new expectations for open source maintainers.md deleted file mode 100644 index 55f4191660..0000000000 --- a/sources/talk/20210818 Setting new expectations for open source maintainers.md +++ /dev/null @@ -1,104 +0,0 @@ -[#]: subject: "Setting new expectations for open source maintainers" -[#]: via: "https://opensource.com/article/21/8/open-source-maintainers" -[#]: author: "Luis Villa https://opensource.com/users/luis" -[#]: collector: "lujun9972" -[#]: translator: " " -[#]: reviewer: " " -[#]: publisher: " " -[#]: url: " " - -Setting new expectations for open source maintainers -====== -The continued maturation of open source has regularly placed new burdens -on maintainers. -![Practicing empathy][1] - -For a long time, there were two basic tests for releasing open source: "Does it do what I need it to do?" and "Does it compile?" - -Sure, it was nice if it did things for others, but more than anything else, it at least needed to be fun for the developer and run at all for others. Then with the rise of package management, things leveled up a bit: "Is it packaged?" Shortly after that, the increasing popularity of [test-driven development][2] added another requirement: "Do the tests pass?" - -Each of these new requirements made more work for open source maintainers, but (by and large) maintainers didn't grump too much about them. I think this happened for two reasons: First, the work was often aligned with skills developers needed to learn for their jobs, and second, they were broadly perceived as beneficial for all users of the software, not just corporate developers. - -But that is changing—and in ways that may not work out so well for open source and enterprises. - -### The new enterprise burdens - -Here in 2021, it's clear that a new set of standards for open source is coalescing. These bring new labor to be done, either by open source developers or as part of a metadata overlay. These new standards include:  - - * **Security information and auditing**: Security assessments of open source packages have traditionally been carried out by third parties, either through in-house security teams or by the distributed process coordinated through the [MITRE Common Vulnerabilities and Exposures][3] database. With new security training like the Linux Foundation's CII badges and projects like OpenSSF and Google's SLSA, the new buzzword is "end to end"—meaning maintainers and projects must make themselves security experts and create security controls. While this is almost certainly a good idea for the industry overall, it's yet more work expectations with no immediate prospect of compensation. - * **Legal metadata**: Traditionally, open source communities like GNU, Debian, and Fedora believed (with good reason) that the default level of mandatory licensing metadata was at the package level, with per-file licensing information often disfavored at best and unrepresentable at worst. SPDX, followed more recently by clearlydefined.io, has decided that license information must be complete, machine-readable, and accurate in every file. This is clearly correct for all users, but the vast majority of the benefit accrues the most deep-pocketed enterprises in practice. In the meantime, if we want accurate global coverage, the vast majority of the burden will fall on maintainers and require intricate legal assessment. (Adding these to the Linux kernel [took literally years][4].) - * **Procurement information**: The newest ask from the industry is to provide Software Bills of Material (SBOM) throughout the software stack—which inevitably includes vast quantities of open source. Again, this is not entirely unreasonable, and indeed open source has long led the way here via the package management techniques that open source language communities pioneered. But the completeness of coverage and depth of information being demanded (including, in some proposals, [information about the identity of developers][5]) is a step-change in what is required—primarily to benefit the governments and massive enterprises that can afford to do the detailed, package-by-package analysis of software provenance. - - - -This new work may be quite different from previous waves of new obligations for open source developers—and we should think about why that is and what we might do about it. - -### Is this work going to work? - -As I suggested in the opening to this piece, the continued maturation of open source has regularly placed new burdens on maintainers. (At Mozilla, we used to call these "table stakes"—a poker term, indicating the things you had to do to even sit at the poker table, or in tech terms, to be considered for enterprise use.) So in some sense, this new wave of obligations is nothing new. But I do want to suggest that in two significant ways, these new mandates are problematic. - -First, this work is increasingly highly specialized and so less helpful for individual maintainers to learn. The strongest open source developers have always had diverse skills (not just coding, but also marketing, people management, etc.). That's been part of the draw of open source—you learn those things along the way, making you a better developer. But when we start adding more and more requirements that specialists (e.g., a legal team or a security team) would cover in a corporate setting, we reduce the additional value to developers of participating in open source. - -To put it another way: Developers clearly serve their self-interest by learning basic programming and people skills. It is less clear that they serve their self-interests by becoming experts in issues that, in their day jobs, are likely delegated to experts, like procurement, legal, and security. This works out fine in open source projects big enough to have large, sophisticated teams, but those are rare (even though they gather the lion's share of press and attention). - -Second, these new and increasingly specialized requirements primarily benefit a specific class of open source users—large enterprises. That isn't necessarily a bad thing—big enterprises are essential in many ways, and indeed, the risks to them deserve to be taken seriously. - -But in a world where hundreds of billions of dollars in enterprise value have been created by open source, and where small educational/hobby projects (and even many small companies) don't really benefit from these new unfunded mandates, developers will likely focus on other things, since few of them got into open source primarily to benefit the Fortune 500.  - -In other words, many open source developers enjoy building things that benefit themselves and their friends and are even willing to give up nights and weekends for that. If meeting these new requirements mostly benefits faceless corporations, we may need to find other carrots to encourage developers to create and maintain new open source projects. - -![Tidelift 2021 maintainer survey results][6] - -According to the Tidelift 2021 open source maintainer survey, open source maintenance work is often stressful, thankless, and financially unrewarding. - ([Tidelift][7]) - -### Why "unfunded mandate?" - -In U.S. politics, an "unfunded mandate" occurs when a government requires someone else (usually a lower-level government) to do new work while not funding the new work. Bradley M. Kuhn gave me the inspiration to use the term "unfunded mandate" in [a recent Twitter post][8]. - -Sometimes, unfunded mandates can be good—many times, they are used to create equity and justice programs, for example, that local governments really should be doing as a matter of course. Arguably, many security initiatives fall into this category—burdensome, yes, but necessary for all of us to use the internet effectively. - -But other times, they just create work for small entities that are already overwhelmed juggling the responsibilities of modern governance. If that sounds familiar to open source developers, no surprise—[they're already burnt out][7], and this is creating more work without creating more time or money. - -![Tidelift survey results showing half of maintainers quit because of burnout.][9] - -According to the Tidelift 2021 managed open source survey, more than half of maintainers have quit or considered quitting because they were experiencing burnout. -([Tidelift][10]) - -### Aligning incentives—by paying the maintainers - -We were pleased to see Google call this issue out in [a recent filing on SBOMs][11] with the National Telecommunications and Information Administration (NTIA). - -> "Unfortunately, much of the burden of maintaining our digital infrastructure falls on the backs of unpaid, volunteer contributors. The NTIA should carefully evaluate ways to fund and assist these communities as they work with industry to comply with new regulations." - -Tidelift's filling to the same NTIA call for comments made similar points about money, scale, and reliability. In response, in [its own summary][12], the NTIA acknowledged that "funding sources" are a challenge and also said:  - -> "Further research is necessary to understand the optimal … incentives for sharing, protecting, and using SBOM data." - -Given the dynamic of increasing professionalization—or to put it more bluntly, increasing work—that I've described above, it is refreshing to see an acknowledgment from significant industry players that developer incentives should be considered as we move into the next era of open source. We, as an industry, must figure out how to address this together, or we'll both fail to reach our goals and burn out developers—the worst of all worlds. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/21/8/open-source-maintainers - -作者:[Luis Villa][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/luis -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/practicing-empathy.jpg?itok=-A7fj6NF (Practicing empathy) -[2]: https://opensource.com/article/20/1/test-driven-development -[3]: https://cve.mitre.org/ -[4]: https://lwn.net/Articles/739183/ -[5]: https://security.googleblog.com/2021/02/know-prevent-fix-framework-for-shifting.html -[6]: https://opensource.com/sites/default/files/pictures/tidelift-survey-2021-1.png (Tidelift 2021 maintainer survey results) -[7]: https://blog.tidelift.com/finding-4-open-source-maintenance-work-is-often-stressful-thankless-and-financially-unrewarding -[8]: https://twitter.com/richardfontana/status/1408170067594985474 -[9]: https://opensource.com/sites/default/files/pictures/tidelift-survey-2021-2.png (Tidelift 2021 maintainer survey results about burnout) -[10]: https://blog.tidelift.com/finding-5-more-than-half-of-maintainers-have-quit-or-considered-quitting-and-heres-why -[11]: https://www.ntia.doc.gov/files/ntia/publications/google_-_2021.06.17.pdf -[12]: https://www.ntia.gov/files/ntia/publications/sbom_minimum_elements_report.pdf diff --git a/sources/talk/20210825 10 steps to more open, focused, and energizing meetings.md b/sources/talk/20210825 10 steps to more open, focused, and energizing meetings.md deleted file mode 100644 index 0a5c920d8c..0000000000 --- a/sources/talk/20210825 10 steps to more open, focused, and energizing meetings.md +++ /dev/null @@ -1,99 +0,0 @@ -[#]: subject: "10 steps to more open, focused, and energizing meetings" -[#]: via: "https://opensource.com/open-organization/21/8/10-steps-better-meetings" -[#]: author: "Catherine Louis https://opensource.com/users/catherinelouis" -[#]: collector: "lujun9972" -[#]: translator: " " -[#]: reviewer: " " -[#]: publisher: " " -[#]: url: " " - -10 steps to more open, focused, and energizing meetings -====== -Constructing your meetings with open organization principles in mind can -help you avoid wasted time, effort, and talent. -![Open lightbulbs.][1] - -The negative impact of poorly run meetings is [huge][2]. So leaders face a challenge: how do we turn poorly run meetings—which have a negative impact on team creativity, success, and even cause stress and anxiety—to meetings with positive outcomes? But to make the situation even tougher, we now find most meetings are being held remotely, online, where attendees' cameras are off and you're likely staring at a green dot at the top of your screen. That makes holding genuinely productive and useful meetings an even greater challenge. - -Thinking about your meetings differently—and constructing your meetings with [open organization principles][3] in mind—can help turn your next remote meeting into an energizing experience with positive outcomes. Here are some guidelines to get you started. I'll explain steps you can take as you _prepare for_, _hold_, and _follow up from_ your meetings. - -### Preparing for your meeting: - -#### 1\. Protect everyone's time - -First, you'll need to reflect on the reason you've calling a meeting in the first place. As a meeting leader, you must recognize your role as the person who could kill productivity and destroy the ability for attendees to be mindfully present. By holding a meeting and asking people to be there, you are removing hours from people's days, exhausting the time they have to spend—and time is a non-replenishable resource. So imagine instead that you are a _guardian_ of people's time. You need to treat their time with respect. Consider that the only reason _why_ you're holding a meeting in the first place is to _keep from_ wasting time*.* For example, if you see a group thrashing over a decision again and again because the wrong people were involved in an email chain, instead suggest holding a half-hour meeting to reach a consensus, thereby saving everyone's time in the end. One way to think about this: Treat employees the same way you'd treat your customers. You would never want a customer to feel they were invited to a meeting that was a waste of their time. Adopting this mindset, you'll instantly become sensitive to scheduling meetings over someone's lunch hour. If you commit to becoming a time saver, you'll become more intentional in _all aspects_ of meeting planning, executing, and closing. And you will get better and better at this as a result. - -#### 2\. Use tools to be more inclusive - -Like all meetings, remote meetings can contain their moments of silence, as people think, reflect, or take notes. But don't take silence as an indication of understanding, agreement, or even presence. You want to hear input and feedback from everyone at the meeting—not just those who are most comfortable or chatty. Familiarize yourself with some of the growing list of fantastic apps (Mentimeter, Klaxoon, Sli.do, Meeting pulse, Poll Everywhere, and other [open source tools][4]) designed to help attendees collaborate during meetings, even vote and reach a consensus. Make use of video when you can. Use your chat room technology for attendees to share if they missed something or raise a hand to speak, or even as a second channel of communication. Remote meeting tools are multiplying at an exponential rate; bone up on new ones to keep meetings interesting and help increase engagement. - -#### 3\. Hone your invitation list - -When preparing invitations to your meeting, keep the list as small as possible. The larger the group, the more time you'll need, and the quality of a meeting tends to decrease as the size of the meeting increases. One way to make sure you have the right people: instead of sending out topics for discussion, send a preliminary note to participants you think could add value, and solicit questions. Those who answer the preliminary questions will be those who need to attend, and these are the people who you need to invite. - -Treat employees the same way you'd treat your customers. You would never want a customer to feel they were invited to a meeting that was a waste of their time. - -#### 4\. Time box everything, and adapt - -With our shorter attention spans, [stop defaulting to hour long meetings][5]. Don't hesitate to schedule even just 15 minutes for a meeting. Reducing the meeting length creates positive pressure; [research shows][6] that groups operating under a level of time pressure (using time boxing) perform more optimally due to increased focus. Imagine that after five minutes of one person speaking, everyone else in the meeting will begin to multitask. This means that as a facilitator you have just five minutes to present a concept. Use just these five minutes, then ask for connections: Who knows what about this topic? You'll learn there are experts in the room. Time box this activity, too, to five minutes. Next, break into small groups to discuss concrete practices and steps. Time box this for just 10 minutes, then share how far folks got in that shortened time box. Iterate and adjust for the next time box, and reserve yet another one for takeaways and conclusions. - -#### 5\. Make your agenda transparent - -Make meeting details as transparent as possible to everyone who's invited. The meeting agenda, for example, should have a desired outcome in the subject line. The opening line of the agenda should state clearly why the meeting needs to be held. For example: - -"The choice of go-forward strategy for Product A has been thrashing for two weeks with an estimate of 60 or more hours of back and forth discussion. This meeting is being called with the people involved to agree on our go-forward plan." - -Agenda details should outline the time boxes you've outlined to accomplish the goal. Logistics are critical: if you wish cameras to be on, ask for cameras to be on. And even though you've thought thoroughly about your invitee list, note that you may still have invited someone who doesn't need to be there. Provide an opt-out opportunity. For example: - -"If you feel you cannot contribute to this meeting and someone else should, please reach out to me with their contact information." - -### Conducting your meeting: - -#### 6\. Be punctual - -Start and end the meeting on time! Arrive early to check the technology. As the meeting leader, recognize that your mood will set the tone for your attendees. So consider beginning the meeting with appreciations, recognitions, and statements of gratitude. Beginning a meeting on a positive note establishes a positive mood and promotes creativity, active listening, and participation. You'll find your meeting will be more constructive as a result. - -Like all meetings, remote meetings can contain their moments of silence, as people think, reflect, or take notes. But don't take silence as an indication of understanding, agreement, or even presence. - -#### 7\. Engineer your meeting's culture - -In the meeting itself, use Strategyzer's [Culture map][7] to create the culture you want for the meeting itself. You do this by agreeing the desired outcome of the meeting, asking what can enable or block attendees from achieving this outcome, and identifying the behaviors the group must exhibit to make this happen. Silently brainstorm with post-its on a jamboard, then have folks actively share what can make this meeting successful for all. - -#### 8\. Invite collaboration - -In openly run meetings, the best ideas should emerge. But this can only happen with your help. Recognize your role as a meeting leader who must remain neutral and encourage collaboration. Look for those who aren't participating and provide tools (or encouragement) that will help them get involved. For example, instead of verbal brainstorming, do a silent and anonymous brainstorm using stickies in a jamboard. You'll begin to see participation. Stick to the agenda and its time boxes, and watch for folks that talk over others:  - -"Sara, Fred wasn't finished with his thought. Please let him finish." - -### Closing and and reviewing your meeting: - -#### 9\. Write it down - -Openly run meetings should result in openly recorded outcomes. Be sure your agenda includes time for the group to clarify takeaways, assign action items, and identify stakeholders who'll be responsible for completing work. - -#### 10\. Close the loop - -Finally, review the meeting with a retrospective. Ask for feedback on the meeting itself. What worked in your facilitation? What was lacking? Does anyone have ideas for ways to improve the next meeting? Were any questions unanswered? Any epiphanies reached? Taking in this feedback, actually coming up with a new experiment for the next meeting to address the improvements. Attendees at your next meeting will be more than grateful, and in the long run you'll improve your meeting facilitation skills. - -The path to collaboration is usually paved with the best intentions. We all know too well that this... - --------------------------------------------------------------------------------- - -via: https://opensource.com/open-organization/21/8/10-steps-better-meetings - -作者:[Catherine Louis][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/catherinelouis -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/osdc_520x292_openlightbulbs.png?itok=nrv9hgnH (Open lightbulbs.) -[2]: https://ideas.ted.com/the-economic-impact-of-bad-meetings/ -[3]: https://theopenorganization.org/definition -[4]: https://opensource.com/article/20/3/open-source-working-home -[5]: https://opensource.com/open-organization/18/3/open-approaches-meetings -[6]: https://learn.filtered.com/hubfs/Definitive%20100%20Most%20Useful%20Productivity%20Hacks.pdf -[7]: https://www.strategyzer.com/blog/posts/2015/10/13/the-culture-map-a-systematic-intentional-tool-for-designing-great-company-culture diff --git a/sources/talk/20210831 How my team built an open source learning experience platform.md b/sources/talk/20210831 How my team built an open source learning experience platform.md deleted file mode 100644 index b9a8cc6dbc..0000000000 --- a/sources/talk/20210831 How my team built an open source learning experience platform.md +++ /dev/null @@ -1,64 +0,0 @@ -[#]: subject: "How my team built an open source learning experience platform" -[#]: via: "https://opensource.com/article/21/8/open-source-lms" -[#]: author: "Tesh Patel https://opensource.com/users/tesh" -[#]: collector: "lujun9972" -[#]: translator: " " -[#]: reviewer: " " -[#]: publisher: " " -[#]: url: " " - -How my team built an open source learning experience platform -====== -Open source powers innovation through community and shared experiences. -![Student desk for open education][1] - -Learning is based on the open exchange of ideas and experiences. By sharing, testing, and practicing what we've learned with others, we're able to develop in our lives and careers. It follows that openness is the ideal state for any successful learning organization.  - -I am passionate about learning, building teams, and technology. At Red Hat, we believe that open source powers innovation and results in better solutions. Five years ago, our learning management system was proprietary and closed. All of our learning platforms existed as islands with limited integration and provided a mediocre user experience. Over the past five years, our team has embraced the open source ethos. We've built and implemented new open source platforms, integrated our disparate learning platforms allowing us to freely exchange data and create a superior user experience. - -If you're a fellow member of a learning organization, I hope you might find it helpful to hear about our experience so far and perhaps even join us as we seek to influence the future of learning.  - -### Unlocking potential - -Our previous LMS served as the primary back-office system, system of record, and front-end experience for our learners. To put it plainly, it didn't serve any of those functions well. Our data was locked up in the vendor's vault. We had to live with the LMS's limited reporting capability or extract the data and manually manipulate it in spreadsheets. Perhaps worst of all, our learners faced a mediocre front-end system with a less-than-intuitive user experience. To live with our LMS, we had to create inefficient processes and workarounds. - -And so, in 2016, we began our journey to open source learning by replacing our proprietary LMS with [Totara Learn, an open source LMS][2].  - -By moving to Totara Learn, we unlocked our data and turned our attention to improving the user experience for our learners.  - -### Identifying the ecosystem - -Our learning ecosystem consists of more than just an LMS. In addition to our own content, we have access to content from third-party libraries, user-generated video content, virtual classroom tools for delivering online classes, and virtualized labs. - -We knew we needed a single interface to disguise our complex learning platforms and tools and deliver one seamless experience to the learner. Initially, we tried customizing Totara Learn for this purpose. It's a great platform, but we eventually realized it wasn't cost-effective for us to remodel it from the ground up. What we needed was a platform designed for our unique requirements. - -### Focusing on the learner - -In 2017, as my team pondered our learning ecosystem challenges, an emerging category of products called learning experience platforms (LXP) emerged. I found several LXP vendors who claimed to solve problems with the learning experience. Many described their platform's experience as the "Netflix of learning."  - -In my experience, I've found that learning isn't suited to a Netflix-like environment. The notion of randomly perusing learning, enrolling in a program, and then abandoning as it gets more challenging or less interesting—as you do with Netflix shows—is the antithesis of what our continuous learning philosophy encourages. Real learning that builds skills and capabilities requires an intentional focus and an ongoing commitment with a learn, practice, reflection, feedback loop.  - -As my team compiled the requirements for an LXP, we quickly realized we were just at the beginning of determining what we'd need to build to create the best learning experience for our users. The requirements would continue to grow and evolve, so we needed a platform that could do the same. The idea for the Open Learning Platform (OLP) was born. - -### Our open invitation - -The OLP is a learning experience platform (LXP) that provides a personalized, online learning experience for users—typically employees at large enterprises. It consolidates disparate learning resources into a single portal. These days, learning can happen anywhere and in many forms. An LXP helps employees discover learning opportunities—offering ways to enhance them and manages their education. We've spent three years developing and building the OLP to meet the learning needs of users and educators. The OLP has come a long way, but we also know we're very much still on the journey.  - -Since the inception of the OLP, we knew we wanted it to be an open source project. Why invest time and energy in open sourcing the platform we've built over several years? Simple. We want to learn from the experiences and innovation of others and form a community that will help determine what the LMS and LXP of the future should be. We want to move past a cost-per-user licensing model and the limitations in thinking when the sole focus is to monetize a product. If even one other learning organization benefits from our open source project, then it will have been worth the investment of our time. We welcome you to join the conversation at[ Open Learning Platform][3]. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/21/8/open-source-lms - -作者:[Tesh Patel][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/tesh -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/rh_003588_01_rd3os.combacktoschoolseriesgen_rh_032x_0.png?itok=cApG9aB4 (Student desk for open education) -[2]: https://github.com/totara -[3]: https://www.openlearningplatform.org/ diff --git a/sources/talk/20210912 What I miss about open source conferences.md b/sources/talk/20210912 What I miss about open source conferences.md deleted file mode 100644 index 44fafd03ba..0000000000 --- a/sources/talk/20210912 What I miss about open source conferences.md +++ /dev/null @@ -1,45 +0,0 @@ -[#]: subject: "What I miss about open source conferences" -[#]: via: "https://opensource.com/article/21/9/why-i-miss-conferences" -[#]: author: "Mike Bursell https://opensource.com/users/mikecamel" -[#]: collector: "lujun9972" -[#]: translator: " " -[#]: reviewer: " " -[#]: publisher: " " -[#]: url: " " - -What I miss about open source conferences -====== -I can buy my own t-shirts, but friendships need nurturing. -![Stickers from all different open source projects and communities][1] - -A typical work year would involve my attending maybe six to eight conferences in person and speaking at quite a few of them. A few years ago, I stopped raiding random booths at the exhibitions usually associated with these for t-shirts for the simple reason that I had too many of them. That's not to say that I wouldn't accept one here or there if it was particularly nice, or an open source project which I esteemed particularly, for instance. Or ones which I thought my kids would like—they're not "cool" but are at least useful for sleepwear, apparently. I also picked up a lot of pens and enough notebooks to keep me going for a while. - -And then, at the beginning of 2020, the pandemic hit, I left San Francisco, where I'd been attending meetings co-located with RSA North America (my employer at the time made the somewhat prescient decision not to allow us to go to the main conference), and I've not attended any in-person conferences since. - -There are some good things about this, the most obvious being less travel, though, of late, my family has been dropping an increasing number of not-so-subtle hints about how it would be good if I let them alone for a few days so they can eat food I don't like (pizza and macaroni cheese, mainly) and watch films that I don't enjoy (largely, but not exclusively, romcoms on Disney+). The downsides are manifold. Having to buy my own t-shirts and notebooks, obviously, though it turns out that I'd squirreled away enough pens for the duration. It also turned out that the move to USB-C connectors hadn't sufficiently hit the conference swag industry by the end of 2019 for me to have enough of those to keep me going, so I've had to purchase some of those. That's the silly, minor stuff, though—what about areas where there's real impact? - -Virtual conferences aren't honestly too bad, and the technology has definitely improved over the past few months. I've attended some very good sessions online (and given my share of sessions and panels, whose quality I won't presume to judge), but I've realised that I'm much more likely to attend borderline-interesting talks not on my main list of "must-sees" (some of which turn out to be very valuable) if I've actually traveled to get to a venue. The same goes for attention. I'm much less likely to be checking email, writing emails, and responding to chat messages in an in-person conference than a virtual one. It's partly about the venue, moving between rooms, and not bothering to get my laptop out all the time—not to mention the politeness factor of giving your attention to the speaker(s) or panellists. When I'm sitting at my desk at home, none of these is relevant, and the pull of the laptop (which is open anyway to watch the session) is generally irresistible. - -Two areas that have really suffered, though, are the booth experience and the "hallway track." I've had some very fruitful conversations, both from dropping by booths (sometimes mainly for a t-shirt—see above) or from staffing a booth and meeting those who visit. I've yet to attend any virtual conferences where the booth experience has worked, particularly for small projects and organisations. Online chat isn't the same, and the serendipitous aspect of wandering past a booth and seeing something you'd like to talk about is pretty much entirely missing if you have to navigate a set of webpages of menu options with actual intent. - -The hallway track is meeting people outside a conference's main sessions, either people you know already or as conversations spill out of sessions you've been attending. Knots of people asking questions of presenters or panellists can reveal shared interests, opposing but thought-provoking points of view, or just similar approaches to a topic which can lead to valuable professional relationships and even long-term friendships. I'm not a particularly gregarious person—particularly if I'm tired and jetlagged—but I really enjoy catching up with colleagues and friends over a drink or a meal from time to time. While that's often difficult given the distributed nature of the companies and industries I've been involved with, conferences have presented great opportunities to meet up, have a chinwag and discuss the latest tech trends, mergers and acquisitions, and fashion failures of our fellow attendees. This is what I miss most: I can buy my own t-shirts, but friendships need nurturing. And I hope that we can safely start attending conferences again so that I can meet up with friends and share a drink. I just hope I'm not the one making the fashion mistakes (this time). - -* * * - -_This article was originally published on [Alice, Eve, and Bob][2] and is reprinted with the author's permission._ - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/21/9/why-i-miss-conferences - -作者:[Mike Bursell][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/mikecamel -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/stickers-osdc-lead.png?itok=2RNn132b (Stickers from all different open source projects and communities) -[2]: https://aliceevebob.com/2021/08/24/buying-my-own-t-shirts-or-what-i-miss-about-conferences/ diff --git a/sources/talk/20210927 Why nonprofit organizations choose open source software.md b/sources/talk/20210927 Why nonprofit organizations choose open source software.md deleted file mode 100644 index 69c24ead75..0000000000 --- a/sources/talk/20210927 Why nonprofit organizations choose open source software.md +++ /dev/null @@ -1,90 +0,0 @@ -[#]: subject: "Why nonprofit organizations choose open source software" -[#]: via: "https://opensource.com/article/21/9/nonprofit-open-source" -[#]: author: "Michael Korotaev https://opensource.com/users/michaelk" -[#]: collector: "lujun9972" -[#]: translator: " " -[#]: reviewer: " " -[#]: publisher: " " -[#]: url: " " - -Why nonprofit organizations choose open source software -====== -Open source software increases in importance as more European nonprofits -shift to products like Nextcloud and ONLYOFFICE. -![4 books that spell out open][1] - -With tech and data safety awareness rising, open source software is becoming a go-to option for organizations of all classes more than ever. Nonprofit organizations are particularly vulnerable on the financial side while at the same time dealing with vital social and environmental issues. - -This article observes the adoption of open source collaboration technologies in nonprofit organizations by using [Nextcloud][2] and [ONLYOFFICE][3] as examples. - -### Transparency and security - -Open source is basically democracy written in code: It liberates and democratizes knowledge, gives access to vital technology to governmental and social institutions in all communities, and pursues the idea of transparency. - -People and organizations can access and reuse the software code. At the same time, contributors bear individual responsibility for the quality of their products and are more driven by initiative and ideas and much less by profit. - -Open source applications are seen as more reliable than proprietary solutions with source code reserved to a single vendor who decides how user’s data is handled and is in many cases the only observing party to this process. - -According to the latest [State of Enterprise Open Source report][4], the enterprise use of open source is expected to grow with 79% of surveyed IT leaders willing to build up their use of open source in the next two years. - -### Universal access to collaborative tools - -For decades, Microsoft and Google have been the de-facto standard for collaboration tools. But privacy and security concerns, together with a massive boost in cloud collaboration usage over the pandemic, have ramped up nonprofits' preference for open source tools. - -For nonprofit organizations, open source is a way to cut expenses by providing their employees and contributors with core collaboration tools such as content management and sharing environments, online office, and communication tools to manage operations, organize data, and create content. - -One example of an all-in-one system that sees constant growth in popularity among nonprofit organizations in Europe is Nextcloud. It is a free and secure sharing platform that combines document management space with various productivity add-ons. It also integrates with ONLYOFFICE Docs for document editing and collaboration functionality. - -### ONLYOFFICE and Nextcloud in practice - -Over the past year, several nonprofit organizations with diversified profiles have joined the users of Nexcloud and ONLYOFFICE. Some are newly in business and some are switching from proprietary solutions seeking a better match to handle their jobs. - -#### Sea-Watch - -[Sea-Watch][5] is a rescue organization that provides emergency aid for civilians in the Mediterranean amidst the ongoing refugee crisis and has saved over 38,000 lives to date. It has deployed a collaborative system for its 90 employees and over 400 volunteers. - -After having tried several free online solutions to maintain internal document flow and collaboration, Sea-Watch now relies on open source software to be more and more protective of the security and privacy of the organization’s data and the personal information of its employees and volunteers. - -Sea-Watch finds the solution to this problem by combining the Nextcloud file sharing platform with ONLYOFFICE online editors to enable secure editing and collaboration on documents online using the organization’s own physical infrastructure. - -#### Vegan in Leipzig - -[Vegan in Leipzig][6], a young activist association in Germany, advocates for animal rights and promotes a vegan diet and lifestyle. Around 100 people in the organization’s team work on creating vegan dining maps, scheduling and promoting related events, and uniting online communities to collect and organize all information for Leipzig’s vegan community and allies in one place. - -Vegan in Leipzig has been using Nextcloud to facilitate the organization’s internal file management and content sharing. A reliable and free platform for community users, Nextcloud is built to provide a sharing space of required scale for distributed teams and incorporating online communication tools such as videoconferencing and chat. - -In March 2021, the organization introduced its contributors to ONLYOFFICE editors integrated with Nextcloud for online collaboration on shared files, including documents, spreadsheets, and presentations. - -“Our employees are almost 100% satisfied. For now, there have been no complaints, feature requests, or reports of technical problems. As an administrator, I would go even further and say that ONLYOFFICE is the part of our application landscape that requires by far the least maintenance,” says Christo H., a volunteer administrator with Vegan in Leipzig. - -#### Wegweiser - -Among various nonprofit organizations grounded in helping struggling societal groups, one plays a vital role in the German social agenda: Wegweiser. The organization helps people with mental and physical disabilities integrate into society by dealing with daycare organizations, outpatient care, and school-to-employment transfer. - -Wegwiser had been using SharePoint for managing its content and documentation, but with growing concerns for the privacy of processed data, the organization opted for a Nextcloud and ONLYOFFICE combination to ensure full control over data in its own sovereign infrastructure. Wegweiser uses Nextcloud to document daily work, accounting and controlling, simultaneous document editing, and working with Microsoft Office-formatted documents. - -### Wrap up - -The list can be continued by numerous nonprofit organizations that have recently become users of Nextcloud and ONLYOFFICE, including The German Life Saving Association, Foodsharing Austria, and International Youth Community Services. - -Stories like this show that it’s not only cost-cutting that defines the value of open source for the global community but also the vitality of universal access to technology and knowledge. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/21/9/nonprofit-open-source - -作者:[Michael Korotaev][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/michaelk -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/EDU_OSDC_BYU_520x292_FINAL.png?itok=NVY7vR8o (4 books that spell out open) -[2]: https://nextcloud.com/ -[3]: https://www.onlyoffice.com/ -[4]: https://www.redhat.com/en/enterprise-open-source-report/2021 -[5]: https://sea-watch.org/en/ -[6]: https://www.vegan-in-leipzig.de/ diff --git a/sources/talk/20210928 Modeling open management practices.md b/sources/talk/20210928 Modeling open management practices.md deleted file mode 100644 index d896968e50..0000000000 --- a/sources/talk/20210928 Modeling open management practices.md +++ /dev/null @@ -1,101 +0,0 @@ -[#]: subject: "Modeling open management practices" -[#]: via: "https://opensource.com/open-organization/21/9/modeling-open-management" -[#]: author: "Heidi Hess von Ludewig https://opensource.com/users/heidi-hess-von-ludewig" -[#]: collector: "lujun9972" -[#]: translator: " " -[#]: reviewer: " " -[#]: publisher: " " -[#]: url: " " - -Modeling open management practices -====== -How can managers know if other leaders are cultivating an open culture? -Ask the people they impact every day. -![Women talking][1] - -In the [first part of my interview with Sam Knuth][2], a fellow [Open Organization Ambassador][3], we discussed how leaders need to make time to be open. Openness isn't effortless. - -In this second part, Sam and I discuss how executive leaders support their managers and teams in [leading with open values][4]. Because of the confidentiality of some of the answers (we're colleagues at Red Hat, after all), I am summarizing the interview in a series of articles that highlight and share some of Sam's most memorable observations and practices. - -### Managing managers - -Executive and senior leaders manage groups of managers, which means they may have little (or no) direct, routine contact with individual contributors in their organizations. So if they're interested in promoting open cultures throughout their organizations, they'll need to continuously model the open management practices they expect to see from all the managers in their team. - -Executive and senior leaders, however, don't only _promote_ open culture; they're also members of the organizational communities they want to see thrive, and like other members they shoulder some accountability for the health and vitality of that culture. Like all other members of an open organization community, managers are accountable for being _stewards_ (even protectors) of the values of the community as well. Senior leaders are responsible—as is any community member—for challenging behaviors that are unsupportive of open values. - -But this work is even more critical in the case of managers, especially because managers can enjoy enhanced decision-making power in many open organizations, and they influence more and more people the higher their role in an organization's hierarchy they sit. - -So how can executive leaders promote and protect open values in their organizations? Sam described a multi-factor approach to gathering and understanding associates' perspectives of their managers' leadership competencies. - -#### Meeting one-on-one - -As Sam's organization grew and more layers of management formed, Sam found he didn't have ongoing conversations with associates who weren't directly reporting to him, and was losing touch with how employees were feeling. Those _feelings_ are integral to any understanding of the organizational culture individual contributors experience every day. - -The bottom line? However you connect with associates, cultivating psychological safety is important for generating candid discussions. - -So Sam set up [one-on-one meetings][5] to connect with associates throughout the organization, choosing as randomly as he could. This helped create a safe space and develop trust in a confidential environment. Sam did this across his 250-associate organization by scheduling two to three meetings every week, because he felt it was the best way to get a sense of everyone's perspectives. It also gave him opportunities to share what he was learning with the managers in his organization and to coach them on becoming open leaders and champions of open values among their peers. - -During these discussions, he listened actively and asked many questions. Red Hatters can be quite forthcoming in their feedback, but asking questions helped Sam pick up on subtle cues when necessary. This way, he could ferret out an accurate sense of the situation, asking himself, "Does what the associates' say line up with what I think the leaders are intending? Where does it seem like alignment is not occurring? Why?" - -It's an individualized approach that's both time-consuming and candid, and Sam found it to be well worth the effort. - -It's also the opposite of a process I recalled from my past life in a conventional organization. As Sam and I chatted, I remembered "round tables," where an executive would set up team discussions to (allegedly) understand associates' perspectives. It was supposed to be a venue for collecting feedback and constructive criticism—but, in practice, no one said anything to the visiting executive that they hadn’t shared with team or department leaders, so there was no candid discussion _about_ those team or department leaders. I didn't feel any [sense of psychological safety][6], which is required in order for associates to share their thoughts. In my case, the round tables were completely ineffective. - -The bottom line? However you connect with associates—individually or in groups—cultivating psychological safety is important for generating candid discussions. - -Travelling to meet associates was ideal for these kinds of individual meetings to occur face-to-face, but the pandemic changed this tactic. On the other hand, workplaces across the world were already becoming more distributed before the pandemic; in fact, Sam struggled to meet associates in the United States because of the distribution of sites and even associates working remotely! To overcome this, leaders can set up one-on-one teleconferences with associates. In cases where associates seem to be less forthcoming or fearful of sharing their opinions, leaders can ask probing (but not direct) questions of the associates to get feedback as best as they can. For instance, leaders can glean a great deal of information from how associates answer questions such as: - - * How are you feeling about your work? - * What kinds of challenges do you encounter in your work? - * Do you feel like you get the support you need to do your work? - * How well do you feel you connect with your manager? Colleagues? - - - -#### On (not) using surveys - -Finally, Sam and I discussed surveys. After all, couldn't someone achieve the same results using a survey—without all that extra legwork? - -Surveys have their place in tracking the health of an open culture, Sam told me, but on their own they're rarely sufficient for doing this. For starters, Sam said, using surveys requires skill in both asking quantifiable questions and analyzing data, and that kind of skill isn't as common as we tend to think it is. Without proper expertise in using survey instruments, we may be letting data mislead us (for instance, when we gloss over problems because we see a high average score on another, similar question). So Sam finds surveys most useful for capturing a _broad perspective_ on team- or department-level experience of a culture and a manager's role in creating and maintaining it. - -Getting an accurate sense of specific details or issues is difficult when using surveys, which tend to ask for more generic feedback. Painting a more complete picture really requires sitting down with people and talking to them. - -Getting an accurate sense of specific details or issues is difficult when using surveys, which tend to ask for more generic feedback. Painting a more complete picture really requires sitting down with people and talking to them, Sam insisted. - -That's why it's important to investigate and spend time learning about the work culture in your organization from the associates themselves. Use a combination of techniques, and open multiple channels to facilitate feedback in as many forms as possible, as different people feel comfortable with different media. - -### When managers aren't open - -Like any role, managers learn skills and behaviors that help them succeed in particular organizations. When they get hired into an open organization (like Red Hat), they might experience some "abrasion" (my term), because there can be a genuine belief that a manager is managing with open values even though that person's _vision_ of open values doesn't match that of the organization. - -I recalled personal experience with this, where I had a manager who probably _thought_ they were being open, but really wasn't. - -"Exactly," Sam said, "and it's very painful." - -_Listen to Sam Knuth describe difficulties helping managers become more open._ - -When managers really aren't sufficiently "open," it's an issue that has to be addressed—because it can be damaging to teams. Sometimes managers can unlearn their conventional skills and behaviors. And sometimes they can't. Sometimes the change has to happen quickly so that the team doesn’t suffer. Ultimately, the organization's executive leader must embody that organization's culture. - -So "open management" then becomes a question of "open by whose standards?" and the organization must make those standards explicit in some way. That means deliberately codifying what the organization _means_ by "openness." Some organizations might draw up a simple social contract to accomplish this—a description of open principles and practices that all agree to let guide them. Other organizations might go so far as to formalize certain managerial competencies that align with the open culture an organization seeks to maintain. Regardless of the approach, however, it's important that an open organization fosters transparent discussions about behaviors it _does_ and _doesn't_ want to see its managers reflecting and encouraging. In this way, executive leaders can be those stewards for an organization's open culture. - -In the final part of my interview with Sam, I'll describe another important open management tactic I learned during our conversation: daring to be vulnerable. - --------------------------------------------------------------------------------- - -via: https://opensource.com/open-organization/21/9/modeling-open-management - -作者:[Heidi Hess von Ludewig][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/heidi-hess-von-ludewig -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/conversation-interview-mentor.png?itok=HjoOPcrB (Women talking) -[2]: https://opensource.com/open-organization/21/3/open-practices-executive-leaders -[3]: https://github.com/open-organization/governance/blob/master/community-roster.md -[4]: https://opensource.com/open-organization/managing-with-open-values -[5]: https://opensource.com/open-organization/21/8/one-on-one-meeting-tips -[6]: https://opensource.com/open-organization/19/3/introduction-psychological-safety diff --git a/sources/talk/20211015 Reach your open source community with content marketing.md b/sources/talk/20211015 Reach your open source community with content marketing.md deleted file mode 100644 index a015772be1..0000000000 --- a/sources/talk/20211015 Reach your open source community with content marketing.md +++ /dev/null @@ -1,88 +0,0 @@ -[#]: subject: "Reach your open source community with content marketing" -[#]: via: "https://opensource.com/article/21/10/content-marketing-open-source-community" -[#]: author: "Will Kelly https://opensource.com/users/willkelly" -[#]: collector: "lujun9972" -[#]: translator: " " -[#]: reviewer: " " -[#]: publisher: " " -[#]: url: " " - -Reach your open source community with content marketing -====== -Technology and content marketing teams can work together to reach the -community around an open source software project. -![people in different locations who are part of the same team][1] - -Both startups and more established firms are increasingly turning to content marketing as a way of reaching prospective customers. - -However, corporate marketers often consider the open source software (OSS) community a challenge to reach. This article features ways your technology and content marketing teams can work together to target and reach the community around an OSS project your organization supports. - -### Content marketing: a definition - -You can find multiple definitions of content marketing online. For this article, I define content marketing as the creation and sharing of online content, such as blog posts, white papers, videos, and social media posts. This content doesn't explicitly promote a brand or products, but it is still designed to gain the attention of prospective buyers for a company's products and solutions. - -Content marketing and [thought leadership][2] have become intertwined, which you can use to your advantage by taking content marketing targeting other audiences and repurposing it for the OSS community. Publish content to your OSS community that helps the community around your OSS project. Think of tutorials, code snippets, and other content that can help your OSS users become more effective. - -Software vendors can also be thought leaders through content marketing. Enterprises are seeking solutions for their technology, digital transformation, and other challenges. While there are paid media publishers doing excellent work, there's always more work to be done. Vendor-sponsored content can be a valuable source of information. - -### Content marketing in an OSS world - -Vendors with open source and enterprise products need to approach content marketing for open source users, focusing on the values and development practices of the open source community. - -#### Treat content as another contribution to the open source community - -Content plays a vital role in the open source community. Your content can serve as another contribution to the open source communities you serve as long as you focus on the key elements: - - * Ensuring your content has technical depth - * Excluding anything sales from your content such as pricing or information about how to upgrade to the enterprise version of your software - * Keeping marketing of your enterprise's products out of your content such as talk of a feature that’s only in your enterprise version but not your OSS - - - -Your content marketing to the open source community shouldn't be about driving sales. Instead, think about contributing to the community you want to build around your open source software. If you're treating your blog posts and white papers as vendor agnostic, with a focus on education and outreach, you've already taken a step towards content marketing suited to an open source community. - -#### Partner your marketing team with open source advocates - -Marketing teams may not be familiar with the ways of the open source community. If that's the case in your organization, consider partnering your content marketing manager with your open source advocates. Partnering could take a few forms: - - * Partner your content marketing manager with your developer relations team - * Join your content marketing with your [open source program office][3] efforts - * Involve your in-house open source developers with your content marketing projects as content creators and technical reviewers - - - -Open source is about community. Partnering your content marketing with employees already active in OSS gives your content marketing manager an entry into the community. While you can't expect your marketing team to be OSS advocates, you can set expectations for them to learn firsthand about the community in much the same way they learned about the industry. - -#### Create open source personas and messaging - -While personas and messaging remain challenges for some software vendors, publishing content to an open source community means reaching a new audience. You need to create new open source personas and messaging to go along with your marketing team's other personas and messaging. - -To get open source messaging right, you need to involve your in-house open source advocates and SMEs in the ideation and creation of the messaging. Avoid outsourcing these crucial steps to a third-party marketing consultant. People who work directly with your open source community are the best resources to understand the audience and what messages may resonate with them. Open source experts tapped to help with corporate messaging should be prepared to educate their marketing colleagues in the [open source ethos.][4] - -#### Keep listening and iterating - -Content marketing to your open source community shouldn't be a one-time effort. Blogging is an ideal content marketing channel for the open source community for this reason. Take the time to listen to what's going on in your OSS community and what they still need to learn about your open source offerings. A straightforward way to do this is to have your content marketing manager or other marketing representation join your online community. - -Iteration is a necessity with content marketing to the OSS community. In particular, take time to police your content drafts for anything that sounds like selling. Don’t forget to update your police your messaging, blogs, and blog calendar for selling too. Consider segmenting your blog’s OSS content in it’s own category if you haven’t done so already.** ** - -### Last thoughts - -Content marketing to an open source community requires becoming an educator and thought leader delivering content that contributes to your open source users' experiences and product journey. While your salespeople will be looking for customer conversions through your open source content marketing (and they should be!), keep your focus on community content and collaboration. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/21/10/content-marketing-open-source-community - -作者:[Will Kelly][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/willkelly -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/connection_people_team_collaboration.png?itok=0_vQT8xV (people in different locations who are part of the same team) -[2]: https://thoughtleadershiplab.com/what-is-a-thought-leader/ -[3]: https://opensource.com/article/20/5/open-source-program-office -[4]: https://www.agrowingculture.org/open-source-ethos/ diff --git a/sources/tech/20151127 Research log- gene signatures and connectivity map.md b/sources/tech/20151127 Research log- gene signatures and connectivity map.md deleted file mode 100644 index f4e7faa4bc..0000000000 --- a/sources/tech/20151127 Research log- gene signatures and connectivity map.md +++ /dev/null @@ -1,133 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Research log: gene signatures and connectivity map) -[#]: via: (https://www.jtolio.com/2015/11/research-log-gene-signatures-and-connectivity-map) -[#]: author: (jtolio.com https://www.jtolio.com/) - -Research log: gene signatures and connectivity map -====== - -Happy Thanksgiving everyone! - -### Context - -This is the third post in my continuing series on my attempts at research. Previously we talked about: - - * [what I’m doing, cell states, and microarrays][1] - * and then [more about microarrays and R][2]. - - - -By the end of last week we had discussed how to get a table of normalized gene expression intensities that looks like this: - -``` -ENSG00000280099_at 0.15484421 -ENSG00000280109_at 0.16881395 -ENSG00000280178_at -0.19621641 -ENSG00000280316_at 0.08622216 -ENSG00000280401_at 0.15966256 -ENSG00000281205_at -0.02085352 -... -``` - -The reason for doing this is to figure out which genes are related, and perhaps more importantly, what a cell is even doing. - -_Summary:_ new post, also, I’m bringing back the short section summaries. - -### Cell lines - -The first thing to do when trying to figure out what cells are doing is to choose a cell. There’s all sorts of cells. Healthy brain cells, cancerous blood cells, bruised skin cells, etc. - -For any experiment, you’ll need a control to eliminate noise and apply statistical tests for validity. If you don’t use a control, the effect you’re seeing may not even exist, and so for any experiment with cells, you will need a control cell. - -Cells often divide, which means that a cell, once chosen, will duplicate itself for you in the presence of the appropriate resources. Not all cells divide ad nauseam which provides some challenges, but many cells under study luckily do. - -So, a _cell line_ is simply a set of cells that have all replicated from a specific chosen initial cell. Any set of cells from a cell line will be as identical as possible (unless you screwed up! geez). They will be the same type of cell with the same traits and behaviors, at least, as much as possible. - -_Summary:_ a cell line is a large amount of cells that are as close to being the same as possible. - -### Perturbagens - -There are many things that might affect what a cell is doing. Drugs, agitation, temperature, disease, cancer, gene splicing, small molecules (maybe you give a cell more iron or calcium or something), hormones, light, Jello, ennui, etc. Given any particular cell line, giving a cell from that cell line one of these _perturbagens_, or, perturbing the cell in a specific way, when compared to a control will say what that cell does differently in the face of that perturbagen. - -If you’d like to find out what exactly a certain type of cell does when you give it lemon lime soda, then you choose the right cell line, leave out some control cells and give the rest of the cells soda. - -Then, you measure gene expression intensities for both the control cells and the perturbed cells. The _differential expression_ of genes between the perturbed cells and the controls cells is likely due to the introduction of the lemon lime soda. - -Genes that end up getting expressed _more_ in the presence of the soda are considered _up-regulated_, whereas genes that end up getting expressed _less_ are considered _down-regulated_. The degree to which a gene is up or down regulated constitutes how much of an effect the soda may have had on that gene. - -Of course, all of this has such a significant amount of experimental noise that you could find pretty much anything. You’ll need to replicate your experiment independently a few times before you publish that lemon lime soda causes increased expression in the [Sonic hedgehog gene][3]. - -_Summary:_ A perturbagen is something you introduce/do to a cell to change its behavior, such as drugs or throwing it at a wall or something. The wall perturbagen. - -### Gene signature - -For a given change or perturbagen to a cell, we now have enough to compute lists of up-regulated and down-regulated genes and the magnitude change in expression for each gene. - -This gene expression pattern for some subset of important genes (perhaps the most changed in expression) is called a _gene signature_, and gene signatures are very useful. By comparing signatures, you can: - - * identify or compare cell states - * find sets of positively or negatively correlated genes - * find similar disease signatures - * find similar drug signatures - * find drug signatures that might counteract opposite disease signatures. - - - -(That last bullet point is essentially where I’m headed with my research.) - -_Summary:_ a gene signature is a short summary of the most important gene expression differences a perturbagen causes in a cell. - -### Drugs! - -The pharmaceutical industry is constantly on the lookout for new breakthrough drugs that might represent huge windfalls in cash, and drugs don’t always work as planned. Many drugs spend years in research and development, only to ultimately find poor efficacy or adoption. Sometimes drugs even become known [much more for their side-effects than their originally intended therapy][4]. - -The practical upshot is that there’s countless FDA-approved drugs that represent decades of work that are simply underused or even unused entirely. These drugs have already cleared many challenging regulatory hurdles, but are simply and quite literally cures looking for a disease. - -If even just one of these drugs can be given a new lease on life for some yet-to-be-cured disease, then perhaps we can give some people new leases on life! - -_Summary:_ instead of developing new drugs, there’s already lots of drugs that aren’t being used. Maybe we can find matching diseases! - -### The Connectivity Map project - -The [Broad Institute’s Connectivity Map project][5] isn’t particularly new anymore, but it represents a ground breaking and promising idea - we can dump a bunch of signatures into a database and construct all sorts of new hypotheses we might not even have thought to check before. - -To prove out the usefulness of this idea, the Connectivity Map (or cmap) project chose 5 different cell lines (all cancer cells, which are easy to get to replicate!) and a library of FDA approved drugs, and then gave some cells these drugs. - -They then constructed a database of all of the signatures they computed for each possible perturbagen they measured. Finally, they constructed a web interface where a user can upload a gene signature and get a result list back of all of the signatures they collected, ordered by the most to least similar. You can totally go sign up and [try it out][5]. - -This simple tool is surprisingly powerful. It allows you to find similar drugs to a drug you know, but it also allows you to find drugs that might counteract a disease you’ve created a signature for. - -Ultimately, the project led to [a number of successful applications][6]. So useful was it that the Broad Institute has doubled down and created the much larger and more comprehensive [LINCS Project][7] that targets an order of magnitude more cell lines (77) and more perturbagens (42,532, compared to cmap’s 6100). You can sign up and use that one too! - -_Summary_: building a system that supports querying signature connections has already proved to be super useful. - -### Whew - -Alright, I wrote most of this on a plane yesterday but since I should now be spending time with family I’m going to cut it short here. - -Stay tuned for next week! - --------------------------------------------------------------------------------- - -via: https://www.jtolio.com/2015/11/research-log-gene-signatures-and-connectivity-map - -作者:[jtolio.com][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://www.jtolio.com/ -[b]: https://github.com/lujun9972 -[1]: https://www.jtolio.com/writing/2015/11/research-log-cell-states-and-microarrays/ -[2]: https://www.jtolio.com/writing/2015/11/research-log-r-and-more-microarrays/ -[3]: https://en.wikipedia.org/wiki/Sonic_hedgehog -[4]: https://en.wikipedia.org/wiki/Sildenafil#History -[5]: https://www.broadinstitute.org/cmap/ -[6]: https://www.broadinstitute.org/cmap/publications.jsp -[7]: http://www.lincscloud.org/ diff --git a/sources/tech/20170112 Writing Advanced Web Applications with Go.md b/sources/tech/20170112 Writing Advanced Web Applications with Go.md deleted file mode 100644 index f46521e8a7..0000000000 --- a/sources/tech/20170112 Writing Advanced Web Applications with Go.md +++ /dev/null @@ -1,658 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Writing Advanced Web Applications with Go) -[#]: via: (https://www.jtolio.com/2017/01/writing-advanced-web-applications-with-go) -[#]: author: (jtolio.com https://www.jtolio.com/) - -Writing Advanced Web Applications with Go -====== - -Web development in many programming environments often requires subscribing to some full framework ethos. With [Ruby][1], it’s usually [Rails][2] but could be [Sinatra][3] or something else. With [Python][4], it’s often [Django][5] or [Flask][6]. With [Go][7], it’s… - -If you spend some time in Go communities like the [Go mailing list][8] or the [Go subreddit][9], you’ll find Go newcomers frequently wondering what web framework is best to use. [There][10] [are][11] [quite][12] [a][13] [few][14] [Go][15] [frameworks][16] ([and][17] [then][18] [some][19]), so which one is best seems like a reasonable question. Without fail, though, the strong recommendation of the Go community is to [avoid web frameworks entirely][20] and just stick with the standard library as long as possible. Here’s [an example from the Go mailing list][21] and here’s [one from the subreddit][22]. - -It’s not bad advice! The Go standard library is very rich and flexible, much more so than many other languages, and designing a web application in Go with just the standard library is definitely a good choice. - -Even when these Go frameworks call themselves minimalistic, they can’t seem to help themselves avoid using a different request handler interface than the default standard library [http.Handler][23], and I think this is the biggest source of angst about why frameworks should be avoided. If everyone standardizes on [http.Handler][23], then dang, all sorts of things would be interoperable! - -Before Go 1.7, it made some sense to give in and use a different interface for handling HTTP requests. But now that [http.Request][24] has the [Context][25] and [WithContext][26] methods, there truly isn’t a good reason any longer. - -I’ve done a fair share of web development in Go and I’m here to share with you both some standard library development patterns I’ve learned and some code I’ve found myself frequently needing. The code I’m sharing is not for use instead of the standard library, but to augment it. - -Overall, if this blog post feels like it’s predominantly plugging various little standalone libraries from my [Webhelp non-framework][27], that’s because it is. It’s okay, they’re little standalone libraries. Only use the ones you want! - -If you’re new to Go web development, I suggest reading the Go documentation’s [Writing Web Applications][28] article first. - -### Middleware - -A frequent design pattern for server-side web development is the concept of _middleware_, where some portion of the request handler wraps some other portion of the request handler and does some preprocessing or routing or something. This is a big component of how [Express][29] is organized on [Node][30], and how Express middleware and [Negroni][17] middleware works is almost line-for-line identical in design. - -Good use cases for middleware are things such as: - - * making sure a user is logged in, redirecting if not, - * making sure the request came over HTTPS, - * making sure a session is set up and loaded from a session database, - * making sure we logged information before and after the request was handled, - * making sure the request was routed to the right handler, - * and so on. - - - -Composing your web app as essentially a chain of middleware handlers is a very powerful and flexible approach. It allows you to avoid a lot of [cross-cutting concerns][31] and have your code factored in very elegant and easy-to-maintain ways. By wrapping a set of handlers with middleware that ensures a user is logged in prior to actually attempting to handle the request, the individual handlers no longer need mistake-prone copy-and-pasted code to ensure the same thing. - -So, middleware is good. However, if Negroni or other frameworks are any indication, you’d think the standard library’s `http.Handler` isn’t up to the challenge. Negroni adds its own `negroni.Handler` just for the sake of making middleware easier. There’s no reason for this. - -Here is a full middleware implementation for ensuring a user is logged in, assuming a `GetUser(*http.Request)` function but otherwise just using the standard library: - -``` -func RequireUser(h http.Handler) http.Handler { - return http.HandlerFunc(func(w http.ResponseWriter, req *http.Request) { - user, err := GetUser(req) - if err != nil { - http.Error(w, err.Error(), http.StatusInternalServerError) - return - } - if user == nil { - http.Error(w, "unauthorized", http.StatusUnauthorized) - return - } - h.ServeHTTP(w, req) - }) -} -``` - -Here’s how it’s used (just wrap another handler!): - -``` -func main() { - http.ListenAndServe(":8080", RequireUser(http.HandlerFunc(myHandler))) -} -``` - -Express, Negroni, and other frameworks expect this kind of signature for a middleware-supporting handler: - -``` -type Handler interface { - // don't do this! - ServeHTTP(rw http.ResponseWriter, req *http.Request, next http.HandlerFunc) -} -``` - -There’s really no reason for adding the `next` argument - it reduces cross-library compatibility. So I say, don’t use `negroni.Handler` (or similar). Just use `http.Handler`! - -### Composability - -Hopefully I’ve sold you on middleware as a good design philosophy. - -Probably the most commonly-used type of middleware is request routing, or muxing (seems like we should call this demuxing but what do I know). Some frameworks are almost solely focused on request routing. [gorilla/mux][32] seems more popular than any other part of the [Gorilla][33] library. I think the reason for this is that even though the Go standard library is completely full featured and has a good [ServeMux][34] implementation, it doesn’t make the right thing the default. - -So! Let’s talk about request routing and consider the following problem. You, web developer extraordinaire, want to serve some HTML from your web server at `/hello/` but also want to serve some static assets from `/static/`. Let’s take a quick stab. - -``` -package main - -import ( - "net/http" -) - -func hello(w http.ResponseWriter, req *http.Request) { - w.Write([]byte("hello, world!")) -} - -func main() { - mux := http.NewServeMux() - mux.Handle("/hello/", http.HandlerFunc(hello)) - mux.Handle("/static/", http.FileServer(http.Dir("./static-assets"))) - http.ListenAndServe(":8080", mux) -} -``` - -If you visit `http://localhost:8080/hello/`, you’ll be rewarded with a friendly “hello, world!” message. - -If you visit `http://localhost:8080/static/` on the other hand (assuming you have a folder of static assets in `./static-assets`), you’ll be surprised and frustrated. This code tries to find the source content for the request `/static/my-file` at `./static-assets/static/my-file`! There’s an extra `/static` in there! - -Okay, so this is why `http.StripPrefix` exists. Let’s fix it. - -``` -mux.Handle("/static/", http.StripPrefix("/static", - http.FileServer(http.Dir("./static-assets")))) -``` - -`mux.Handle` combined with `http.StripPrefix` is such a common pattern that I think it should be the default. Whenever a request router processes a certain amount of URL elements, it should strip them off the request so the wrapped `http.Handler` doesn’t need to know its absolute URL and only needs to be concerned with its relative one. - -In [Russ Cox][35]’s recent [TiddlyWeb backend][36], I would argue that every time `strings.TrimPrefix` is needed to remove the full URL from the handler’s incoming path arguments, it is an unnecessary cross-cutting concern, unfortunately imposed by `http.ServeMux`. (An example is [line 201 in tiddly.go][37].) - -I’d much rather have the default `mux` behavior work more like a directory of registered elements that by default strips off the ancestor directory before handing the request to the next middleware handler. It’s much more composable. To this end, I’ve written a simple muxer that works in this fashion called [whmux.Dir][38]. It is essentially `http.ServeMux` and `http.StripPrefix` combined. Here’s the previous example reworked to use it: - -``` -package main - -import ( - "net/http" - - "gopkg.in/webhelp.v1/whmux" -) - -func hello(w http.ResponseWriter, req *http.Request) { - w.Write([]byte("hello, world!")) -} - -func main() { - mux := whmux.Dir{ - "hello": http.HandlerFunc(hello), - "static": http.FileServer(http.Dir("./static-assets")), - } - http.ListenAndServe(":8080", mux) -} -``` - -There are other useful mux implementations inside the [whmux][39] package that demultiplex on various aspects of the request path, request method, request host, or pull arguments out of the request and place them into the context, such as a [whmux.IntArg][40] or [whmux.StringArg][41]. This brings us to [contexts][42]. - -### Contexts - -Request contexts are a recent addition to the Go 1.7 standard library, but the idea of [contexts has been around since mid-2014][43]. As of Go 1.7, they were added to the standard library ([“context”][42]), but are available for older Go releases in the original location ([“golang.org/x/net/context”][44]). - -First, here’s the definition of the `context.Context` type that `(*http.Request).Context()` returns: - -``` -type Context interface { - Done() <-chan struct{} - Err() error - Deadline() (deadline time.Time, ok bool) - - Value(key interface{}) interface{} -} -``` - -Talking about `Done()`, `Err()`, and `Deadline()` are enough for an entirely different blog post, so I’m going to ignore them at least for now and focus on `Value(interface{})`. - -As a motivating problem, let’s say that the `GetUser(*http.Request)` method we assumed earlier is expensive, and we only want to call it once per request. We certainly don’t want to call it once to check that a user is logged in, and then again when we actually need the `*User` value. With `(*http.Request).WithContext` and `context.WithValue`, we can pass the `*User` down to the next middleware precomputed! - -Here’s the new middleware: - -``` -type userKey int - -func RequireUser(h http.Handler) http.Handler { - return http.HandlerFunc(func(w http.ResponseWriter, req *http.Request) { - user, err := GetUser(req) - if err != nil { - http.Error(w, err.Error(), http.StatusInternalServerError) - return - } - if user == nil { - http.Error(w, "unauthorized", http.StatusUnauthorized) - return - } - ctx := r.Context() - ctx = context.WithValue(ctx, userKey(0), user) - h.ServeHTTP(w, req.WithContext(ctx)) - }) -} -``` - -Now, handlers that are protected by this `RequireUser` handler can load the previously computed `*User` value like this: - -``` -if user, ok := req.Context().Value(userKey(0)).(*User); ok { - // there's a valid user! -} -``` - -Contexts allow us to pass optional values to handlers down the chain in a way that is relatively type-safe and flexible. None of the above context logic requires anything outside of the standard library. - -#### Aside about context keys - -There was a curious piece of code in the above example. At the top, we defined a `type userKey int`, and then always used it as `userKey(0)`. - -One of the possible problems with contexts is the `Value()` interface lends itself to a global namespace where you can stomp on other context users and use conflicting key names. Above, we used `type userKey` because it’s an unexported type in your package. It will never compare equal (without a cast) to any other type, including `int`, in Go. This gives us a way to namespace keys to your package, even though the `Value()` method is still a sort of global namespace. - -Because the need for this is so common, the `webhelp` package defines a [GenSym()][45] helper that will create a brand new, never-before-seen, unique value for use as a context key. - -If we used [GenSym()][45], then `type userKey int` would become `var userKey = webhelp.GenSym()` and `userKey(0)` would simply become `userKey`. - -#### Back to whmux.StringArg - -Armed with this new context behavior, we can now present a `whmux.StringArg` example: - -``` -package main - -import ( - "fmt" - "net/http" - - "gopkg.in/webhelp.v1/whmux" -) - -var ( - pageName = whmux.NewStringArg() -) - -func page(w http.ResponseWriter, req *http.Request) { - name := pageName.Get(req.Context()) - - fmt.Fprintf(w, "Welcome to %s", name) -} - -func main() { - // pageName.Shift pulls the next /-delimited string out of the request's - // URL.Path and puts it into the context instead. - pageHandler := pageName.Shift(http.HandlerFunc(page)) - - http.ListenAndServe(":8080", whmux.Dir{ - "wiki": pageHandler, - }) -} -``` - -### Pre-Go-1.7 support - -Contexts let you do some pretty cool things. But let’s say you’re stuck with something before Go 1.7 (for instance, App Engine is currently Go 1.6). - -That’s okay! I’ve backported all of the neat new context features to Go 1.6 and earlier in a forwards compatible way! - -With the [whcompat][46] package, `req.Context()` becomes `whcompat.Context(req)`, and `req.WithContext(ctx)` becomes `whcompat.WithContext(req, ctx)`. The `whcompat` versions work with all releases of Go. Yay! - -There’s a bit of unpleasantness behind the scenes to make this happen. Specifically, for pre-1.7 builds, a global map indexed by `req.URL` is kept, and a finalizer is installed on `req` to clean up. So don’t change what `req.URL` points to and this will work fine. In practice it’s not a problem. - -`whcompat` adds additional backwards-compatibility helpers. In Go 1.7 and on, the context’s `Done()` channel is closed (and `Err()` is set), whenever the request is done processing. If you want this behavior in Go 1.6 and earlier, just use the [whcompat.DoneNotify][47] middleware. - -In Go 1.8 and on, the context’s `Done()` channel is closed when the client goes away, even if the request hasn’t completed. If you want this behavior in Go 1.7 and earlier, just use the [whcompat.CloseNotify][48] middleware, though beware that it costs an extra goroutine. - -### Error handling - -How you handle errors can be another cross-cutting concern, but with good application of context and middleware, it too can be beautifully cleaned up so that the responsibilities lie in the correct place. - -Problem statement: your `RequireUser` middleware needs to handle an authentication error differently between your HTML endpoints and your JSON API endpoints. You want to use `RequireUser` for both types of endpoints, but with your HTML endpoints you want to return a user-friendly error page, and with your JSON API endpoints you want to return an appropriate JSON error state. - -In my opinion, the right thing to do is to have contextual error handlers, and luckily, we have a context for contextual information! - -First, we need an error handler interface. - -``` -type ErrHandler interface { - HandleError(w http.ResponseWriter, req *http.Request, err error) -} -``` - -Next, let’s make a middleware that registers the error handler in the context: - -``` -var errHandler = webhelp.GenSym() // see the aside about context keys - -func HandleErrWith(eh ErrHandler, h http.Handler) http.Handler { - return http.HandlerFunc(func(w http.ResponseWriter, req *http.Request) { - ctx := context.WithValue(whcompat.Context(req), errHandler, eh) - h.ServeHTTP(w, whcompat.WithContext(req, ctx)) - }) -} -``` - -Last, let’s make a function that will use the registered error handler for errors: - -``` -func HandleErr(w http.ResponseWriter, req *http.Request, err error) { - if handler, ok := whcompat.Context(req).Value(errHandler).(ErrHandler); ok { - handler.HandleError(w, req, err) - return - } - log.Printf("error: %v", err) - http.Error(w, "internal server error", http.StatusInternalServerError) -} -``` - -Now, as long as everything uses `HandleErr` to handle errors, our JSON API can handle errors with JSON responses, and our HTML endpoints can handle errors with HTML responses. - -Of course, the [wherr][49] package implements this all for you, and the [whjson][49] package even implements a friendly JSON API error handler. - -Here’s how you might use it: - -``` -var userKey = webhelp.GenSym() - -func RequireUser(h http.Handler) http.Handler { - return http.HandlerFunc(func(w http.ResponseWriter, req *http.Request) { - user, err := GetUser(req) - if err != nil { - wherr.Handle(w, req, wherr.InternalServerError.New("failed to get user")) - return - } - if user == nil { - wherr.Handle(w, req, wherr.Unauthorized.New("no user found")) - return - } - ctx := r.Context() - ctx = context.WithValue(ctx, userKey, user) - h.ServeHTTP(w, req.WithContext(ctx)) - }) -} - -func userpage(w http.ResponseWriter, req *http.Request) { - user := req.Context().Value(userKey).(*User) - w.Header().Set("Content-Type", "text/html") - userpageTmpl.Execute(w, user) -} - -func username(w http.ResponseWriter, req *http.Request) { - user := req.Context().Value(userKey).(*User) - w.Header().Set("Content-Type", "application/json") - json.NewEncoder(w).Encode(map[string]interface{}{"user": user}) -} - -func main() { - http.ListenAndServe(":8080", whmux.Dir{ - "api": wherr.HandleWith(whjson.ErrHandler, - RequireUser(whmux.Dir{ - "username": http.HandlerFunc(username), - })), - "user": RequireUser(http.HandlerFunc(userpage)), - }) -} -``` - -#### Aside about the spacemonkeygo/errors package - -The default [wherr.Handle][50] implementation understands all of the [error classes defined in the wherr top level package][51]. - -These error classes are implemented using the [spacemonkeygo/errors][52] library and the [spacemonkeygo/errors/errhttp][53] extensions. You don’t have to use this library or these errors, but the benefit is that your error instances can be extended to include HTTP status code messages and information, which once again, provides for a nice elimination of cross-cutting concerns in your error handling logic. - -See the [spacemonkeygo/errors][52] package for more details. - -_**Update 2018-04-19:** After a few years of use, my friend condensed some lessons we learned and the best parts of `spacemonkeygo/errors` into a new, more concise, better library, over at [github.com/zeebo/errs][54]. Consider using that instead!_ - -### Sessions - -Go’s standard library has great support for cookies, but cookies by themselves aren’t usually what a developer thinks of when she thinks about sessions. Cookies are unencrypted, unauthenticated, and readable by the user, and perhaps you don’t want that with your session data. - -Further, sessions can be stored in cookies, but could also be stored in a database to provide features like session revocation and querying. There’s lots of potential details about the implementation of sessions. - -Request handlers, however, probably don’t care too much about the implementation details of the session. Request handlers usually just want a bucket of keys and values they can store safely and securely. - -The [whsess][55] package implements middleware for registering an arbitrary session store (a default cookie-based session store is provided), and implements helpers for retrieving and saving new values into the session. - -The default cookie-based session store implements encryption and authentication via the excellent [nacl/secretbox][56] package. - -Usage is like this: - -``` -func handler(w http.ResponseWriter, req *http.Request) { - ctx := whcompat.Context(req) - sess, err := whsess.Load(ctx, "namespace") - if err != nil { - wherr.Handle(w, req, err) - return - } - if loggedIn, _ := sess.Values["logged_in"].(bool); loggedIn { - views, _ := sess.Values["views"].(int64) - sess.Values["views"] = views + 1 - sess.Save(w) - } -} - -func main() { - http.ListenAndServe(":8080", whsess.HandlerWithStore( - whsess.NewCookieStore(secret), http.HandlerFunc(handler))) -} -``` - -### Logging - -The Go standard library by default doesn’t log incoming requests, outgoing responses, or even just what port the HTTP server is listening on. - -The [whlog][57] package implements all three. The [whlog.LogRequests][58] middleware will log requests as they start. The [whlog.LogResponses][59] middleware will log requests as they end, along with status code and timing information. [whlog.ListenAndServe][60] will log the address the server ultimately listens on (if you specify “:0” as your address, a port will be randomly chosen, and [whlog.ListenAndServe][60] will log it). - -[whlog.LogResponses][59] deserves special mention for how it does what it does. It uses the [whmon][61] package to instrument the outgoing `http.ResponseWriter` to keep track of response information. - -Usage is like this: - -``` -func main() { - whlog.ListenAndServe(":8080", whlog.LogResponses(whlog.Default, handler)) -} -``` - -#### App engine logging - -App engine logging is unconventional crazytown. The standard library logger doesn’t work by default on App Engine, because App Engine logs _require_ the request context. This is unfortunate for libraries that don’t necessarily run on App Engine all the time, as their logging information doesn’t make it to the App Engine request-specific logger. - -Unbelievably, this is fixable with [whgls][62], which uses my terrible, terrible (but recently improved) [Goroutine-local storage library][63] to store the request context on the current stack, register a new log output, and fix logging so standard library logging works with App Engine again. - -### Template handling - -Go’s standard library [html/template][64] package is excellent, but you’ll be unsurprised to find there’s a few tasks I do with it so commonly that I’ve written additional support code. - -The [whtmpl][65] package really does two things. First, it provides a number of useful helper methods for use within templates, and second, it takes some friction out of managing a large number of templates. - -When writing templates, one thing you can do is call out to other registered templates for small values. A good example might be some sort of list element. You can have a template that renders the list element, and then your template that renders your list can use the list element template in turn. - -Use of another template within a template might look like this: - -``` -
    - {{ range .List }} - {{ template "list_element" . }} - {{ end }} -
-``` - -You’re now rendering the `list_element` template with the list element from `.List`. But what if you want to also pass the current user `.User`? Unfortunately, you can only pass one argument from one template to another. If you have two arguments you want to pass to another template, with the standard library, you’re out of luck. - -The [whtmpl][65] package adds three helper functions to aid you here, `makepair`, `makemap`, and `makeslice` (more docs under the [whtmpl.Collection][66] type). `makepair` is the simplest. It takes two arguments and constructs a [whtmpl.Pair][67]. Fixing our example above would look like this now: - -``` -
    - {{ $user := .User }} - {{ range .List }} - {{ template "list_element" (makepair . $user) }} - {{ end }} -
-``` - -The second thing [whtmpl][65] does is make defining lots of templates easy, by optionally automatically naming templates after the name of the file the template is defined in. - -For example, say you have three files. - -Here’s `pkg.go`: - -``` -package views - -import "gopkg.in/webhelp.v1/whtmpl" - -var Templates = whtmpl.NewCollection() -``` - -Here’s `landing.go`: - -``` -package views - -var _ = Templates.MustParse(`{{ template "header" . }} - -

Landing!

`) -``` - -And here’s `header.go`: - -``` -package views - -var _ = Templates.MustParse(`My website!`) -``` - -Now, you can import your new `views` package and render the `landing` template this easily: - -``` -func handler(w http.ResponseWriter, req *http.Request) { - views.Templates.Render(w, req, "landing", map[string]interface{}{}) -} -``` - -### User authentication - -I’ve written two Webhelp-style authentication libraries that I end up using frequently. - -The first is an OAuth2 library, [whoauth2][68]. I’ve written up [an example application that authenticates with Google, Facebook, and Github][69]. - -The second, [whgoth][70], is a wrapper around [markbates/goth][71]. My portion isn’t quite complete yet (some fixes are still necessary for optional App Engine support), but will support more non-OAuth2 authentication sources (like Twitter) when it is done. - -### Route listing - -Surprise! If you’ve used [webhelp][27] based handlers and middleware for your whole app, you automatically get route listing for free, via the [whroute][72] package. - -My web serving code’s `main` method often has a form like this: - -``` -switch flag.Arg(0) { -case "serve": - panic(whlog.ListenAndServe(*listenAddr, routes)) -case "routes": - whroute.PrintRoutes(os.Stdout, routes) -default: - fmt.Printf("Usage: %s \n", os.Args[0]) -} -``` - -Here’s some example output: - -``` -GET /auth/_cb/ -GET /auth/login/ -GET /auth/logout/ -GET / -GET /account/apikeys/ -POST /account/apikeys/ -GET /project// -GET /project//control// -POST /project//control//sample/ -GET /project//control/ - Redirect: f(req) -POST /project//control/ -POST /project//control_named//sample/ -GET /project//control_named/ - Redirect: f(req) -GET /project//sample// -GET /project//sample//similar[/<*>] -GET /project//sample/ - Redirect: f(req) -POST /project//search/ -GET /project/ - Redirect: / -POST /project/ -``` - -### Other little things - -[webhelp][27] has a number of other subpackages: - - * [whparse][73] assists in parsing optional request arguments. - * [whredir][74] provides some handlers and helper methods for doing redirects in various cases. - * [whcache][75] creates request-specific mutable storage for caching various computations and database loaded data. Mutability helps helper functions that aren’t used as middleware share data. - * [whfatal][76] uses panics to simplify early request handling termination. Probably avoid this package unless you want to anger other Go developers. - - - -### Summary - -Designing your web project as a collection of composable middlewares goes quite a long way to simplify your code design, eliminate cross-cutting concerns, and create a more flexible development environment. Use my [webhelp][27] package if it helps you. - -Or don’t! Whatever! It’s still a free country last I checked. - -#### Update - -Peter Kieltyka points me to his [Chi framework][77], which actually does seem to do the right things with respect to middleware, handlers, and contexts - certainly much more so than all the other frameworks I’ve seen. So, shoutout to Peter and the team at Pressly! - --------------------------------------------------------------------------------- - -via: https://www.jtolio.com/2017/01/writing-advanced-web-applications-with-go - -作者:[jtolio.com][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://www.jtolio.com/ -[b]: https://github.com/lujun9972 -[1]: https://www.ruby-lang.org/ -[2]: http://rubyonrails.org/ -[3]: http://www.sinatrarb.com/ -[4]: https://www.python.org/ -[5]: https://www.djangoproject.com/ -[6]: http://flask.pocoo.org/ -[7]: https://golang.org/ -[8]: https://groups.google.com/d/forum/golang-nuts -[9]: https://www.reddit.com/r/golang/ -[10]: https://revel.github.io/ -[11]: https://gin-gonic.github.io/gin/ -[12]: http://iris-go.com/ -[13]: https://beego.me/ -[14]: https://go-macaron.com/ -[15]: https://github.com/go-martini/martini -[16]: https://github.com/gocraft/web -[17]: https://github.com/urfave/negroni -[18]: https://godoc.org/goji.io -[19]: https://echo.labstack.com/ -[20]: https://medium.com/code-zen/why-i-don-t-use-go-web-frameworks-1087e1facfa4 -[21]: https://groups.google.com/forum/#!topic/golang-nuts/R_lqsTTBh6I -[22]: https://www.reddit.com/r/golang/comments/1yh6gm/new_to_go_trying_to_select_web_framework/ -[23]: https://golang.org/pkg/net/http/#Handler -[24]: https://golang.org/pkg/net/http/#Request -[25]: https://golang.org/pkg/net/http/#Request.Context -[26]: https://golang.org/pkg/net/http/#Request.WithContext -[27]: https://godoc.org/gopkg.in/webhelp.v1 -[28]: https://golang.org/doc/articles/wiki/ -[29]: https://expressjs.com/ -[30]: https://nodejs.org/en/ -[31]: https://en.wikipedia.org/wiki/Cross-cutting_concern -[32]: https://github.com/gorilla/mux -[33]: https://github.com/gorilla/ -[34]: https://golang.org/pkg/net/http/#ServeMux -[35]: https://swtch.com/~rsc/ -[36]: https://github.com/rsc/tiddly -[37]: https://github.com/rsc/tiddly/blob/8f9145ac183e374eb95d90a73be4d5f38534ec47/tiddly.go#L201 -[38]: https://godoc.org/gopkg.in/webhelp.v1/whmux#Dir -[39]: https://godoc.org/gopkg.in/webhelp.v1/whmux -[40]: https://godoc.org/gopkg.in/webhelp.v1/whmux#IntArg -[41]: https://godoc.org/gopkg.in/webhelp.v1/whmux#StringArg -[42]: https://golang.org/pkg/context/ -[43]: https://blog.golang.org/context -[44]: https://godoc.org/golang.org/x/net/context -[45]: https://godoc.org/gopkg.in/webhelp.v1#GenSym -[46]: https://godoc.org/gopkg.in/webhelp.v1/whcompat -[47]: https://godoc.org/gopkg.in/webhelp.v1/whcompat#DoneNotify -[48]: https://godoc.org/gopkg.in/webhelp.v1/whcompat#CloseNotify -[49]: https://godoc.org/gopkg.in/webhelp.v1/wherr -[50]: https://godoc.org/gopkg.in/webhelp.v1/wherr#Handle -[51]: https://godoc.org/gopkg.in/webhelp.v1/wherr#pkg-variables -[52]: https://godoc.org/github.com/spacemonkeygo/errors -[53]: https://godoc.org/github.com/spacemonkeygo/errors/errhttp -[54]: https://github.com/zeebo/errs -[55]: https://godoc.org/gopkg.in/webhelp.v1/whsess -[56]: https://godoc.org/golang.org/x/crypto/nacl/secretbox -[57]: https://godoc.org/gopkg.in/webhelp.v1/whlog -[58]: https://godoc.org/gopkg.in/webhelp.v1/whlog#LogRequests -[59]: https://godoc.org/gopkg.in/webhelp.v1/whlog#LogResponses -[60]: https://godoc.org/gopkg.in/webhelp.v1/whlog#ListenAndServe -[61]: https://godoc.org/gopkg.in/webhelp.v1/whmon -[62]: https://godoc.org/gopkg.in/webhelp.v1/whgls -[63]: https://godoc.org/github.com/jtolds/gls -[64]: https://golang.org/pkg/html/template/ -[65]: https://godoc.org/gopkg.in/webhelp.v1/whtmpl -[66]: https://godoc.org/gopkg.in/webhelp.v1/whtmpl#Collection -[67]: https://godoc.org/gopkg.in/webhelp.v1/whtmpl#Pair -[68]: https://godoc.org/gopkg.in/go-webhelp/whoauth2.v1 -[69]: https://github.com/go-webhelp/whoauth2/blob/v1/examples/group/main.go -[70]: https://godoc.org/gopkg.in/go-webhelp/whgoth.v1 -[71]: https://github.com/markbates/goth -[72]: https://godoc.org/gopkg.in/webhelp.v1/whroute -[73]: https://godoc.org/gopkg.in/webhelp.v1/whparse -[74]: https://godoc.org/gopkg.in/webhelp.v1/whredir -[75]: https://godoc.org/gopkg.in/webhelp.v1/whcache -[76]: https://godoc.org/gopkg.in/webhelp.v1/whfatal -[77]: https://github.com/pressly/chi diff --git a/sources/tech/20180225 What I learnt from building 3 high traffic web applications on an embedded key value store.md b/sources/tech/20180225 What I learnt from building 3 high traffic web applications on an embedded key value store.md deleted file mode 100644 index 756b9ca878..0000000000 --- a/sources/tech/20180225 What I learnt from building 3 high traffic web applications on an embedded key value store.md +++ /dev/null @@ -1,93 +0,0 @@ -What I learnt from building 3 high traffic web applications on an embedded key value store. -============================================================ - - -![](https://cdn-images-1.medium.com/max/1600/1*_sXlAxit3i2M-FFaK_OQVg.png) - -I grew up as part of the fad that all web applications must be built on proper architecture, usually involving a well tested and stable sql database like postgres, or in some stretch cases a nosql database like mongodb. The reasons were simple: - -* They can be scaled and scaled and scaled. Very important when your application gets it’s first one billion users overnight. - -* SQL is the best way to access your data. And you always need a complicated message layer to access that data. - -* If you don’t use sql, how will you perform joins? How will you build in complicated search? How will you prevent your code from going so large with complexity that it falls and kills your cat? - - -![](https://cdn-images-1.medium.com/max/1600/1*UZfVU70VqwzFbbp50mRarQ.png) -Your cat is scared of your code. - -* Why build an application where you won’t need to employ an experienced database administrator to create your complicated schemas and perform the very important and complicated database maintenance tasks. - -In 2015, I stumbled on the golang [BoltDB database library][1], and first used to save state in basic server-side applications. Then I stumbled on [blevesearch][2], and it dawned on me. The most basic thing most databases offer is storage, and flexible search over stored data. With boltdb, I could store my data efficiently, and with bleve I could search and access my data in interesting ways. - -![](https://cdn-images-1.medium.com/max/1600/1*CAgNR4s10WtvV4CG9AFFQg.png) -blevesearch - -On this basis, I built and launched [Calabar Yellow Pages][3] on just boltDB and blevesearch, and then when I saw how smoothly it worked and scaled in production, I went on to build [Shop440][4] (A merge between Shopify and Aliexpress) on badger DB (A much faster alternative to boltdb) and blevesearch for indexing. - -### What I learnt: - -### Key Value Stores are fast - -Firstly, a NoSQL key value store is fast, much faster than a comparable relational database. Its speed comes from its simplicity. A key value database stores a data record using one primary key. The key means the record is uniquely identifiable, and can be directly accessed. Other than this, it’s up to the developer to architect any more complexity in accessing data. - - -![](https://cdn-images-1.medium.com/max/1600/1*zTzSNjtU-kudy78iZss1vw.png) - -Also, since the key value stores I used were embedded databases, I was able to strike off some of the processing that comes with more established databases. In a database like mongoDB, A lot of resources and latency goes into serializing data and passing it over the wire to the client application which then deserializes and decodes it. This is a waste of resources, especially when the client and the database are running on the same server, and not on separate servers where they would benefit from communicating over http. An embedded database strikes out all these extra serialization and even tcp transport costs. - -### Great Scalability — What About Consistency? - -Secondly, a NoSQL key value database is also highly scalable. This too is a function of its simplicity. Unlike a relational database, a NoSQL key value database is not obliged to scale vertically. It can scale over several machines or devices by several orders of magnitude, without the need for significant redesign. Financially, this is a big advantage too. - -![](https://cdn-images-1.medium.com/max/1600/1*seBbyRHICKfN87y7zq8I4A.png) - -But in my case, since using an embedded key value store, most scaling happened vertically and even sustained for a very long time. At the moment, even with a database size of almost a terabyte, the application is still holding strong. With badger, I came up with a strategy of having multiple badger databases, each representing a collection. This way, if I ever have a need to scale the system beyond a single server, I could isolate each individual database and it’s corresponding program logic into a separate micro-service. (I will write more about this in the future. ) - -### Cheap on time and effort - - -![](https://cdn-images-1.medium.com/max/1600/1*U-XNO_Q3wVffyYxpEVpfvA.png) - -Scaling a relational database solution often means that cost increases dis-proportionally; it also requires time and effort (and server downtime) to change your database schema. By comparison, a key value database keeps the price curve linear rather than exponential, and it is designed to handle data without any predefined schema. Some (not all) key value databases, like other NoSQL databases, are also designed for ‘eventual consistency’. This means that data are synchronized ‘at some point’ between copies on different machines, but not immediately. - -### Schema-Free Rows and Columns - -![](https://cdn-images-1.medium.com/max/1600/1*57qoZRSyu6H4zQHs8p3qJQ.png) - -### A case for Embedded Key Value Stores - -According to [https://www.sqlite.org/whentouse.html][5] - -> SQLite works great as the database engine for most low to medium traffic websites (which is to say, most websites). The amount of web traffic that SQLite can handle depends on how heavily the website uses its database. Generally speaking, any site that gets fewer than 100K hits/day should work fine with SQLite. The 100K hits/day figure is a conservative estimate, not a hard upper bound. SQLite has been demonstrated to work with 10 times that amount of traffic. - -> The SQLite website ([https://www.sqlite.org/][6]) uses SQLite itself, of course, and as of this writing (2015) it handles about 400K to 500K HTTP requests per day, about 15–20% of which are dynamic pages touching the database. Dynamic content uses [about 200 SQL statements per webpage][7]. This setup runs on a single VM that shares a physical server with 23 others and yet still keeps the load average below 0.1 most of the time. - -Most embedded key value stores like badger are very very much more efficient and performant than sqlite, so this could go to show how much more is possible with embedded key value stores, if sqlite can handle so much hits per day. - -Also, using an embedded key value store alongside an embedded indexing engine like Blevesearch in a compiled language like Golang, means you can truly deploy single binaries with no external dependencies and no need for post deployment setups. - -### In a nutshell - -Embedded key value stores give you all the advantages of a nosql database, but where it is lacking is in search, since you’re only able to query for items by their keys and key’s prefix. But when paired with an indexing engine like blevesearch in golang, or elasicsearch and lucene, the pair gives you a very capable database with features like full text search, location based search, etc in a very resource efficient package and scales well. - -I believe this pair should have more popularity than it actually currently has, and go a long in reducing server expenses especially with applications which never expect facebook level scale. - --------------------------------------------------------------------------------- - -via: https://hackernoon.com/what-i-learnt-from-building-3-high-traffic-web-applications-on-an-embedded-key-value-store-68d47249774f - -作者:[Anthony Alaribe ][a] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]:https://hackernoon.com/@tonyalaribe?source=post_header_lockup -[1]:https://github.com/boltdb/bolt -[2]:https://github.com/blevesearch/bleve -[3]:http://calabarpages.com/ -[4]:https://shop440.com/ -[5]:https://www.sqlite.org/whentouse.html -[6]:https://www.sqlite.org/ -[7]:https://www.sqlite.org/np1queryprob.html diff --git a/sources/tech/20180605 Sound themes in Linux- What every user should know.md b/sources/tech/20180605 Sound themes in Linux- What every user should know.md deleted file mode 100644 index 895b7355b0..0000000000 --- a/sources/tech/20180605 Sound themes in Linux- What every user should know.md +++ /dev/null @@ -1,103 +0,0 @@ -Sound themes in Linux: What every user should know -====== - -![](https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/linux_penguin_green.png?itok=ENdVzW22) - -Like all modern operating systems, Linux has a set of specifications for sound themes. Sound themes are sets of similar sounds coordinated into themes that sound good together. They signal events such as switching to a different workspace, opening a new application, plugging and unplugging hardware, and alerting you when your battery is low or fully charged. The sounds that play is determined by which themes you have installed and which ones you’re currently using. If your desktop tries to play a sound your theme doesn’t have, it will play a sound from another sound theme if it can find one. - -### How do I select a sound theme? - -This is where things can get tricky. Most desktops make it easy to select a sound theme, but some are more challenging, and others can't do this at all. I’ll detail the steps for [MATE][1], my personal favorite desktop. If you use another desktop, consult your desktop’s help by pressing F1. - -#### MATE - -To select a sound theme in MATE, open the sound settings by either pressing Alt+F1, or right-arrowing to the Settings menu, down-arrowing to Preferences, right-arrowing twice to the Hardware menu and selecting the Sound menu item. If you have a Search menu installed, such as MATE menu or [Linux Mint][2] menu, simply open that menu, search for "Sound settings," and press Enter on the first result. Once the dialog is opened, tab over to the "Sound theme" combo box and select your sound theme. If you want sounds for windows and buttons to play, check the checkbox; if not, clear it. Then press Close. - -### How many sound themes are available in Linux? - -There are several sound theme options in Linux, but most are included only in select distros because those distro’s developers made the theme. There is only one theme available in all distros by default, as I'll discuss later in this article. If you want a sound theme that's not available in your distribution, you'll need to download it and copy it into the proper place. For all users, this folder is `/usr/share/sounds`; for your own personal use, it is `~/.local/share/sounds`. Most sound themes can legally be used in any Linux distribution, including the sound themes in the [Ubuntu][3], [Linux Mint][4], [elementary OS][5] and [Trisquel][6] distributions. - -### Where can I get sound themes? - -There are several websites dedicated to sound themes, desktop background themes, icon sets, and more. These include: - -#### Gnome-look - -In my opinion, [Gnome-look.org][7] is the best site in terms of selection and variety. It hosts a wide variety of sound themes, icon sets, desktop themes, desktop backgrounds, and so on. Its name is misleading; the site works for all desktops, not just GNOME. - -#### Mate-Look - -[Mate-Look.org][8], another site specific to the MATE desktop, offers a smaller but still respectable collection of sound themes, icon sets, backgrounds, and more. - -#### Linux a11y sound theme - -This is the main sound theme for the Linux accessibility organization, and I maintain the site, which you can find at [Linux-a11y-sound-theme][9]. All these sounds are free to use, and the entire sound theme is open source. It is a bit of a hodgepodge mixture, but it sounds decent. - -#### Chihuahua sound theme - -This theme is composed of various adorable sounds my chihuahua-Pekinese mix makes, recorded on GNU/Linux using various programs and converted into the proper formats. This sound theme can be cloned at `git://github.com/coffeeking/chihuahua-sound-theme`. - -#### Free desktop sound theme - -Available in all Linux distributions, this sound theme is usually installed along with your desktop of choice. I don’t have a link for this sound theme, but it is usually available in your package manager as "sound-theme-freedesktop" or something similar. This theme is meant to demonstrate what themes can do rather than as an all-inclusive theme. - -### The bad - -While the selection of sound themes is quite good, there are some problems—not with the sound themes themselves, but with the knowledge of how sound themes work and how to create them. A common problem concerns people using sounds they are not legally allowed to use, such as the sounds included in Microsoft Windows operating systems. These sounds, which are licensed (usually by Creative Commons), are legal for use only with Windows; using them with Linux is illegal. - -To address this problem, websites that offer sound themes should include clear guidelines specifying what is and is not legal to post. They should also include credit guidelines so those who create sound themes receive credit when others use their sounds. Many users don't know where to find high-quality sounds, so they use what they know. The solution is to make accessible websites offering a wide selection of sounds with clear licenses so users understand how they can and can't use these sounds. - -I’ve detailed two such sites below, but these are not the only ones. - -#### SoundBible - -[SoundBible][10] offers a plethora of good sounds, most of which are the right length for short clip tasks, like desktop sounds. All are free, though not all are free to use commercially—check the specific license that comes with a sound for details. - -#### Freesound - -[Freesound][11] also provides a wide variety of sound effects for desktop tasks and other uses. Both Freesound and SoundBible include clear licenses as well as author credits so users know who made the sound and what they can do with it. This cuts down on confusion and accidental (or deliberate) misuse of sounds. - -### Theme and naming specifications - -A big problem in open source is that many users do not know how sound themes work or how to create them. To address this, below I will link to two specifications: sound theme specifications, which explain what should be included in a sound themes index.theme file (mandatory for all sound themes), and sound-naming guidelines, which detail how sounds should be named for your desktop to find and play them. - -#### Sound theme specs - -[This specification][12] explains what’s in a sound theme’s index file, which is the file that describes the sound theme and lists the theme's name, what files it contains, and so on. Click on the `html` link under "The Sound Theme Spec" heading (ignore the "draft" comment; this specification is stable and has become standardized). - -#### Sound-naming specs - -[This specification][12] explains how sounds should be named for your desktop to find and play them. Click on the `html` link under the "The Sound Naming Spec" heading (this also has a "draft" comment, and this theme is also standardized). The site also details what file format sounds should be in. If you come across a file that is not in a proper format, you can easily convert it using applications like [SoundConverter][13] and [FFmpeg][14]. - -### Conclusion - -Like most things in open source, sound themes generally get little attention; most users don’t even notice that they are there. But for us visually impaired people and others who prefer unique computer experiences, sound themes provide a nice touch. Along with icon themes and desktop backgrounds, they showcase the talent and variety for which open source is famous. But it's important for users to understand how sound themes work and what they can and cannot do with them. - -I hope this article has been helpful. Looking forward to the next big sound theme! - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/18/6/sound-themes-linux - -作者:[Kendell Clark][a] -选题:[lujun9972](https://github.com/lujun9972) -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/kendell-clark -[1]:https://mate-desktop.org/themes/ -[2]:https://linuxmint.com/ -[3]:http://www.ubuntu.com/ -[4]:http://www.Linuxmint.com/ -[5]:http://www.elementaryos.org/ -[6]:http://www.trisquel.info/ -[7]:http://www.gnome-look.org/ -[8]:http://www.mate-look.org/ -[9]:http://www.github.com/coffeeking/Linux-a11y-sound-theme -[10]:http://www.soundbible.com/ -[11]:http://www.freesound.org/ -[12]:https://www.freedesktop.org/wiki/Specifications/sound-theme-spec/ -[13]:http://www.soundconverter.org/ -[14]:http://www.ffmpeg.org/ diff --git a/sources/tech/20180619 Systemd Services- Monitoring Files and Directories.md b/sources/tech/20180619 Systemd Services- Monitoring Files and Directories.md deleted file mode 100644 index 601132a33f..0000000000 --- a/sources/tech/20180619 Systemd Services- Monitoring Files and Directories.md +++ /dev/null @@ -1,152 +0,0 @@ -Systemd Services: Monitoring Files and Directories -====== - -![](https://www.linux.com/sites/lcom/files/styles/rendered_file/public/systemd-filesystem.png?itok=iGjxwoJR) - -So far in this systemd multi-part tutorial, we’ve covered [how to start and stop a service by hand][1], [how to start a service when booting your OS and have it stop on power down][2], and [how to boot a service when a certain device is detected][3]. This installment does something different yet again and covers how to create a unit that starts a service when something changes in the filesystem. For the practical example, you'll see how you can use one of these units to extend the [surveillance system we talked about last time][4]. - -### Where we left off - -[Last time we saw how the surveillance system took pictures, but it did nothing with them][3]. In fact, it even overwrote the last picture it took when it detected movement so as not to fill the storage of the device. - -Does that mean the system is useless? Not by a long shot. Because, you see, systemd offers yet another type of units, _paths_ , that can help you out. _Path_ units allow you to trigger a service when an event happens in the filesystem, say, when a file gets deleted or a directory accessed. And, overwriting an image is exactly the kind of event we are talking about here. - -### Anatomy of a Path Unit - -A systemd path unit takes the extension _.path_ , and it monitors a file or directory. A _.path_ unit calls another unit (usually a _.service_ unit with the same name) when something happens to the monitored file or directory. For example, if you have a _picchanged.path_ unit to monitor the snapshot from your webcam, you will also have a _picchanged.service_ that will execute a script when the snapshot is overwritten. - -Path units contain a new section, `[Path]`, with few more directives. First, you have the what-to-watch-for directives: - - * **`PathExists=`** monitors whether the file or directory exists. If it does, the associated unit gets triggered. `PathExistsGlob=` works in a similar fashion, but lets you use globbing, like when you use `ls *.jpg` to search for all the JPEG images in a directory. This lets you check, for example, whether a file with a certain extension exists. - * **`PathChanged=`** watches a file or directory and activates the configured unit whenever it changes. It is not activated on every write to the watched file but only when a monitored file open for for writing is changed and then closed. The associated unit is executed when the file is closed. - * **`PathModified=`** , on the other hand, does activate the unit when anything is changed in the file you are monitoring, even before you close the file. - * **`DirectoryNotEmpty=`** does what it says on the box, that is, it activates the associated unit if the monitored directory contains files or subdirectories. - - - -Then, we have `Unit=` that tells the _.path_ which _.service_ unit to activate, in case you want to give it a different name to that of your _.path_ unit; `MakeDirectory=` can be `true` or `false` (or `0` or `1`, or `yes` or `no`) and creates the directory you want to monitor before monitoring starts. Obviously, using `MakeDirectory=` in combination with `PathExists=` does not make sense. However, `MakeDirectory=` can be used in combination with `DirectoryMode=`, which you use to set the the mode (permissions) of the new directory. If you don't use `DirectoryMode=`, the default permissions for the new directory are `0755`. - -### Building _picchanged.path_ - -All these directives are very useful, but you will be just looking for changes made to one single file, so your _.path_ unit is very simple: - -``` -#picchanged.path -[Unit] -Wants= webcam.service - -[Path] -PathChanged= /home/[user name]/monitor/monitor.jpg -``` - -In the `Unit=` section the line that says - -``` -Wants= webcam.service -``` - -The `Wants=` directive is the preferred way of starting up a unit the current unit needs to work properly. [`webcam.service` is the name you gave the surveillance service that you saw in the previous article][3] and is the service that actually controls the webcam and makes it take a snap every half second. This means it’s _picchanged.path_ that is going to start up _webcam.service_ now, and not the [Udev rule you saw in the prior article][3]. You will use the Udev rule to start _picchanged.path_ instead. - -To summarize: the Udev rule pulls in your new _picchanged.path_ unit, which, in turn pulls in the _webcam.service_ as a requirement for everything to work perfectly. - -The "thing" that _picchanged.path_ monitors is the _monitor.jpg_ file in the _monitor/_ directory in your home directory. As you saw last time, _webcam.service_ called a script, _checkimage.sh_ , took a picture at the beginning of its execution and stored it in _monitor/temp.jpg_. _checkimage.sh_ then took another pic, _temp.jpg_ , and compared it with _monitor.jpg_. If it found significant differences (like when somebody walks into frame) the script overwrote _monitor.jpg_ with the _temp.jpg_. That is when _picchanged.path_ fires. - -As you haven't included a `Unit=` directive in your _.path_ , the unit systemd expects a matching _picchanged.service_ unit which it will trigger when _/home/[ _user name_ ]/monitor/monitor.jpg_ gets modified: - -``` -#picchanged.service -[Service] -Type= simple -ExecStart= /home/[user name]/bin/picmonitor.sh -``` - -For the time being, let’s make _picmonitor.sh_ save a time-stamped copy of _monitor.jpg_ every time changes get detected: - -``` -#!/bin/bash -# This is the pcmonitor.sh script - -cp /home/[user name]/monitor/monitor.jpg /home/[user name]/monitor/"`date`.jpg" -``` - -### Udev Changes - -You have to change the custom Udev rule you wrote in [the previous installment][3] so everything works. Edit _/etc/udev/rules.d/01-webcam.rules_ so instead of looking like this: - -``` -ACTION=="add", SUBSYSTEM=="video4linux", ATTRS{idVendor}=="03f0", -  ATTRS{idProduct}=="e207", SYMLINK+="mywebcam", TAG+="systemd", -  MODE="0666", ENV{SYSTEMD_WANTS}="webcam.service" -``` - -It looks like this: - -``` -ACTION=="add", SUBSYSTEM=="video4linux", ATTRS{idVendor}=="03f0", -  ATTRS{idProduct}=="e207", SYMLINK+="mywebcam", TAG+="systemd", -  MODE="0666", ENV{SYSTEMD_WANTS}="picchanged.path" -``` - -The new rule, instead of calling _webcam.service_ , now calls _picchanged.path_ when your webcam gets detected. (Note that you will have to change the `idVendor` and `IdProduct` to those of your own webcam -- you saw how to find these out previously). - -For the record, I also changed _checkimage.sh_ from using PNG to JPEG images. I did this because I found some dependency problems with PNG images when working with _mplayer_ on some versions of Debian. _checkimage.sh_ now looks like this: - -``` -#!/bin/bash - -mplayer -vo jpeg -frames 1 tv:// -tv driver=v4l2:width=640:height=480:device= -  /dev/mywebcam &>/dev/null -mv 00000001.jpg /home/paul/monitor/monitor.jpg - -while true -do - mplayer -vo jpeg -frames 1 tv:// -tv driver=v4l2:width=640:height=480:device= -  /dev/mywebcam &>/dev/null - mv 00000001.jpg /home/paul/monitor/temp.jpg - - imagediff=`compare -metric mae /home/paul/monitor/monitor.jpg -  /home/paul/monitor/temp.jpg /home/paul/monitor/diff.png 2>&1 > -  /dev/null | cut -f 1 -d " "` - - if [ `echo "$imagediff > 700.0" | bc` -eq 1 ] - then - mv /home/paul/monitor/temp.jpg /home/paul/monitor/monitor.jpg - fi - - sleep 0.5 -done -``` - -### Firing up - -This is a multi-unit service that, when all its bits and pieces are in place, you don't have to worry much about: you plug in the designated webcam (or boot the machine with the webcam already connected), _picchanged.path_ gets started thanks to the Udev rule and takes over, bringing up the _webcam.service_ and starting to check on the snaps. There is nothing else you need to do. - -### Conclusion - -Having the process split into two doesn't only help explain how path units work, but it’s also very useful for debugging. One service does not "touch" the other in any way, which means that you could, for example, improve the "motion detection" part, and it would be very easy to roll back if things didn't work as expected. - -Admittedly, the example is a bit goofy, as there are definitely [better ways of monitoring movement using a webcam][5]. But remember: the main aim of these articles is to help you learn how systemd units work within a context. - -Next time, we'll finish up with systemd units by looking at some of the other types of units available and show how to improve your home-monitoring system further by setting up service that sends images to another machine. - -Learn more about Linux through the free ["Introduction to Linux" ][6]course from The Linux Foundation and edX. - --------------------------------------------------------------------------------- - -via: https://www.linux.com/blog/learn/intro-to-linux/2018/6/systemd-services-monitoring-files-and-directories - -作者:[Paul Brown][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://www.linux.com/users/bro66 -[b]: https://github.com/lujun9972 -[1]: https://www.linux.com/blog/learn/intro-to-linux/2018/5/writing-systemd-services-fun-and-profit -[2]: https://www.linux.com/blog/learn/2018/5/systemd-services-beyond-starting-and-stopping -[3]: https://www.linux.com/blog/intro-to-linux/2018/6/systemd-services-reacting-change -[4]: https://www.linux.com/blog/learn/intro-to-linux/2018/6/systemd-services-monitoring-files-and-directories -[5]: https://www.linux.com/learn/how-operate-linux-spycams-motion -[6]: https://training.linuxfoundation.org/linux-courses/system-administration-training/introduction-to-linux diff --git a/sources/tech/20190104 Three Ways To Reset And Change Forgotten Root Password on RHEL 7-CentOS 7 Systems.md b/sources/tech/20190104 Three Ways To Reset And Change Forgotten Root Password on RHEL 7-CentOS 7 Systems.md deleted file mode 100644 index 6619cfe65a..0000000000 --- a/sources/tech/20190104 Three Ways To Reset And Change Forgotten Root Password on RHEL 7-CentOS 7 Systems.md +++ /dev/null @@ -1,254 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Three Ways To Reset And Change Forgotten Root Password on RHEL 7/CentOS 7 Systems) -[#]: via: (https://www.2daygeek.com/linux-reset-change-forgotten-root-password-in-rhel-7-centos-7/) -[#]: author: (Prakash Subramanian https://www.2daygeek.com/author/prakash/) - -Three Ways To Reset And Change Forgotten Root Password on RHEL 7/CentOS 7 Systems -====== - -If you are forget to remember your root password for RHEL 7 and CentOS 7 systems and want to reset the forgotten root password? - -If so, don’t worry we are here to help you out on this. - -Navigate to the following link if you want to **[reset forgotten root password on RHEL 6/CentOS 6][1]**. - -This is generally happens when you use different password in vast environment or if you are not maintaining the proper inventory. - -Whatever it is. No issues, we will help you through this article. - -It can be done in many ways but we are going to show you the best three methods which we tried many times for our clients. - -In Linux servers there are three different users are available. These are, Normal User, System User and Super User. - -As everyone knows the Root user is known as super user in Linux and Administrator is in Windows. - -We can’t perform any major activity without root password so, make sure you should have the right root password when you perform any major tasks. - -If you don’t know or don’t have it, try to reset using one of the below method. - - * Reset Forgotten Root Password By Booting into Single User Mode using `rd.break` - * Reset Forgotten Root Password By Booting into Single User Mode using `init=/bin/bash` - * Reset Forgotten Root Password By Booting into Rescue Mode - - - -### Method-1: Reset Forgotten Root Password By Booting into Single User Mode - -Just follow the below procedure to reset the forgotten root password in RHEL 7/CentOS 7 systems. - -To do so, reboot your system and follow the instructions carefully. - -**`Step-1:`** Reboot your system and interrupt at the boot menu by hitting **`e`** key to modify the kernel arguments. -![][3] - -**`Step-2:`** In the GRUB options, find `linux16` word and add the `rd.break` word in the end of the file then press `Ctrl+x` or `F10` to boot into single user mode. -![][4] - -**`Step-3:`** At this point of time, your root filesystem will be mounted in Read only (RO) mode to /sysroot. Run the below command to confirm this. - -``` -# mount | grep root -``` - -![][5] - -**`Step-4:`** Based on the above output, i can say that i’m in single user mode and my root file system is mounted in read only mode. - -It won’t allow you to make any changes on your system until you mount the root filesystem with Read and write (RW) mode to /sysroot. To do so, use the following command. - -``` -# mount -o remount,rw /sysroot -``` - -![][6] - -**`Step-5:`** Currently your file systems are mounted as a temporary partition. Now, your command prompt shows **switch_root:/#**. - -Run the following command to get into a chroot jail so that /sysroot is used as the root of the file system. - -``` -# chroot /sysroot -``` - -![][7] - -**`Step-6:`** Now you can able to reset the root password with help of `passwd` command. - -``` -# echo "CentOS7$#123" | passwd --stdin root -``` - -![][8] - -**`Step-7:`** By default CentOS 7/RHEL 7 use SELinux in enforcing mode, so create a following hidden file which will automatically perform a relabel of all files on next boot. - -It allow us to fix the context of the **/etc/shadow** file. - -``` -# touch /.autorelabel -``` - -![][9] - -**`Step-8:`** Issue `exit` twice to exit from the chroot jail environment and reboot the system. -![][10] - -**`Step-9:`** Now you can login to your system with your new password. -![][11] - -### Method-2: Reset Forgotten Root Password By Booting into Single User Mode - -Alternatively we can use the below procedure to reset the forgotten root password in RHEL 7/CentOS 7 systems. - -**`Step-1:`** Reboot your system and interrupt at the boot menu by hitting **`e`** key to modify the kernel arguments. -![][3] - -**`Step-2:`** In the GRUB options, find `rhgb quiet` word and replace with the `init=/bin/bash` or `init=/bin/sh` word then press `Ctrl+x` or `F10` to boot into single user mode. - -Screenshot for **`init=/bin/bash`**. -![][12] - -Screenshot for **`init=/bin/sh`**. -![][13] - -**`Step-3:`** At this point of time, your root system will be mounted in Read only mode to /. Run the below command to confirm this. - -``` -# mount | grep root -``` - -![][14] - -**`Step-4:`** Based on the above ouput, i can say that i’m in single user mode and my root file system is mounted in read only (RO) mode. - -It won’t allow you to make any changes on your system until you mount the root file system with Read and write (RW) mode. To do so, use the following command. - -``` -# mount -o remount,rw / -``` - -![][15] - -**`Step-5:`** Now you can able to reset the root password with help of `passwd` command. - -``` -# echo "RHEL7$#123" | passwd --stdin root -``` - -![][16] - -**`Step-6:`** By default CentOS 7/RHEL 7 use SELinux in enforcing mode, so create a following hidden file which will automatically perform a relabel of all files on next boot. - -It allow us to fix the context of the **/etc/shadow** file. - -``` -# touch /.autorelabel -``` - -![][17] - -**`Step-7:`** Finally `Reboot` the system. - -``` -# exec /sbin/init 6 -``` - -![][18] - -**`Step-9:`** Now you can login to your system with your new password. -![][11] - -### Method-3: Reset Forgotten Root Password By Booting into Rescue Mode - -Alternatively, we can reset the forgotten Root password for RHEL 7 and CentOS 7 systems using Rescue mode. - -**`Step-1:`** Insert the bootable media through USB or DVD drive which is compatible for you and reboot your system. It will take to you to the below screen. - -Hit `Troubleshooting` to launch the `Rescue` mode. -![][19] - -**`Step-2:`** Choose `Rescue a CentOS system` and hit `Enter` button. -![][20] - -**`Step-3:`** Here choose `1` and the rescue environment will now attempt to find your Linux installation and mount it under the directory `/mnt/sysimage`. -![][21] - -**`Step-4:`** Simple hit `Enter` to get a shell. -![][22] - -**`Step-5:`** Run the following command to get into a chroot jail so that /mnt/sysimage is used as the root of the file system. - -``` -# chroot /mnt/sysimage -``` - -![][23] - -**`Step-6:`** Now you can able to reset the root password with help of **passwd** command. - -``` -# echo "RHEL7$#123" | passwd --stdin root -``` - -![][24] - -**`Step-7:`** By default CentOS 7/RHEL 7 use SELinux in enforcing mode, so create a following hidden file which will automatically perform a relabel of all files on next boot. -It allow us to fix the context of the /etc/shadow file. - -``` -# touch /.autorelabel -``` - -![][25] - -**`Step-8:`** Remove the bootable media then initiate the reboot. - -**`Step-9:`** Issue `exit` twice to exit from the chroot jail environment and reboot the system. -![][26] - -**`Step-10:`** Now you can login to your system with your new password. -![][11] - --------------------------------------------------------------------------------- - -via: https://www.2daygeek.com/linux-reset-change-forgotten-root-password-in-rhel-7-centos-7/ - -作者:[Prakash Subramanian][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://www.2daygeek.com/author/prakash/ -[b]: https://github.com/lujun9972 -[1]: https://www.2daygeek.com/linux-reset-change-forgotten-root-password-in-rhel-6-centos-6/ -[2]: data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7 -[3]: https://www.2daygeek.com/wp-content/uploads/2018/12/reset-forgotten-root-password-on-rhel-7-centos-7-2.png -[4]: https://www.2daygeek.com/wp-content/uploads/2018/12/reset-forgotten-root-password-on-rhel-7-centos-7-3.png -[5]: https://www.2daygeek.com/wp-content/uploads/2018/12/reset-forgotten-root-password-on-rhel-7-centos-7-5.png -[6]: https://www.2daygeek.com/wp-content/uploads/2018/12/reset-forgotten-root-password-on-rhel-7-centos-7-6.png -[7]: https://www.2daygeek.com/wp-content/uploads/2018/12/reset-forgotten-root-password-on-rhel-7-centos-7-8.png -[8]: https://www.2daygeek.com/wp-content/uploads/2018/12/reset-forgotten-root-password-on-rhel-7-centos-7-10.png -[9]: https://www.2daygeek.com/wp-content/uploads/2018/12/reset-forgotten-root-password-on-rhel-7-centos-7-10a.png -[10]: https://www.2daygeek.com/wp-content/uploads/2018/12/reset-forgotten-root-password-on-rhel-7-centos-7-11.png -[11]: https://www.2daygeek.com/wp-content/uploads/2018/12/reset-forgotten-root-password-on-rhel-7-centos-7-12.png -[12]: https://www.2daygeek.com/wp-content/uploads/2018/12/method-reset-forgotten-root-password-on-rhel-7-centos-7-1.png -[13]: https://www.2daygeek.com/wp-content/uploads/2018/12/method-reset-forgotten-root-password-on-rhel-7-centos-7-1a.png -[14]: https://www.2daygeek.com/wp-content/uploads/2018/12/method-reset-forgotten-root-password-on-rhel-7-centos-7-3.png -[15]: https://www.2daygeek.com/wp-content/uploads/2018/12/method-reset-forgotten-root-password-on-rhel-7-centos-7-4.png -[16]: https://www.2daygeek.com/wp-content/uploads/2018/12/method-reset-forgotten-root-password-on-rhel-7-centos-7-5.png -[17]: https://www.2daygeek.com/wp-content/uploads/2018/12/method-reset-forgotten-root-password-on-rhel-7-centos-7-6.png -[18]: https://www.2daygeek.com/wp-content/uploads/2018/12/method-reset-forgotten-root-password-on-rhel-7-centos-7-7.png -[19]: https://www.2daygeek.com/wp-content/uploads/2018/12/rescue-reset-forgotten-root-password-on-rhel-7-centos-7-1.png -[20]: https://www.2daygeek.com/wp-content/uploads/2018/12/rescue-reset-forgotten-root-password-on-rhel-7-centos-7-2.png -[21]: https://www.2daygeek.com/wp-content/uploads/2018/12/rescue-reset-forgotten-root-password-on-rhel-7-centos-7-3.png -[22]: https://www.2daygeek.com/wp-content/uploads/2018/12/rescue-reset-forgotten-root-password-on-rhel-7-centos-7-4.png -[23]: https://www.2daygeek.com/wp-content/uploads/2018/12/rescue-reset-forgotten-root-password-on-rhel-7-centos-7-5.png -[24]: https://www.2daygeek.com/wp-content/uploads/2018/12/rescue-reset-forgotten-root-password-on-rhel-7-centos-7-6.png -[25]: https://www.2daygeek.com/wp-content/uploads/2018/12/rescue-reset-forgotten-root-password-on-rhel-7-centos-7-7.png -[26]: https://www.2daygeek.com/wp-content/uploads/2018/12/rescue-reset-forgotten-root-password-on-rhel-7-centos-7-8.png diff --git a/sources/tech/20190219 4 secrets management tools for Git encryption.md b/sources/tech/20190219 4 secrets management tools for Git encryption.md deleted file mode 100644 index 303bc0ef87..0000000000 --- a/sources/tech/20190219 4 secrets management tools for Git encryption.md +++ /dev/null @@ -1,161 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (4 secrets management tools for Git encryption) -[#]: via: (https://opensource.com/article/19/2/secrets-management-tools-git) -[#]: author: (Austin Dewey https://opensource.com/users/adewey) - -4 secrets management tools for Git encryption -====== -See how Git-crypt, BlackBox, SOPS, and Transcrypt stack up for storing secrets in Git. -![](https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/rh_003601_05_mech_osyearbook2016_security_cc.png?itok=3V07Lpko) - -There are a lot of great open source tools out there for storing secrets in Git. It can be hard to determine the right one for you and your organization—it depends on your use cases and requirements. To help you compare and choose, we'll look at four of the most popular open source tools for secrets management and see how they stack up against each other: - -+ [Git-crypt](https://github.com/AGWA/git-crypt) -+ [BlackBox](https://github.com/StackExchange/blackbox) -+ [SOPS](https://github.com/mozilla/sops) -+ [Transcrypt](https://github.com/elasticdog/transcrypt) - - -We won't review larger solutions like HashiCorp Vault. A production-ready Vault can be a rather large hurdle, especially if your organization is just getting started with secrets management. The tools above are easy to use and set up quickly. - -### Encryption types - -These secrets management tools use GNU Privacy Guard ([GPG][1]), symmetric key encryption, and/or cloud key services. - - * GPG-based tools require users to create a GPG keypair. The public key is used to encrypt and is shared with other users, while the private key is used to decrypt and is known by only one user. - * Symmetric key tools are password-based and work when given the correct password. - * Cloud key services—Amazon Key Management Service (KMS), Google Cloud KMS, and Azure Key Vault-based tools—allow integration with services from cloud providers. - - - -The encryption types these secrets management tools use are: -| | GPG | Symmetric key | Amazon KMS | Google KMS | Azure Key Vault | -| Git-crypt | X | X | | | | -| BlackBox | X | | | | | -| SOPS | X | | X | X | X | -| Transcrypt | | X | | | | - -As you can see, Git-crypt and SOPS use more than one encryption basis. This means Git-crypt can achieve encryption by using GPG OR a symmetric key, and SOPS can use GPG OR one of the cloud services. - -### Goals - -These tools have similar goals: - -| | Transparency with Git | Whole-file encryption | Partial-file encryption | -| Git-crypt | X | X | | -| BlackBox | X | X | | -| SOPS | | X | X | -| Transcrypt | X | X | | - -All but SOPS are transparent with Git, which means they have built-in mechanisms to ensure that files in source control are encrypted without much effort from users. They help prevent a **git push** from accidentally pushing plaintext secrets to Git. - -At this point, you might be wondering, "Why is SOPS here if it doesn't encrypt transparently with Git? Isn't this a post about Git encryption tools?" The reason is because of how it handles key-value-based files, such as YAML and JSON. When encrypting these types of files, SOPS will leave the keys unencrypted but will encrypt the values. There are often cases, especially in configuration management, where these types of files need to be encrypted in Git, but it would also be convenient to see what kind of information they contain. While SOPS does not provide native Git transparency, tools like [git-secrets][2] can be used alongside SOPS to help ensure plaintext secrets are not pushed to Git. - -Finally, all of these tools support whole-file encryption, in which secrets files are encrypted in their entirety. - -### Workflows and differences - -None of these tools are particularly difficult to use, but they all have quirks and operational challenges to consider. - -#### GPG - -The basic workflow for a GPG-based tool is: - - 1. Initialize the repository with the encryption tool - 2. Create GPG keys for users that are allowed to manage secret files - 3. Add the corresponding public keys to the tool - 4. Designate the files that should be treated as "secret" - 5. Encrypt the files using the tool - 6. Repeat steps 2, 3, and 5 for each new user that is granted permission - 7. To revoke a user, remove the user and repeat step 5 - - - -In theory, this workflow is simple. One operational issue is GPG key maintenance. Your team will need to back up its GPG keys to prevent a lock-out scenario if GPG keys are accidentally deleted. If you are using the tool for automation, you will also need to consider who will be responsible for creating and maintaining keys for that service. Additionally, if you need to add, remove, or rotate a key, you'll need to re-encrypt each file for the changes to take effect. - -Advantages and disadvantages of the GPG-based tools include: - - * Git-crypt cannot remove GPG users natively, which means step 7 above is not easy to do. There are workarounds available, but it's not a built-in feature. - * Git-crypt will transparently perform step 5 above on a **git push** —even when new users are added. - * BlackBox provides a **blackbox_update_all_files** command, which can perform step 5 by re-encrypting all secret files in one command. This comes in handy in key rotation and adding/removing GPG keys, where all files need to be re-encrypted. - * SOPS makes key rotation and adding/removing GPG keys the most difficult, as it requires each file to be manually re-encrypted. - * BlackBox has a **blackbox_list_admins** command that returns the email address that corresponds with registered users' GPG keys. This makes it easier to discern who has access to the secrets versus trying to map plain GPG fingerprints. - - - -#### Cloud key services - -Here is a sample workflow using SOPS with Amazon KMS: - - 1. Create identity and access management (IAM) entities - 2. Create KMS master key - 3. Grant IAM entities access to the master key - 4. Add the master key to each secret file with SOPS and encrypt the file (adding keys and encrypting is usually a one-step process with SOPS) - 5. Re-encrypt when adding or removing master keys - - - -Of these four tools, SOPS is the only one that allows users to configure encryption with a cloud-based key service. Cloud key services ease much of the operational burden that GPG-based solutions carry. Take Amazon KMS, for example: The master key is added to SOPS and access to secret files is controlled through IAM policies. Adding and removing users is as simple as granting or revoking permission with IAM, meaning secret files do not need to be re-encrypted when changing permissions, since nothing changed from SOPS's perspective. This solution does have its own set of operational challenges, however. Each member of the team must have an AWS account before they can access secret files. Also, admins must configure and maintain the IAM policies and KMS master key(s). - -#### Symmetric key encryption - -The workflow for symmetric key-based tools is probably the simplest: - - 1. Initialize the repository with the encryption tool - 2. Designate files that should be treated as "secret" - 3. **git push** to transparently encrypt the files - 4. Share the symmetric key with other users who need access - 5. Rotate the key each time a user is revoked access - - - -Git-crypt and Transcrypt both provide a complex password as the symmetric key. The operational challenges are to find a secure way to share the symmetric key and to be sure to rotate the key each time a user is removed. - -Here are a few differences between Git-crypt and Transcrypt, our symmetric key-compatible tools: - - * Git-crypt is compatible with both GPG and symmetric key encryption - * Git-crypt doesn't support symmetric key rotation, so you can't complete step 5 if you use it with a symmetric key - * Transcrypt provides a convenient **\--rekey** command for key rotation - - - -### Other features - -Other features and characteristics of the tools include: - -| | Editor-in-place | Auditing | Repo-level permission | File-level permission | -| Git-crypt | | | X | | -| BlackBox | X | | X | | -| SOPS | X | X | | X | -| Transcrypt | | | X | | - -Both BlackBox and SOPS feature an "editor-in-place" tool, which decrypts the file and opens a text editor specified by the **$EDITOR** environment variable. This enables the user to make in-place edits to the file before it is saved and re-encrypted, so users can modify secret files without requiring them to be "decrypted in place" first. - -SOPS is the only tool that provides an auditing feature. This feature tracks and monitors SOPS usage by forwarding events to a database. It requires a certain amount of setup, so check out SOPS's [README][3] for more information. - -Git-crypt, BlackBox, and Transcrypt handle access at the repo level, meaning that if you can view one decrypted file, you can view them all. Depending on your use case, this is either a feature or a misfeature. SOPS handles permissions at the file level, meaning just because users can view one file, they can't necessarily view other files in the repo. - -### For more information - -Hopefully, this high-level overview of four open source secrets management tools will help you make an educated decision about the right tool for you. For more information on the tools, please check out their GitHub pages (linked at the top of this article). - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/19/2/secrets-management-tools-git - -作者:[Austin Dewey][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/adewey -[b]: https://github.com/lujun9972 -[1]: https://www.gnupg.org/ -[2]: https://github.com/awslabs/git-secrets -[3]: https://github.com/mozilla/sops/blob/master/README.rst#auditing diff --git a/sources/tech/20190316 Program the real world using Rust on Raspberry Pi.md b/sources/tech/20190316 Program the real world using Rust on Raspberry Pi.md deleted file mode 100644 index 773fd1cc10..0000000000 --- a/sources/tech/20190316 Program the real world using Rust on Raspberry Pi.md +++ /dev/null @@ -1,141 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Program the real world using Rust on Raspberry Pi) -[#]: via: (https://opensource.com/article/19/3/physical-computing-rust-raspberry-pi) -[#]: author: (Rahul Thakoor https://opensource.com/users/rahul27) - -Program the real world using Rust on Raspberry Pi -====== - -rust_gpizero uses the Rust programming language to do physical computing on the Raspberry Pi. - -![][1] - -If you own a Raspberry Pi, chances are you may already have experimented with physical computing—writing code to interact with the real, physical world, like blinking some LEDs or [controlling a servo motor][2]. You may also have used [GPIO Zero][3], a Python library that provides a simple interface to GPIO devices from Raspberry Pi with a friendly Python API. GPIO Zero is developed by [Opensource.com][4] community moderator [Ben Nuttall][5]. - -I am working on [**rust_gpiozero**][6], a port of the awesome GPIO Zero library that uses the Rust programming language. It is still a work in progress, but it already includes some useful components. - -[Rust][7] is a systems programming language developed at Mozilla. It is focused on performance, reliability, and productivity. The Rust website has [great resources][8] if you'd like to learn more about it. - -### Getting started - -Before starting with rust_gpiozero, it's smart to have a basic grasp of the Rust programming language. I recommend working through at least the first three chapters in [The Rust Programming Language][9] book. - -I recommend [installing Rust][10] on your Raspberry Pi using [**rustup**][11]. Alternatively, you can set up a cross-compilation environment using [cross][12] (which works only on an x86_64 Linux host) or [this how-to][13]. - -After you've installed Rust, create a new Rust project by entering: - -``` -cargo new rust_gpiozero_demo -``` - -Add **rust_gpiozero** as a dependency (currently in v0.2.0) by adding the following to the dependencies section in your **Cargo.toml** file - -``` -rust_gpiozero = "0.2.0" -``` - -Next, blink an LED—the "hello world" of physical computing by modifying the **main.rs** file with the following: -``` -use rust_gpiozero::*; -use std::thread; -use std::time::Duration; - -fn main() { - // Create a new LED attached to Pin 17 - let led = LED::new(17); - - // Blink the LED 5 times - for _ in 0.. 5{ - led.on(); - thread::sleep(Duration::from_secs(1)); - led.off(); - thread::sleep(Duration::from_secs(1)); - } -} -``` - -rust_gpiozero provides an easier interface for blinking an LED. You can use the blink method, providing the number of seconds it should stay on and off. This simplifies the code to the following: -``` -use rust_gpiozero::*; -fn main() { - // Create a new LED attached to Pin 17 - let mut led = LED::new(17); - - // on_time = 2 secs, off_time=3 secs - led.blink(2.0,3.0); - - // prevent program from exiting immediately - led.wait(); -} -``` - -### Other components - -rust_gpiozero provides several components that are similar to GPIO Zero for controlling output and input devices. These include [LED][14], [Buzzer][15], [Motor][16], Pulse Width Modulation LED ([PWMLED][17]), [Servo][18], and [Button][19]. - -Support for other components, sensors, and devices will be added eventually. You can refer to the [documentation][20] for further usage information. - -### More resources - -rust_gpiozero is still a work in progress. If you need more resources for getting started with Rust on your Raspberry Pi, here are some useful links: - -#### Raspberry Pi Peripheral Access Library (RPPAL) - -Similar to GPIO Zero, which is based on the [RPi.GPIO][21] library, rust_gpiozero builds upon the awesome **[RPPAL][22]** library by [Rene van der Meer][23]. If you want more control for your projects using Rust, you should definitely try RPPAL. It has support for GPIO, Inter-Integrated Circuit (I 2C), hardware and software Pulse Width Modulation (PWM), and Serial Peripheral Interface (SPI). Universal asynchronous receiver-transmitter (UART) support is currently in development. - -#### Sense HAT support - -**[Sensehat-rs][24]** is a library by [Jonathan Pallant][25] ([@therealjpster][26]) that provides Rust support for the Raspberry Pi [Sense HAT][27] add-on board. Jonathan also has a [starter workshop][28] for using the library and he wrote a beginner's intro to use Rust on Raspberry Pi, "Read Sense HAT with Rust," in [Issue 73 of _The MagPi_][29] magazine. - -### Wrap Up - -Hopefully, this has inspired you to use the Rust programming language for physical computing on your Raspberry Pi. rust_gpiozero is a library which provides useful components such as LED, Buzzer, Motor, PWMLED, Servo, and Button. More features are planned and you can follow me on [twitter][30] or check out [my blog][31] to stay tuned. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/19/3/physical-computing-rust-raspberry-pi - -作者:[Rahul Thakoor][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/rh_003784_02_os.comcareers_os_rh2x.png?itok=jbRfXinl -[2]: https://projects.raspberrypi.org/en/projects/grandpa-scarer/4 -[3]: https://gpiozero.readthedocs.io/en/stable/# -[4]: http://Opensource.com -[5]: https://opensource.com/users/bennuttall -[6]: https://crates.io/crates/rust_gpiozero -[7]: https://www.rust-lang.org/ -[8]: https://www.rust-lang.org/learn -[9]: https://doc.rust-lang.org/book/ -[10]: https://www.rust-lang.org/tools/install -[11]: https://rustup.rs/ -[12]: https://github.com/rust-embedded/cross -[13]: https://github.com/kunerd/clerk/wiki/How-to-use-HD44780-LCD-from-Rust#setting-up-the-cross-toolchain -[14]: https://docs.rs/rust_gpiozero/0.2.0/rust_gpiozero/output_devices/struct.LED.html -[15]: https://docs.rs/rust_gpiozero/0.2.0/rust_gpiozero/output_devices/struct.Buzzer.html -[16]: https://docs.rs/rust_gpiozero/0.2.0/rust_gpiozero/output_devices/struct.Motor.html -[17]: https://docs.rs/rust_gpiozero/0.2.0/rust_gpiozero/output_devices/struct.PWMLED.html -[18]: https://docs.rs/rust_gpiozero/0.2.0/rust_gpiozero/output_devices/struct.Servo.html -[19]: https://docs.rs/rust_gpiozero/0.2.0/rust_gpiozero/input_devices/struct.Button.html -[20]: https://docs.rs/rust_gpiozero/ -[21]: https://pypi.org/project/RPi.GPIO/ -[22]: https://github.com/golemparts/rppal -[23]: https://twitter.com/golemparts -[24]: https://crates.io/crates/sensehat -[25]: https://github.com/thejpster -[26]: https://twitter.com/therealjpster -[27]: https://www.raspberrypi.org/products/sense-hat/ -[28]: https://github.com/thejpster/pi-workshop-rs/ -[29]: https://www.raspberrypi.org/magpi/issues/73/ -[30]: https://twitter.com/rahulthakoor -[31]: https://rahul-thakoor.github.io/ diff --git a/sources/tech/20190408 Linux Server Hardening Using Idempotency with Ansible- Part 1.md b/sources/tech/20190408 Linux Server Hardening Using Idempotency with Ansible- Part 1.md deleted file mode 100644 index ca0d81d89a..0000000000 --- a/sources/tech/20190408 Linux Server Hardening Using Idempotency with Ansible- Part 1.md +++ /dev/null @@ -1,94 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Linux Server Hardening Using Idempotency with Ansible: Part 1) -[#]: via: (https://www.linux.com/blog/linux-server-hardening-using-idempotency-ansible-part-1) -[#]: author: (Chris Binnie https://www.linux.com/users/chrisbinnie) - -Linux Server Hardening Using Idempotency with Ansible: Part 1 -====== - -![][1] - -[Creative Commons Zero][2] - -I think it’s safe to say that the need to frequently update the packages on our machines has been firmly drilled into us. To ensure the use of latest features and also keep security bugs to a minimum, skilled engineers and even desktop users are well-versed in the need to update their software. - -Hardware, software and SaaS (Software as a Service) vendors have also firmly embedded the word “firewall” into our vocabulary for both domestic and industrial uses to protect our computers. In my experience, however, even within potentially more sensitive commercial environments, few engineers actively tweak the operating system (OS) they’re working on, to any great extent at least, to bolster security. - -Standard fare on Linux systems, for example, might mean looking at configuring a larger swap file to cope with your hungry application’s demands. Or, maybe adding a separate volume to your server for extra disk space, specifying a more performant CPU at launch time, installing a few of your favorite DevOps tools, or chucking a couple of certificates onto the filesystem for each new server you build. This isn’t quite the same thing. - -### Improve your Security Posture - -What I am specifically referring to is a mixture of compliance and security, I suppose. In short, there’s a surprisingly large number of areas in which a default OS can improve its security posture. We can agree that tweaking certain aspects of an OS are a little riskier than others. Consider your network stack, for example. Imagine that, completely out of the blue, your server’s networking suddenly does something unexpected and causes you troubleshooting headaches or even some downtime. This might happen because a new application or updated package suddenly expects routing to behave in a less-common way or needs a specific protocol enabled to function correctly. - -However, there are many changes that you can make to your servers without suffering any sleepless nights. The version and flavor of an OS helps determine which changes and to what extent you might want to comfortably make. Most importantly though what’s good for the goose is rarely good for the gander. In other words every single server estate has different, both broad and subtle, requirements which makes each use case unique. And, don’t forget that a database server also has very different needs to a web server so you can have a number of differing needs even within one small cluster of servers. - -Over the last few years I’ve introduced these hardening and compliance tweaks more than a handful of times across varying server estates in my DevSecOps roles. The OSs have included: Debian, Red Hat Enterprise Linux (RHEL) and their respective derivatives (including what I suspect will be the increasingly popular RHEL derivative, Amazon Linux). There have been times that, admittedly including a multitude of relatively tiny tweaks, the number of changes to a standard server build was into the hundreds. It all depended on the time permitted for the work, the appetite for any risks and the generic or specific nature of the OS tweaks. - -In this article, we’ll discuss the theory around something called idempotency which, in hand with an automation tool such as Ansible, can provide the ongoing improvements to your server estate’s security posture. For good measure we’ll also look at a number of Ansible playbook examples and additionally refer to online resources so that you can introduce idempotency to a server estate near you. - -### Say What? - -In simple terms the word “idempotent” just means returning something back to how it was prior to a change. It can also mean that lots of things you wanted to be the same, for consistency, are exactly the same, too. - -Picture that in action for a moment on a server estate; we’ll use AWS (Amazon Web Services) as our example. You create a new server image (Amazon Machine Images == AMIs) precisely how you want it with compliance and hardening introduced, custom packages, the removal of unwanted packages, SSH keys, user accounts etc and then spin up twenty servers using that AMI. - -You know for certain that all the servers, at least at the time that they are launched, are absolutely identical. Trust me when I say that this is a “good thing” ™. The lack of what’s known as “config drift” means that if one package on a server needs updated for security reasons then all the servers need that package updated too. Or if there’s a typo in a config file that’s breaking an application then it affects all servers equally. There’s less administrative overhead, less security risk and greater levels of predictability in terms of achieving better uptime. - -What about config drift from a security perspective? As you’ve guessed it’s definitely not welcome. That’s because engineers making manual changes to a “base OS build” can only lead to heartache and stress. The predictability of how a system is working suffers greatly as a result and servers running unique config become less reliable. These server systems are known as “snowflakes” as they’re unique but far less beautiful than actual snow. - -Equally an attacker might have managed to breach one aspect, component or service on a server but not all of its facets. By rewriting our base config again and again we’re able to, with 100% certainty (if it’s set up correctly), predict exactly what a server will look like and therefore how it will perform. Using various tools you can also trigger alarms if changes are detected to request that a pair of human eyes have a look to see if it’s a serious issue and then adjust the base config if needed. - -To make our machines idempotent we might overwrite our config changes every 20 or 30 minutes, for example. When it comes to running servers, that in essence, is what is meant by idempotency. - -### Central Station - -My mechanism of choice for repeatedly writing config across a large number of servers is running Ansible playbooks. It’s relatively easy to implement and removes the all-too-painful additional logic required when using shell scripts. Of the popular configuration management tools I’ve seen in action is Puppet, used successfully on a large government estate in an idempotent manner, but I prefer Ansible due to its more logical syntax (to my mind at least) and its readily available documentation. - -Before we look at some simple Ansible examples of hardening an OS with idempotency in mind we should explore how to trigger our Ansible playbooks. - -This is a larger area for debate than you might first imagine. Say, for example, you have nicely segmented server estate with production servers being carefully locked away from development servers, sitting behind a production-grade firewall. Consider the other servers on the estate, belonging to staging (pre-production) or other development environments, intentionally having different access permissions for security reasons. - -If you’re going to run a centralized server that has superuser permissions (which are required to make privileged changes to your core system files) then that server will need to have high-level access permissions potentially across your entire server estate. It must therefore be guarded very closely. - -You will also want to test your playbooks against development environments (in plural) to test their efficacy which means you’ll probably need two all-powerful centralised Ansible servers, one for production and one for the multiple development environments. - -The actual approach of how to achieve other logistical issues is up for debate and I’ve heard it discussed a few times. Bear in mind that Ansible runs using plain, old SSH keys (a feature that something other configuration management tools have started to copy over time) but ideally you want a mechanism for keeping non-privileged keys on your centralised servers so you’re not logging in as the “root” user across the estate every twenty minutes or thirty minutes. - -From a network perspective I like the idea of having firewalling in place to enforce one-way traffic only into the environment that you’re affecting. This protects your centralised host so that a compromised server can’t attack that main Ansible host easily and then as a result gain access to precious SSH keys in order to damage the whole estate. - -Speaking of which, are servers actually needed for a task like this? What about using AWS Lambda () to execute your playbooks? A serverless approach stills needs to be secured carefully but unquestionably helps to limit the attack surface and also potentially reduces administrative responsibilities. - -I suspect how this all-powerful server is architected and deployed is always going to be contentious and there will never be a one-size-fits-all approach but instead a unique, bespoke solution will be required for every server estate. - -### How Now, Brown Cow - -It’s important to think about how often you run your Ansible and also how to prepare for your first execution of the playbook. Let’s get the frequency of execution out of the way first as it’s the easiest to change in the future. - -My preference would be three times an hour or instead every thirty minutes. If we include enough detail in our configuration then our playbooks might prevent an attacker gaining a foothold on a system as the original configuration overwrites any altered config. Twenty minutes seems more appropriate to my mind. - -Again, this is an aspect you need to have a think about. You might be dumping small config databases locally onto a filesystem every sixty minutes for example and that scheduled job might add an extra little bit of undesirable load to your server meaning you have to schedule around it. - -Next time, we’ll take a look at some specific changes that can be made to various systems. - -_Chris Binnie’s latest book, Linux Server Security: Hack and Defend, shows you how to make your servers invisible and perform a variety of attacks. You can find out more about DevSecOps, containers and Linux security on his website:[https://www.devsecops.cc][3]_ - --------------------------------------------------------------------------------- - -via: https://www.linux.com/blog/linux-server-hardening-using-idempotency-ansible-part-1 - -作者:[Chris Binnie][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://www.linux.com/users/chrisbinnie -[b]: https://github.com/lujun9972 -[1]: https://www.linux.com/sites/lcom/files/styles/rendered_file/public/geometric-1732847_1280.jpg?itok=YRux0Tua -[2]: /LICENSES/CATEGORY/CREATIVE-COMMONS-ZERO -[3]: https://www.devsecops.cc/ diff --git a/sources/tech/20190409 topgrade - Upgrade-Update Everything In Single Command On Linux.md b/sources/tech/20190409 topgrade - Upgrade-Update Everything In Single Command On Linux.md deleted file mode 100644 index 48edeaec20..0000000000 --- a/sources/tech/20190409 topgrade - Upgrade-Update Everything In Single Command On Linux.md +++ /dev/null @@ -1,207 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (topgrade – Upgrade/Update Everything In Single Command On Linux?) -[#]: via: (https://www.2daygeek.com/topgrade-upgrade-update-everything-in-single-command-on-linux/) -[#]: author: (Magesh Maruthamuthu https://www.2daygeek.com/author/magesh/) - -topgrade – Upgrade/Update Everything In Single Command On Linux? -====== - -As a Linux administrator, you have to keep your system up-to-date to get ride out from some unexpected issues. - -We have to keep the system with latest patches as part of best practices. - -To do so, you need to perform the patching activity at least once in a month. - -Most of the time you have to reboot the server after patching to activate the latest kernel. - -It’s good to reboot the server at least 90-120 days once that will fix some outstanding issue which we already having. - -If you have a single system then we can directly login to the system and do perform the patching that is not a big deal. - -Even, if you have few of servers with the same flavor then you can perform the patching with help of shell script. - -If you have high number of servers then i would advise you to go with any of the parallel utility, which will help us to perform the patching in parallel. - -It will save a lot’s of time compared with shell script as this go with sequential order. - -how to patch all togeter if you have servers with multiple flavors? What will be the solution ? - -I recently came to know the utility called `topgrade` that can fulfill your requirement. - -Also, your distribution package manager doesn’t upgrade the packages which was installed with other package managers such as pip, npm, snap, etc,. but topgrade can fix this issue as well. - -### What Is topgrade? - -[topgrade][1] is a new tool that will upgrade all the installed packages on your system to latest available version by detecting and running the appropriate package managers. - -### How To Install topgrade In Linux? - -There is no separate package manager for distributions wise. Hence, you need to install topgrade with help of cargo package manager. - -The topgrade is available in AUR. So, use one of the **[AUR helper][2]** to install it on Arch-based systems. I prefer to go with **[Yay helper][3]** program. - -``` -$ yay -S topgrade -``` - -Once you have installed the **[cargo package manager][4]** , use the following command to install it. - -``` -$ cargo install topgrade -``` - -Once topgrade is initiated, it will perform the following tasks one by one. - - * Try to self-upgrade if any updated is available for topgrade. - * Arch: Run yay or fall back to pacman - * CentOS/RHEL: Run yum upgrade - * Fedora: Run dnf upgrade - * Debian/Ubuntu: Run apt update && apt dist-upgrade - * openSUSE: Run zypper refresh && zypper dist-upgrade - * Upgrade Vim/Neovim packages. - * Run npm update -g if NPM is installed - * Upgrade Atom packages - * Linux: Update Flatpak packages - * Linux: Update snap packages - * Linux: Run fwupdmgr to show firmware upgrade. - * Finally it will run needrestart to bounce all the services. - - - -Now, we have successfully installed `topgrade` so, run the topgrade alone to upgrade everything on your system. I have tested the utility on Ubuntu 18.04 LTS and the results are below. - -``` -$ topgrade - -―― System update ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――― -[sudo] password for daygeek: -Hit:1 http://in.archive.ubuntu.com/ubuntu bionic InRelease -Get:2 http://security.ubuntu.com/ubuntu bionic-security InRelease [88.7 kB] -Get:3 http://in.archive.ubuntu.com/ubuntu bionic-updates InRelease [88.7 kB] -Get:4 http://in.archive.ubuntu.com/ubuntu bionic-backports InRelease [74.6 kB] -. -Get:16 http://security.ubuntu.com/ubuntu bionic-security/universe DEP-11 64x64 Icons [45.2 kB] -Get:17 http://security.ubuntu.com/ubuntu bionic-security/multiverse amd64 DEP-11 Metadata [2,460 B] -Fetched 1,565 kB in 13s (117 kB/s) -Reading package lists... Done -Building dependency tree -Reading state information... Done -119 packages can be upgraded. Run 'apt list --upgradable' to see them. -Reading package lists... Done -Building dependency tree -Reading state information... Done -Calculating upgrade... Done -The following packages were automatically installed and are no longer required: - libopts25 linux-headers-4.15.0-45 linux-headers-4.15.0-45-generic linux-image-4.15.0-45-generic - linux-modules-4.15.0-29-generic linux-modules-4.15.0-45-generic linux-modules-extra-4.15.0-45-generic sntp -Use 'sudo apt autoremove' to remove them. -The following packages will be upgraded: - apport apport-gtk apt apt-utils cups cups-bsd cups-client cups-common cups-core-drivers cups-daemon cups-ipp-utils - cups-ppdc cups-server-common distro-info-data fwupdate fwupdate-signed gir1.2-dbusmenu-glib-0.4 gir1.2-gtk-3.0 - gir1.2-packagekitglib-1.0 gir1.2-snapd-1 gnome-settings-daemon gnome-settings-daemon-schemas grub-common grub-pc - python3-httplib2 python3-problem-report samba-libs systemd systemd-sysv ubuntu-drivers-common udev ufw - unattended-upgrades xdg-desktop-portal xdg-desktop-portal-gtk -119 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. -Need to get 38.5 MB of archives. -After this operation, 475 kB of additional disk space will be used. -Do you want to continue? [Y/n] -. -. -Setting up grub-pc (2.02-2ubuntu8.13) ... -Installing for i386-pc platform. -Installation finished. No error reported. -Sourcing file `/etc/default/grub' -Generating grub configuration file ... -Found memtest86+ image: /boot/memtest86+.elf -Found memtest86+ image: /boot/memtest86+.bin -done -Setting up mesa-vdpau-drivers:amd64 (18.2.8-0ubuntu0~18.04.2) ... -Updating PPD files for cups ... -Setting up apport-gtk (2.20.9-0ubuntu7.6) ... -Setting up pulseaudio-module-bluetooth (1:11.1-1ubuntu7.2) ... -Processing triggers for libc-bin (2.27-3ubuntu1) ... -Processing triggers for initramfs-tools (0.130ubuntu3.7) ... -update-initramfs: Generating /boot/initrd.img-4.15.0-47-generic -``` - -It will run the self-updates once the distribution official packages update done. - -``` -―― rustup ――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――― -info: checking for self-updates -info: syncing channel updates for 'stable-x86_64-unknown-linux-gnu' -info: checking for self-updates - - stable-x86_64-unknown-linux-gnu unchanged - rustc 1.33.0 (2aa4c46cf 2019-02-28) -``` - -Then it will try to update the packages that has installed with other package managers. - -``` -―― Flatpak User Packages ―――――――――――――――――――――――――――――――――――――――――――――――――――――――― -Looking for updates... -Looking for updates... -Updating in system: -org.gnome.Platform/x86_64/3.30 flathub 862e6b8ec2b5 -org.gnome.Platform.Locale/x86_64/3.30 flathub 5e66e981ae00 -org.freedesktop.Platform.html5-codecs/x86_64/18.08 flathub 282fd2c4ef33 -com.github.muriloventuroso.easyssh/x86_64/stable flathub c6bc3a3e72fb - new permissions: ssh-auth -com.github.muriloventuroso.easyssh.Locale/x86_64/stable flathub b705864b8d78 -Updating: org.gnome.Platform/x86_64/3.30 from flathub -[####################] 16 delta parts, 10 loose fetched; 65539 KiB transferred in 63 seconds -Error: Failed to update org.gnome.Platform/x86_64/3.30: Flatpak system operation Deploy not allowed for user - -Skipping org.gnome.Platform.Locale/x86_64/3.30 due to previous error - -Skipping org.freedesktop.Platform.html5-codecs/x86_64/18.08 due to previous error -Updating: com.github.muriloventuroso.easyssh/x86_64/stable from flathub -[####################] 2 delta parts, 3 loose fetched; 1532 KiB transferred in 5 seconds -Error: Failed to update com.github.muriloventuroso.easyssh/x86_64/stable: Flatpak system operation Deploy not allowed for user - -Skipping com.github.muriloventuroso.easyssh.Locale/x86_64/stable due to previous error -error: There were one or more errors - -Retry? [y/N] -``` - -Then it will run the firmwre upgrade. - -``` -―― Firmware upgrades ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――― -Fetching metadata https://cdn.fwupd.org/downloads/firmware.xml.gz -Downloading… [***************************************] -Fetching signature https://cdn.fwupd.org/downloads/firmware.xml.gz.asc -``` - -Finally, it shows the summary about the patching has done. - -``` -―― Summary ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――― -System update: OK -rustup: OK -Flatpak User Packages: FAILED -Firmware upgrade: OK -``` - --------------------------------------------------------------------------------- - -via: https://www.2daygeek.com/topgrade-upgrade-update-everything-in-single-command-on-linux/ - -作者:[Magesh Maruthamuthu][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://www.2daygeek.com/author/magesh/ -[b]: https://github.com/lujun9972 -[1]: https://github.com/r-darwish/topgrade -[2]: https://www.2daygeek.com/category/aur-helper/ -[3]: https://www.2daygeek.com/install-yay-yet-another-yogurt-aur-helper-on-arch-linux/ -[4]: https://www.2daygeek.com/how-to-install-rust-programming-language-in-linux/ diff --git a/sources/tech/20190412 Linux Server Hardening Using Idempotency with Ansible- Part 2.md b/sources/tech/20190412 Linux Server Hardening Using Idempotency with Ansible- Part 2.md deleted file mode 100644 index 1e1b451500..0000000000 --- a/sources/tech/20190412 Linux Server Hardening Using Idempotency with Ansible- Part 2.md +++ /dev/null @@ -1,116 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Linux Server Hardening Using Idempotency with Ansible: Part 2) -[#]: via: (https://www.linux.com/blog/linux-server-hardening-using-idempotency-ansible-part-2) -[#]: author: (Chris Binnie https://www.linux.com/users/chrisbinnie) - -Linux Server Hardening Using Idempotency with Ansible: Part 2 -====== - -![][1] - -[Creative Commons Zero][2] - -In the first part of this series, we introduced something called idempotency, which can provide the ongoing improvements to your server estate’s security posture. In this article, we’ll get a little more hands-on with a look at some specific Ansible examples. - -### Shopping List - -You will need some Ansible experience before being able to make use of the information that follows. Rather than run through the installation and operation of Ansible let’s instead look at some of the idempotency playbook’s content. - -As mentioned earlier there might be hundreds of individual system tweaks to make on just one type of host so we’ll only explore a few suggested Ansible tasks and how I like to structure the Ansible role responsible for the compliance and hardening. You have hopefully picked up on the fact that the devil is in the detail and you should absolutely, unequivocally, understand to as high a level of detail as possible, about the permutations of making changes to your server OS. - -Be aware that I will mix and match between OSs in the Ansible examples that follow. Many examples are OS agnostic but as ever you should pay close attention to the detail. Obvious changes like “apt” to “yum” for the package manager is a given. - -Inside a “tasks” file under our Ansible “hardening” role, or whatever you decide to name it, these named tasks represent the areas of a system with some example code to offer food for thought. In other words, each section that follows will probably be a single YAML file, such as “accounts.yml”, and each will have with varying lengths and complexity. - -Let’s look at some examples with ideas about what should go into each file to get you started. The contents of each file that follow are just the very beginning of a checklist and the following suggestions are far from exhaustive. - -#### SSH Server - -This is the application that almost all engineers immediately look to harden when asked to secure a server. It makes sense as SSH (the OpenSSH package in many cases) is usually only one of a few ports intentionally prised open and of course allows direct access to the command line. The level of hardening that you should adopt is debatable. I believe in tightening the daemon as much as possible without disruption and would usually make around fifteen changes to the standard OpenSSH server config file, “sshd_config”. These changes would include pulling in a MOTD banner (Message Of The Day) for legal compliance (warning of unauthorised access and prosecution), enforcing the permissions on the main SSHD files (so they can’t be tampered with by lesser-privileged users), ensuring the “root” user can’t log in directly, setting an idle session timeout and so on. - -Here’s a very simple Ansible example that you can repeat within other YAML files later on, focusing on enforcing file permissions on our main, critical OpenSSH server config file. Note that you should carefully check every single file that you hard-reset permissions on before doing so. This is because there are horrifyingly subtle differences between Linux distributions. Believe me when I say that it’s worth checking first. - -name: Hard reset permissions on sshd server file - -file: owner=root group=root mode=0600 path=/etc/ssh/sshd_config - -To check existing file permissions I prefer this natty little command for the job: - -``` -$ stat -c "%a %n" /etc/ssh/sshd_config - -644 /etc/ssh/sshd_config -``` - -As our “stat” command shows our Ansible snippet would be an improvement to the current permissions because 0600 means only the “root” user can read and write to that file. Other users or groups can’t even read that file which is of benefit because if we’ve made any mistakes in securing SSH’s config they can’t be discovered as easily by less-privileged users. - -#### System Accounts - -At a simple level this file might define how many users should be on a standard server. Usually a number of users who are admins have home directories with public keys copied into them. However this file might also include performing simple checks that the root user is the only system user with the all-powerful superuser UID 0; in case an attacker has altered user accounts on the system for example. - -#### Kernel - -Here’s a file that can grow arms and legs. Typically I might affect between fifteen and twenty sysctl changes on an OS which I’m satisfied won’t be disruptive to current and, all going well, any future uses of a system. These changes are again at your discretion and, at my last count (as there’s between five hundred and a thousand configurable kernel options using sysctl on a Debian/Ubuntu box) you might opt to split off these many changes up into different categories. - -Such categories might include network stack tuning, stopping core dumps from filling up disk space, disabling IPv6 entirely and so on. Here’s an Ansible example of logging network packets that shouldn’t been routed out onto the Internet, namely those packets using spoofed private IP Addresses, called “martians”. - -name: Keep track of traffic that shouldn’t be routed onto the Internet - -lineinfile: dest="/etc/sysctl.conf" line="{{item.network}}" state=present - -with_items: - -\- { network: 'net.ipv4.conf.all.log_martians = 1' } - -\- { network: 'net.ipv4.conf.default.log_martians = 1' } - -Pay close attention that you probably don’t want to use the file “/etc/sysctl.conf” but create a custom file under the directory “/etc/sysctl.d/” or similar. Again, check your OS’s preference, usually in the comments of the pertinent files. If you’ve not seen martian packets being enabled before then type “dmesg” (sometimes only as the “root” user) to view kernel messages and after a week or two of logging being in place you’ll probably see some traffic polluting your logs. It’s much better to know how attackers are probing your servers than not. A few log entries for reference can only be of value. When it comes to looking after servers, ignorance is certainly not bliss. - -#### Network - -As mentioned you might want to include hardening the network stack within your kernel.yml file, depending on whether there’s many entries or not, or simply for greater clarity. For your network.yml file have a think about stopping old-school broadcast attacks flooding your LAN and ICMP oddities from changing your routing in addition. - -#### Services - -Usually I would stop or start miscellaneous system services (and potentially applications) within this Ansible file. If there weren’t many services then rather than also using a “cron.yml” file specifically for “cron” hardening I’d include those here too. - -There’s a bundle of changes you can make around cron’s file permissions etc. If you haven’t come across it, on some OSs, there’s a “cron.deny” file for example which blacklists certain users from accessing the “crontab” command. Additionally you also have a multitude of cron directories under the “/etc” directory which need permissions enforced and improved, indeed along with the file “/etc/crontab” itself. Once again check with your OS’s current settings before altering these or “bad things” ™ might happen to your uptime. - -In terms of miscellaneous services being purposefully stopped and certain services, such as system logging which is imperative to a healthy and secure system, have a quick look at the Ansible below which I might put in place for syslog as an example. - -name: Insist syslog is definitely installed (so we can receive upstream logs) - -apt: name=rsyslog state=present - -name: Make sure that syslog starts after a reboot - -service: name=rsyslog state=started enabled=yes - -#### IPtables - -The venerable Netfilter which, from within the Linux kernel offers the IPtables software firewall the ability to filter network packets in an exceptionally sophisticated manner, is a must if you can enable it sensibly. If you’re confident that each of your varying flavours of servers (whether it’s a webserver, database server and so on) can use the same IPtables config then copy a file onto the filesystem via Ansible and make sure it’s always loaded up using this YAML file. - -Next time, we’ll wrap up our look at specific system suggestions and talk a little more about how the playbook might be used. - -Chris Binnie’s latest book, Linux Server Security: Hack and Defend, shows you how to make your servers invisible and perform a variety of attacks. You can find out more about DevSecOps, containers and Linux security on his website: [https://www.devsecops.cc][3] - --------------------------------------------------------------------------------- - -via: https://www.linux.com/blog/linux-server-hardening-using-idempotency-ansible-part-2 - -作者:[Chris Binnie][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://www.linux.com/users/chrisbinnie -[b]: https://github.com/lujun9972 -[1]: https://www.linux.com/sites/lcom/files/styles/rendered_file/public/artificial-intelligence-3382507_1280.jpg?itok=PHazitpd -[2]: /LICENSES/CATEGORY/CREATIVE-COMMONS-ZERO -[3]: https://www.devsecops.cc/ diff --git a/sources/tech/20190416 Linux Server Hardening Using Idempotency with Ansible- Part 3.md b/sources/tech/20190416 Linux Server Hardening Using Idempotency with Ansible- Part 3.md deleted file mode 100644 index 50f4981c08..0000000000 --- a/sources/tech/20190416 Linux Server Hardening Using Idempotency with Ansible- Part 3.md +++ /dev/null @@ -1,118 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Linux Server Hardening Using Idempotency with Ansible: Part 3) -[#]: via: (https://www.linux.com/blog/linux-server-hardening-using-idempotency-ansible-part-3) -[#]: author: (Chris Binnie https://www.linux.com/users/chrisbinnie) - -Linux Server Hardening Using Idempotency with Ansible: Part 3 -====== - -![][1] - -[Creative Commons Zero][2] - -In the previous articles, we introduced idempotency as a way to approach your server’s security posture and looked at some specific Ansible examples, including the kernel, system accounts, and IPtables. In this final article of the series, we’ll look at a few more server-hardening examples and talk a little more about how the idempotency playbook might be used. - -#### **Time** - -Due to its reduced functionality, and therefore attack surface, the preference amongst a number of OSs has been to introduce “chronyd” over “ntpd”. If you’re new to “chrony” then fret not. It’s still using the NTP (Network Time Protocol) that we all know and love but in a more secure fashion. - -The first thing I do with Ansible within the “chrony.conf” file is alter the “bind address” and if my memory serves there’s also a “command port” option. These config options allow Chrony to only listen on the localhost. In other words you are still syncing as usual with other upstream time servers (just as NTP does) but no remote servers can query your time services; only your local machine has access. - -There’s more information on the “bindcmdaddress 127.0.0.1” and “cmdport 0” on this Chrony page () under “2.5. How can I make chronyd more secure?” which you should read for clarity. This premise behind the comment on that page is a good idea: “you can disable the internet command sockets completely by adding cmdport 0 to the configuration file”. - -Additionally I would also focus on securing the file permissions for Chrony and insist that the service starts as expected just like the syslog config above. Otherwise make sure that your time sources are sane, have a degree of redundancy with multiple sources set up and then copy the whole config file over using Ansible. - -#### **Logging** - -You can clearly affect the level of detail included in the logs from a number pieces of software on a server. Thinking back to what we’ve looked at in relation to syslog already you can also tweak that application’s config using Ansible to your needs and then use the example Ansible above in addition. - -#### **PAM** - -Apparently PAM (Pluggable Authentication Modules) has been a part of Linux since 1997. It is undeniably useful (a common use is that you can force SSH to use it for password logins, as per the SSH YAML file above). It is extensible, sophisticated and can perform useful functions such as preventing brute force attacks on password logins using a clever rate limiting system. The syntax varies a little between OSes but if you have the time then getting PAM working well (even if you’re only using SSH keys and not passwords for your logins) is a worthwhile effort. Attackers like their own users on a system with lots of usernames, something innocuous such as “webadmin” or similar might be easy to miss on a server, and PAM can help you out in this respect. - -#### **Auditd** - -We’ve looked at logging a little already but what about capturing every “system call” that a kernel makes. The Linux kernel is a super-busy component of any system and logging almost every single thing that a system does is an excellent way of providing post-event forensics. This article will hopefully shed some light on where to begin: . Note the comments in that article about performance, there’s little point in paying extra for compute and disk IO resource because you’ve misconfigured your logging so spend some time getting it correct would be my advice. - -For concerns over disk space I will usually change a few lines in the file “/etc/audit/auditd.conf” in order to prevent there firstly being too many log files created and secondly logs that grow very large without being rotated. This is also on the proviso that logs are being ingested upstream via another mechanism too. Clearly the files permissions and the service starting are also the basics you need to cover here too. Generally file permissions for auditd are tight as it’s a “root” oriented service so there’s less changes needed here generally. - -#### **Filesystems** - -With a little reading you can discover which filesystems that are made available to your OS by default. You should disable these (at the “modprode.d” file level) with Ansible to prevent weird and wonderful things being attached unwittingly to your servers. You are reducing the attack surface with this approach. The Ansible might look something like this below for example. - -``` -name: Make sure filesystems which are not needed are forced as off - -lineinfile: dest="/etcmodprobe.d/harden.conf" line='install squashfs /bin/true' state=present -``` - -#### **SELinux** - -The old, but sometimes avoided due to complexity, security favourite, SELinux, should be set to “enforcing” mode. Or, at the every least, set to log sensibly using “permissive” mode. Permissive mode will at least fill your auditd logs up with any correct rule matches nicely. In terms of what Ansible looks like it’s simple and is along these lines: - -``` -name: Configure SElinux to be running in permissive mode - -replace: path=”/etc/selinux/config” regexp='SELINUX=disabled' replace='SELINUX=permissive' -``` - -#### **Packages** - -Needless to say the compliance hardening playbook is also a good place to upgrade all the packages (with some selective exclusions) on the system. Pay attention to the section relating to reboots and idempotency in a moment however. With other mechanisms in place you might not want to update packages here but instead as per the Automation Documents article mentioned in a moment. - -### **Idempotency** - -Now we’ve run through some of the aspects you would want to look at when hardening on a server, let’s think a little more about how the playbook might be used. - -When it comes to cloud platforms most of my professional work has been on AWS and therefore, more often than not, a fresh AMI is launched and then a playbook is run over the top of it. There’s a mountain of detail in one way of doing that in this article () which you may be pleased to discover accommodates a mechanism to spawn a script or playbook. - -It is important to note, when it comes to idempotency, that it may take a little more effort initially to get your head around the logic involved in being able to re-run Ansible repeatedly without disturbing the required status quo of your server estate. - -One thing to be absolutely certain of however (barring rare edge cases) is that after you apply your hardening for the very first time, on a new AMI or server build, you will require a reboot. This is an important element due to a number of system facets not being altered correctly without a reboot. These include applying kernel changes so alterations become live, writing auditd rules as immutable config and also starting or stopping services to improve the security posture. - -Note though that you’re probably not going to want to execute all plays in a playbook every twenty or thirty minutes, such as updating all packages and stopping and restarting key customer-facing services. As a result you should factor the logic into your Ansible so that some tasks only run once initially and then maybe write a “completed” placeholder file to the filesystem afterwards for referencing. There’s a million different ways of achieving a status checker. - -The nice thing about Ansible is that the logic for rerunning playbooks is implicit and unlike shell scripts which for this type of task can be arduous to code the logic into. Sometimes, such as updating the GRUB bootloader for example, trying to guess the many permutations of a system change can be painful. - -### **Bedtime Reading** - -I still think that you can’t beat trial and error when it comes to computing. Experience is valued for good reason. - -Be warned that you’ll find contradictory advice sometimes from the vast array of online resources in this area. Advice differs probably because of the different use cases. The only way to harden the varying flavours of OS to my mind is via a bespoke approach. This is thanks to the environments that servers are used within and the requirements of the security framework or standard that an organisation needs to meet. - -For OS hardening details you can check with resources such as the NSA ([https://www.nsa.gov][3]), the Cloud Security Alliance (), proprietary training organisations such as GIAC ([https://www.giac.org][4]) who offer resources (), the diverse CIS Benchmarks ([https://www.cisecurity.org][5]) for industry consensus-based benchmarking, the SANS Institute (), NIST’s Computer Security Research ([https://csrc.nist.gov][6]) and of course print media too. - -### **Conclusion** - -Hopefully, you can see how powerful an idempotent server infrastructure is and are tempted to try it for yourself. - -The ever-present threat of APT (Advanced Persistent Threat) attacks on infrastructure, where a successful attacker will sit silently monitoring events and then when it’s opportune infiltrate deeper into an estate, makes this type of configuration highly valuable. - -The amount of detail that goes into the tests and configuration changes is key to the value that such an approach will bring to an organisation. Like the tests in a CI/CD pipeline they’re only as ever as good as their coverage. - -Chris Binnie’s latest book, Linux Server Security: Hack and Defend, shows you how to make your servers invisible and perform a variety of attacks. You can find out more about DevSecOps, containers and Linux security on his website: [https://www.devsecops.cc][7] - --------------------------------------------------------------------------------- - -via: https://www.linux.com/blog/linux-server-hardening-using-idempotency-ansible-part-3 - -作者:[Chris Binnie][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://www.linux.com/users/chrisbinnie -[b]: https://github.com/lujun9972 -[1]: https://www.linux.com/sites/lcom/files/styles/rendered_file/public/tech-1495181_1280.jpg?itok=5WcwApNN -[2]: /LICENSES/CATEGORY/CREATIVE-COMMONS-ZERO -[3]: https://www.nsa.gov/ -[4]: https://www.giac.org/ -[5]: https://www.cisecurity.org/ -[6]: https://csrc.nist.gov/ -[7]: https://www.devsecops.cc/ diff --git a/sources/tech/20190523 Hardware bootstrapping with Ansible.md b/sources/tech/20190523 Hardware bootstrapping with Ansible.md deleted file mode 100644 index 94842453cc..0000000000 --- a/sources/tech/20190523 Hardware bootstrapping with Ansible.md +++ /dev/null @@ -1,223 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Hardware bootstrapping with Ansible) -[#]: via: (https://opensource.com/article/19/5/hardware-bootstrapping-ansible) -[#]: author: (Mark Phillips https://opensource.com/users/markp/users/feeble/users/markp) - -Hardware bootstrapping with Ansible -====== - -![computer servers processing data][1] - -At a recent [Ansible London Meetup][2], I got chatting with somebody about automated hardware builds. _"It's all cloud now!"_ I hear you say. Ah, but for many large organisations it's not—they still have massive data centres full of hardware. Almost regularly somebody pops up on our internal mail list and asks, *"can Ansible do hardware provisioning?" *Well yes, you can provision hardware with Ansible… - -### Requirements - -Bootstrapping hardware is mostly about network services. Before we do any operating system (OS) installing then, we must set up some services. We will need: - - * DHCP - * PXE - * TFTP - * Operating system media - * Web server - - - -### Setup - -Besides the DHCP configuration, everything else in this article is handled by the Ansible plays included in [this repository][3]. - -#### DHCP server - -I'm writing here on the assumption you can control your DHCP configuration. If you don't have access to your DHCP server, you'll need to ask the owner to set two options. DHCP option 67 needs to be set to **pxelinux.0** and **next-server** (which is option 66—but you may not need to know that; often a DHCP server will have a field/option for 'next server') needs to be set to the IP address of your TFTP server. - -If you can own the DHCP server, I'd suggest using dnsmasq. It's small and simple. I will not cover configuring it here, but look at [the man page][4] and the **\--enable-tftp** option. - -#### TFTP - -The **next-server** setting for our DHCP server, above, will point to a machine serving [TFTP][5]. Here I've used a [CentOS Linux][6] virtual machine, as it only takes one package (syslinux-tftpboot) and a service to start to have TFTP up and running. We'll stick with the default path, **/var/lib/tftpboot**. - -#### PXE - -If you're not already familiar with PXE, you might like to take a quick look at [the Wikipedia page][7]. For this article I'll keep it short—we will serve some files over TFTP, which DHCP guides our hardware to. - -You'll want **images/pxeboot/{initrd.img,vmlinuz}** from the OS distribution media for pxeboot. These need to be copied to **/var/lib/tftpboot/pxeboot**. The referenced Ansible plays **do not do this step, **so you need to copy them over yourself. - -We'll also need to serve the OS installation files. There are two approaches to this: 1) install, via HTTP, from the internet or 2) install, again via HTTP, from a local server. For my testing, since I'm on a private LAN (and I guess you are too), the fastest installation method is the second. The easiest way to prepare this is to mount the DVD image and rsync the `images`, **`Packages` **and `repodata` directories to your webserver location. The referenced Ansible plays will install **httpd** but won't copy over these files, so don't forget to do that after running [the play][8]. For this article, we'll once again stick with defaults for simplicity—so files need to be copied to Apache's standard docroot, **/var/www/html**. - -#### Directories - -We should end up with directory structures like this: - -##### PXE/TFTP - - -``` -[root@c7 ~]# tree /var/lib/tftpboot/pxe{b*,l*cfg} -/var/lib/tftpboot/pxeboot -└── 6 -├── initrd.img -└── vmlinuz -``` - -##### httpd - - -``` -[root@c7 ~]# tree -d /var/www/html/ -/var/www/html/ -├── 6 -> centos/6 -├── 7 -> centos/7 -├── centos -│ ├── 6 -│ │ └── os -│ │ └── x86_64 -│ │ ├── images -│ │ │ └── pxeboot -│ │ ├── Packages -│ │ └── repodata -│ └── 7 -│ └── os -│ └── x86_64 -│ ├── images -│ │ └── pxeboot -│ ├── Packages -│ └── repodata -└── ks -``` - -You'll notice my web setup appears a little less simple than the words above! I've pasted my actual structure to give you some ideas. The hardware I'm using is really old, and even getting CentOS 7 to work was horrible (if you're interested, it's due to the lack of [cciss][9] drivers for the HP Smart Array controller—yes, [there is an answer][10], but it takes a lot of faffing to make work), so all examples are of CentOS 6. I also wanted a flexible setup that could install many versions. Here I've done that using symlinks—this arrangement will work just fine for RHEL too, for example. The basic structure is present though—note the images, Packages and repodata directories. - -These paths relate directly to [the PXE menu][11] file we'll serve up and [the kickstart file][12] too. - -#### If you don't have DHCP - -If you can't manage your own DHCP server or the owners of your infrastructure can't help, there is another option. In the past, I've used [iPXE][13] to create a boot image that I've loaded as virtual media. A lot of out-of-band/lights-out-management (LOM) interfaces on modern hardware support this functionality. You can make a custom embedded PXE menu in seconds with iPXE. I won't cover that here, but if it turns out to be a problem for you, then drop me a line [on Twitter][14] and I'll look at doing a follow-up blog post if enough people request it. - -### Installing hardware - -We've got our structure in place now, and we can [kickstart][15] a server. Before we do, we have to add some configuration to the TFTP setup to enable a given piece of hardware to pick up the PXE boot menu. - -It's here we come across a small chicken/egg problem. We need a host's MAC address to create a link to the specific piece of hardware we want to kickstart. If the hardware is already running and we can access it with Ansible, that's great—we have a way of finding out the boot interface MAC address via the setup module (see [the reinstall play][16]). If it's a new piece of tin, however, we need to get the MAC address and tell our setup what to do with it. This probably means some manual intervention—booting the server and looking at a screen or maybe getting the MAC from a manifest or such like. Whichever way you get hold of it, we can tell our play about it via the inventory. - -Let's put a custom variable into our simple INI format [inventory file][17], but run a play to set up TFTP… - - -``` -(pip)iMac:ansible-hw-bootstrap$ ansible-inventory --host hp.box -{ -"ilo_ip": "192.168.1.68", -"ilo_password": "administrator" -} -(pip)iMac:ansible-hw-bootstrap$ ansible-playbook plays/install.yml - -PLAY [kickstart] ******************************************************************************************************* - -TASK [Host inventory entry has a MAC address] ************************************************************************** -failed: [ks.box] (item=hp.box) => { -"assertion": "hostvars[item]['mac'] is defined", -"changed": false, -"evaluated_to": false, -"item": "hp.box", -"msg": "Assertion failed" -} - -PLAY RECAP ************************************************************************************************************* -ks.box : ok=0 changed=0 unreachable=0 failed=1 -``` - -Uh oh, play failed. It [contains a check][18] that the host we're about to install actually has a MAC address added. Let's fix that and run the play again… - - -``` -(pip)iMac:ansible-hw-bootstrap$ ansible-inventory --host hp.box -{ -"ilo_ip": "192.168.1.68", -"ilo_password": "administrator", -"mac": "00:AA:BB:CC:DD:EE" -} -(pip)iMac:ansible-hw-bootstrap$ ansible-playbook plays/install.yml - -PLAY [kickstart] ******************************************************************************************************* - -TASK [Host inventory entry has a MAC address] ************************************************************************** -ok: [ks.box] => (item=hp.box) => { -"changed": false, -"item": "hp.box", -"msg": "All assertions passed" -} - -TASK [Set PXE menu to install] ***************************************************************************************** -ok: [ks.box] => (item=hp.box) - -TASK [Reboot target host for PXE boot] ********************************************************************************* -skipping: [ks.box] => (item=hp.box) - -PLAY RECAP ************************************************************************************************************* -ks.box : ok=2 changed=0 unreachable=0 failed=0 -``` - -That worked! What did it do? Looking at the pxelinux.cfg directory under our TFTP root, we can see a symlink… - - -``` -[root@c7 pxelinux.cfg]# pwd -/var/lib/tftpboot/pxelinux.cfg -[root@c7 pxelinux.cfg]# l -total 12 -drwxr-xr-x. 2 root root 65 May 13 14:23 ./ -drwxr-xr-x. 4 root root 4096 May 2 22:13 ../ --r--r--r--. 1 root root 515 May 2 12:22 00README -lrwxrwxrwx. 1 root root 7 May 13 14:12 01-00-aa-bb-cc-dd-ee -> install --rw-r--r--. 1 root root 682 May 2 22:07 install -``` - -The **install** file is symlinked to a file named after our MAC address. This is the key, useful piece. It will ensure our hardware with MAC address **00-aa-bb-cc-dd-ee** is served a PXE menu when it boots from its network card. - -So let's boot our machine. - -Usefully, Ansible has some [remote management modules][19]. We're working with an HP server here, so we can use the [hpilo_boot][20] module to save us from having to interact directly with the LOM web interface. - -Let's run the reinstall play on a booted server… - -The neat thing about the **hpilo_boot** module, you'll notice, is it sets the boot medium to be the network. When the installation completes, the server restarts and boots from its hard drive. The eagle-eyed amongst you will have spotted the critical problem with this—what happens if the server boots to its network card again? It will pick up the PXE menu and promptly reinstall itself. I would suggest removing the symlink as a "belt and braces" step then. I will leave that as an exercise for you, dear reader. Hint: I would make the new server do a 'phone home' on boot, to somewhere, which runs a clean-up job. Since you wouldn't need the console open, as I had here to demonstrate what's going on in the background, a 'phone home' job would also give a nice indication that the process completed. Ansible, [naturally][21]. Good luck! - -If you've any thoughts or comments on this process, please let me know. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/19/5/hardware-bootstrapping-ansible - -作者:[Mark Phillips][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/markp/users/feeble/users/markp -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/server_data_system_admin.png?itok=q6HCfNQ8 (computer servers processing data) -[2]: https://www.meetup.com/Ansible-London/ -[3]: https://github.com/phips/ansible-hw-bootstrap -[4]: http://www.thekelleys.org.uk/dnsmasq/docs/dnsmasq-man.html -[5]: https://en.m.wikipedia.org/wiki/Trivial_File_Transfer_Protocol -[6]: https://www.centos.org -[7]: https://en.m.wikipedia.org/wiki/Preboot_Execution_Environment -[8]: https://github.com/phips/ansible-hw-bootstrap/blob/master/plays/kickstart.yml -[9]: https://linux.die.net/man/4/cciss -[10]: https://serverfault.com/questions/611182/centos-7-x64-and-hp-proliant-dl360-g5-scsi-controller-compatibility -[11]: https://github.com/phips/ansible-hw-bootstrap/blob/master/roles/kickstart/templates/pxe_install.j2#L10 -[12]: https://github.com/phips/ansible-hw-bootstrap/blob/master/roles/kickstart/templates/local6.ks.j2#L3 -[13]: https://ipxe.org -[14]: https://twitter.com/thismarkp -[15]: https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/6/html/installation_guide/ch-kickstart2 -[16]: https://github.com/phips/ansible-hw-bootstrap/blob/master/plays/reinstall.yml -[17]: https://docs.ansible.com/ansible/latest/user_guide/intro_inventory.html -[18]: https://github.com/phips/ansible-hw-bootstrap/blob/master/plays/install.yml#L9 -[19]: https://docs.ansible.com/ansible/latest/modules/list_of_remote_management_modules.html -[20]: https://docs.ansible.com/ansible/latest/modules/hpilo_boot_module.html#hpilo-boot-module -[21]: https://github.com/phips/ansible-demos/tree/master/roles/phone_home diff --git a/sources/tech/20190612 The bits and bytes of PKI.md b/sources/tech/20190612 The bits and bytes of PKI.md deleted file mode 100644 index 3cf9bd9c41..0000000000 --- a/sources/tech/20190612 The bits and bytes of PKI.md +++ /dev/null @@ -1,284 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (The bits and bytes of PKI) -[#]: via: (https://opensource.com/article/19/6/bits-and-bytes-pki) -[#]: author: (Alex Wood https://opensource.com/users/awood) - -The bits and bytes of PKI -====== -Take a look under the public key infrastructure's hood to get a better -understanding of its format. -![Computer keyboard typing][1] - -In two previous articles— _[An introduction to cryptography and public key infrastructure][2]_ and _[How do private keys work in PKI and cryptography?][3]_ —I discussed cryptography and public key infrastructure (PKI) in a general way. I talked about how digital bundles called _certificates_ store public keys and identifying information. These bundles contain a lot of complexity, and it's useful to have a basic understanding of the format for when you need to look under the hood. - -### Abstract art - -Keys, certificate signing requests, certificates, and other PKI artifacts define themselves in a data description language called [Abstract Syntax Notation One][4] (ASN.1). ASN.1 defines a series of simple data types (integers, strings, dates, etc.) along with some structured types (sequences, sets). By using those types as building blocks, we can create surprisingly complex data formats. - -ASN.1 contains plenty of pitfalls for the unwary, however. For example, it has two different ways of representing dates: GeneralizedTime ([ISO 8601][5] format) and UTCTime (which uses a two-digit year). Strings introduce even more confusion. We have IA5String for ASCII strings and UTF8String for Unicode strings. ASN.1 also defines several other string types, from the exotic [T61String][6] and [TeletexString][7] to the more innocuous sounding—but probably not what you wanted—PrintableString (only a small subset of ASCII) and UniversalString (encoded in [UTF-32][8]). If you're writing or reading ASN.1 data, I recommend referencing the [specification][9]. - -ASN.1 has another data type worth special mention: the object identifier (OID). OIDs are a series of integers. Commonly they are shown with periods delimiting them. Each integer represents a node in what is basically a "tree of things." For example, [1.3.6.1.4.1.2312][10] is the OID for my employer, Red Hat, where "1" is the node for the International Organization for Standardization (ISO), "3" is for ISO-identified organizations, "6" is for the US Department of Defense (which, for historical reasons, is the parent to the next node), "1" is for the internet, "4" is for private organizations, "1" is for enterprises, and finally "2312," which is Red Hat's own. - -More commonly, OIDs are regularly used to identify specific algorithms in PKI objects. If you have a digital signature, it's not much use if you don't know what type of signature it is. The signature algorithm "sha256WithRSAEncryption" has the OID "1.2.840.113549.1.1.11," for example. - -### ASN.1 at work - -Suppose we own a factory that produces flying brooms, and we need to store some data about every broom. Our brooms have a model name, a serial number, and a series of inspections that have been made to ensure flight-worthiness. We could store this information using ASN.1 like so: - - -``` -BroomInfo ::= SEQUENCE { -model UTF8String, -serialNumber INTEGER, -inspections SEQUENCE OF InspectionInfo -} - -InspectionInfo ::= SEQUENCE { -inspectorName UTF8String, -inspectionDate GeneralizedTime -} -``` - -The example above defines the model name as a UTF8-encoded string, the serial number as an integer, and our inspections as a series of InspectionInfo items. Then we see that each InspectionInfo item comprises two pieces of data: the inspector's name and the time of the inspection. - -An actual instance of BroomInfo data would look something like this in ASN.1's value assignment syntax: - - -``` -broom BroomInfo ::= { -model "Nimbus 2000", -serialNumber 1066, -inspections { -{ -inspectorName "Harry", -inspectionDate "201901011200Z" -} -{ -inspectorName "Hagrid", -inspectionDate "201902011200Z" -} -} -} -``` - -Don't worry too much about the particulars of the syntax; for the average developer, having a basic grasp of how the pieces fit together is sufficient. - -Now let's look at a real example from [RFC 8017][11] that I have abbreviated somewhat for clarity: - - -``` -RSAPrivateKey ::= SEQUENCE { -version Version, -modulus INTEGER, -- n -publicExponent INTEGER, -- e -privateExponent INTEGER, -- d -prime1 INTEGER, -- p -prime2 INTEGER, -- q -exponent1 INTEGER, -- d mod (p-1) -exponent2 INTEGER, -- d mod (q-1) -coefficient INTEGER, -- (inverse of q) mod p -otherPrimeInfos OtherPrimeInfos OPTIONAL -} - -Version ::= INTEGER { two-prime(0), multi(1) } -(CONSTRAINED BY -{-- version must be multi if otherPrimeInfos present --}) - -OtherPrimeInfos ::= SEQUENCE SIZE(1..MAX) OF OtherPrimeInfo - -OtherPrimeInfo ::= SEQUENCE { -prime INTEGER, -- ri -exponent INTEGER, -- di -coefficient INTEGER -- ti -} -``` - -The ASN.1 above defines the PKCS #1 format used to store RSA keys. Looking at this, we can see the RSAPrivateKey sequence starts with a version type (either 0 or 1) followed by a bunch of integers and then an optional type called OtherPrimeInfos. The OtherPrimeInfos sequence contains one or more pieces of OtherPrimeInfo. And each OtherPrimeInfo is just a sequence of integers. - -Let's look at an actual instance by asking OpenSSL to generate an RSA key and then pipe it into [asn1parse][12], which will print it out in a more human-friendly format. (By the way, the **genrsa** command I'm using here has been superseded by **genpkey** ; we'll see why a little later.) - - -``` -% openssl genrsa 4096 2> /dev/null | openssl asn1parse -0:d=0 hl=4 l=2344 cons: SEQUENCE -4:d=1 hl=2 l= 1 prim: INTEGER :00 -7:d=1 hl=4 l= 513 prim: INTEGER :B80B0C2443... -524:d=1 hl=2 l= 3 prim: INTEGER :010001 -529:d=1 hl=4 l= 512 prim: INTEGER :59C609C626... -1045:d=1 hl=4 l= 257 prim: INTEGER :E8FC43002D... -1306:d=1 hl=4 l= 257 prim: INTEGER :CA39222DD2... -1567:d=1 hl=4 l= 256 prim: INTEGER :25F6CD181F... -1827:d=1 hl=4 l= 256 prim: INTEGER :38CCE374CB... -2087:d=1 hl=4 l= 257 prim: INTEGER :C80430E810... -``` - -Recall that RSA uses a modulus, _n_ ; a public exponent, _e_ ; and a private exponent, _d_. Now let's look at the sequence. First, we see the version set to 0 for a two-prime RSA key (what **genrsa** generates), an integer for the modulus, _n_ , and then 0x010001 for the public exponent, _e_. If we convert to decimal, we'll see our public exponent is 65537, a number [commonly][13] used as an RSA public exponent. Following the public exponent, we see the integer for the private exponent, _e_ , and then some other integers that are used to speed up decryption and signing. Explaining how this optimization works is beyond the scope of this article, but if you like math, there's a [good video on the subject][14]. - -What about that other stuff on the left side of the output? What does "h=4" and "l=513" mean? We'll cover that shortly. - -### DERangement - -We've seen the "abstract" part of Abstract Syntax Notation One, but how does this data get encoded and stored? For that, we turn to a binary format called Distinguished Encoding Rules (DER) defined in the [X.690][15] specification. DER is a stricter version of its parent, Basic Encoding Rules (BER), in that for any given data, there is only one way to encode it. If we're going to be digitally signing data, it makes things a lot easier if there is only one possible encoding that needs to be signed instead of dozens of functionally equivalent representations. - -DER uses a [tag-length-value][16] (TLV) structure. The encoding of a piece of data begins with an identifier octet defining the data's type. ("Octet" is used rather than "byte" since the standard is very old and some early architectures didn't use 8 bits for a byte.) Next are the octets that encode the length of the data, and finally, there is the data. The data can be another TLV series. The left side of the **asn1parse** output makes a little more sense now. The first number indicates the absolute offset from the beginning. The "d=" tells us the depth of that item in the structure. The first line is a sequence, which we descend into on the next line (the depth _d_ goes from 0 to 1) whereupon **asn1parse** begins enumerating all the elements in that sequence. The "hl=" is the header length (the sum of the identifier and length octets), and the "l=" tells us the length of that particular piece of data. - -How is header length determined? It's the sum of the identifier byte and the bytes encoding the length. In our example, the top sequence is 2344 octets long. If it were less than 128 octets, the length would be encoded in a single octet in the "short form": bit 8 would be a zero and bits 7 to 1 would hold the length value ( **2 7-1=127**). A value of 2344 needs more space, so the "long" form is used. The first octet has bit 8 set to one, and bits 7 to 1 contain the length of the length. In our case, a value of 2344 can be encoded in two octets (0x0928). Combined with the first "length of the length" octet, we have three octets total. Add the one identifier octet, and that gives us our total header length of four. - -As a side exercise, let's consider the largest value we could possibly encode. We've seen that we have up to 127 octets to encode a length. At 8 bits per octet, we have a total of 1008 bits to use, so we can hold a number equal to **2 1008-1**. That would equate to a content length of **2.743062*10 279** yottabytes, staggeringly more than the estimated **10 80** atoms in the observable universe. If you're interested in all the details, I recommend reading "[A Layman's Guide to a Subset of ASN.1, BER, and DER][17]." - -What about "cons" and "prim"? Those indicate whether the value is encoded with "constructed" or "primitive" encoding. Primitive encoding is used for simple types like "INTEGER" or "BOOLEAN," while constructed encoding is used for structured types like "SEQUENCE" or "SET." The actual difference between the two encoding methods is whether bit 6 in the identifier octet is a zero or one. If it's a one, the parser knows that the content octets are also DER-encoded and it can descend. - -### PEM pals - -While useful in a lot of cases, a binary format won't pass muster if we need to display the data as text. Before the [MIME][18] standard existed, attachment support was spotty. Commonly, if you wanted to attach data, you put it in the body of the email, and since SMTP only supported ASCII, that meant converting your binary data (like the DER of your public key, for example) into ASCII characters. - -Thus, the PEM format emerged. PEM stands for "Privacy-Enhanced Email" and was an early standard for transmitting and storing PKI data. The standard never caught on, but the format it defined for storage did. PEM-encoded objects are just DER objects that are [base64][19]-encoded and wrapped at 64 characters per line. To describe the type of object, a header and footer surround the base64 string. You'll see **\-----BEGIN CERTIFICATE-----** or **\-----BEGIN PRIVATE KEY-----** , for example. - -Often you'll see files with the ".pem" extension. I don't find this suffix useful. The file could contain a certificate, a key, a certificate signing request, or several other possibilities. Imagine going to a sushi restaurant and seeing a menu that described every item as "fish and rice"! Instead, I prefer more informative extensions like ".crt", ".key", and ".csr". - -### The PKCS zoo - -Earlier, I showed an example of a PKCS #1-formatted RSA key. As you might expect, formats for storing certificates and signing requests also exist in various IETF RFCs. For example, PKCS #8 can be used to store private keys for many different algorithms (including RSA!). Here's some of the ASN.1 from [RFC 5208][20] for PKCS #8. (RFC 5208 has been obsoleted by RFC 5958, but I feel that the ASN.1 in RFC 5208 is easier to understand.) - - -``` -PrivateKeyInfo ::= SEQUENCE { -version Version, -privateKeyAlgorithm PrivateKeyAlgorithmIdentifier, -privateKey PrivateKey, -attributes [0] IMPLICIT Attributes OPTIONAL } - -Version ::= INTEGER - -PrivateKeyAlgorithmIdentifier ::= AlgorithmIdentifier - -PrivateKey ::= OCTET STRING - -Attributes ::= SET OF Attribute -``` - -If you store your RSA private key in a PKCS #8, the PrivateKey element will actually be a DER-encoded PKCS #1! Let's prove it. Remember earlier when I used **genrsa** to generate a PKCS #1? OpenSSL can generate a PKCS #8 with the **genpkey** command, and you can specify RSA as the algorithm to use. - - -``` -% openssl genpkey -algorithm RSA | openssl asn1parse -0:d=0 hl=4 l= 629 cons: SEQUENCE -4:d=1 hl=2 l= 1 prim: INTEGER :00 -7:d=1 hl=2 l= 13 cons: SEQUENCE -9:d=2 hl=2 l= 9 prim: OBJECT :rsaEncryption -20:d=2 hl=2 l= 0 prim: NULL -22:d=1 hl=4 l= 607 prim: OCTET STRING [HEX DUMP]:3082025B... -``` - -You may have spotted the "OBJECT" in the output and guessed that was related to OIDs. You'd be correct. The OID "1.2.840.113549.1.1.1" is assigned to RSA encryption. OpenSSL has a built-in list of common OIDs and translates them into a human-readable form for you. - - -``` -% openssl genpkey -algorithm RSA | openssl asn1parse -strparse 22 -0:d=0 hl=4 l= 604 cons: SEQUENCE -4:d=1 hl=2 l= 1 prim: INTEGER :00 -7:d=1 hl=3 l= 129 prim: INTEGER :CA6720E706... -139:d=1 hl=2 l= 3 prim: INTEGER :010001 -144:d=1 hl=3 l= 128 prim: INTEGER :05D0BEBE44... -275:d=1 hl=2 l= 65 prim: INTEGER :F215DC6B77... -342:d=1 hl=2 l= 65 prim: INTEGER :D6095CED7E... -409:d=1 hl=2 l= 64 prim: INTEGER :402C7562F3... -475:d=1 hl=2 l= 64 prim: INTEGER :06D0097B2D... -541:d=1 hl=2 l= 65 prim: INTEGER :AB266E8E51... -``` - -In the second command, I've told **asn1parse** via the **-strparse** argument to move to octet 22 and begin parsing the content's octets there as an ASN.1 object. We can clearly see that the PKCS #8's PrivateKey looks just like the PKCS #1 that we examined earlier. - -You should favor using the **genpkey** command. PKCS #8 has some features that PKCS #1 does not: PKCS #8 can store private keys for multiple different algorithms (PKCS #1 is RSA-specific), and it provides a mechanism to encrypt the private key using a passphrase and a symmetric cipher. - -Encrypted PKCS #8 objects use a different ASN.1 syntax that I'm not going to dive into, but let's take a look at an actual example and see if anything stands out. Encrypting a private key with **genpkey** requires that you specify the symmetric encryption algorithm to use. I'll use AES-256-CBC for this example and a password of "hello" (the "pass:" prefix is the way of telling OpenSSL that the password is coming in from the command line). - - -``` -% openssl genpkey -algorithm RSA -aes-256-cbc -pass pass:hello | openssl asn1parse -0:d=0 hl=4 l= 733 cons: SEQUENCE -4:d=1 hl=2 l= 87 cons: SEQUENCE -6:d=2 hl=2 l= 9 prim: OBJECT :PBES2 -17:d=2 hl=2 l= 74 cons: SEQUENCE -19:d=3 hl=2 l= 41 cons: SEQUENCE -21:d=4 hl=2 l= 9 prim: OBJECT :PBKDF2 -32:d=4 hl=2 l= 28 cons: SEQUENCE -34:d=5 hl=2 l= 8 prim: OCTET STRING [HEX DUMP]:17E6FE554E85810A -44:d=5 hl=2 l= 2 prim: INTEGER :0800 -48:d=5 hl=2 l= 12 cons: SEQUENCE -50:d=6 hl=2 l= 8 prim: OBJECT :hmacWithSHA256 -60:d=6 hl=2 l= 0 prim: NULL -62:d=3 hl=2 l= 29 cons: SEQUENCE -64:d=4 hl=2 l= 9 prim: OBJECT :aes-256-cbc -75:d=4 hl=2 l= 16 prim: OCTET STRING [HEX DUMP]:91E9536C39... -93:d=1 hl=4 l= 640 prim: OCTET STRING [HEX DUMP]:98007B264F... - -% openssl genpkey -algorithm RSA -aes-256-cbc -pass pass:hello | head -n 1 -\-----BEGIN ENCRYPTED PRIVATE KEY----- -``` - -There are a couple of interesting items here. We see our encryption algorithm is recorded with an OID starting at octet 64. There's an OID for "PBES2" (Password-Based Encryption Scheme 2), which defines a standard process for encryption and decryption, and an OID for "PBKDF2" (Password-Based Key Derivation Function 2), which defines a standard process for creating encryption keys from passwords. Helpfully, OpenSSL uses the header "ENCRYPTED PRIVATE KEY" in the PEM output. - -OpenSSL will let you encrypt a PKCS #1, but it's done in a non-standard way via a series of headers inserted into the PEM: - - -``` -% openssl genrsa -aes256 -passout pass:hello 4096 -\-----BEGIN RSA PRIVATE KEY----- -Proc-Type: 4,ENCRYPTED -DEK-Info: AES-256-CBC,5B2C64DC05B7C0471A278C76562FD776 -... -``` - -### In conclusion - -There's a final PKCS format you need to know about: [PKCS #12][21]. The PKCS #12 format allows for storing multiple objects all in one file. If you have a certificate and its corresponding key or a chain of certificates, you can store them together in one PKCS #12 file. Individual entries in the file can be protected with password-based encryption. - -Beyond the PKCS formats, there are other storage methods such as the Java-specific JKS format and the NSS library from Mozilla, which uses file-based databases (SQLite or Berkeley DB, depending on the version). Luckily, the PKCS formats are a lingua franca that can serve as a start or reference if you need to deal with other formats. - -If this all seems confusing, that's because it is. Unfortunately, the PKI ecosystem has a lot of sharp edges between tools that generate enigmatic error messages (looking at you, OpenSSL) and standards that have grown and evolved over the past 35 years. Having a basic understanding of how PKI objects are stored is critical if you're doing any application development that will be accessed over SSL/TLS. - -I hope this article has shed a little light on the subject and might save you from spending fruitless hours in the PKI wilderness. - -* * * - -_The author would like to thank Hubert Kario for providing a technical review._ - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/19/6/bits-and-bytes-pki - -作者:[Alex Wood][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/awood -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/keyboaord_enter_writing_documentation.jpg?itok=kKrnXc5h (Computer keyboard typing) -[2]: https://opensource.com/article/18/5/cryptography-pki -[3]: https://opensource.com/article/18/7/private-keys -[4]: https://en.wikipedia.org/wiki/Abstract_Syntax_Notation_One -[5]: https://en.wikipedia.org/wiki/ISO_8601 -[6]: https://en.wikipedia.org/wiki/ITU_T.61 -[7]: https://en.wikipedia.org/wiki/Teletex -[8]: https://en.wikipedia.org/wiki/UTF-32 -[9]: https://www.itu.int/itu-t/recommendations/rec.aspx?rec=X.680 -[10]: https://www.alvestrand.no/objectid/1.3.6.1.4.1.2312.html -[11]: https://tools.ietf.org/html/rfc8017 -[12]: https://linux.die.net/man/1/asn1parse -[13]: https://www.johndcook.com/blog/2018/12/12/rsa-exponent/ -[14]: https://www.youtube.com/watch?v=NcPdiPrY_g8 -[15]: https://en.wikipedia.org/wiki/X.690 -[16]: https://en.wikipedia.org/wiki/Type-length-value -[17]: http://luca.ntop.org/Teaching/Appunti/asn1.html -[18]: https://www.theguardian.com/technology/2012/mar/26/ather-of-the-email-attachment -[19]: https://en.wikipedia.org/wiki/Base64 -[20]: https://tools.ietf.org/html/rfc5208 -[21]: https://tools.ietf.org/html/rfc7292 diff --git a/sources/tech/20190624 Linux Package Managers Compared - AppImage vs Snap vs Flatpak.md b/sources/tech/20190624 Linux Package Managers Compared - AppImage vs Snap vs Flatpak.md deleted file mode 100644 index df5686d0a5..0000000000 --- a/sources/tech/20190624 Linux Package Managers Compared - AppImage vs Snap vs Flatpak.md +++ /dev/null @@ -1,222 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Linux Package Managers Compared – AppImage vs Snap vs Flatpak) -[#]: via: (https://www.ostechnix.com/linux-package-managers-compared-appimage-vs-snap-vs-flatpak/) -[#]: author: (editor https://www.ostechnix.com/author/editor/) - -Linux Package Managers Compared – AppImage vs Snap vs Flatpak -====== - -![3 Linux Package Managers Compared][1] - -**Package managers** provide a way of packaging, distributing, installing, and maintaining apps in an operating system. With modern desktop, server and IoT applications of the Linux operating system and the hundreds of different distros that exist, it becomes necessary to move away from platform specific packaging methods to platform agnostic ones. This post explores 3 such tools, namely **AppImage** , **Snap** and **Flatpak** , that each aim to be the future of software deployment and management in Linux. At the end we summarize a few key findings. - -### 1\. AppImage - -**AppImage** follows a concept called **“One app = one file”**. This is to be understood as an AppImage being a regular independent “file” containing one application with everything it needs to run in the said file. Once made executable, the AppImage can be run like any application in a computer by simply double-clicking it in the users file system.[1] - -It is a format for creating portable software for Linux without requiring the user to install the said application. The format allows the original developers of the software (upstream developers) to create a platform and distribution independent (also called a distribution-agnostic binary) version of their application that will basically run on any flavor of Linux. - -AppImage has been around for a long time. **Klik** , a predecessor of AppImage was created by **Simon Peter** in 2004. The project was shut down in 2011 after not having passed the beta stage. A project named **PortableLinuxApps** was created by Simon around the same time and the format was picked up by a few portals offering software for Linux users. The project was renamed again in 2013 to its current name AppImage and a repository has been maintained in GitHub (project [link][2]) with all the latest changes to the same since 2018.[2][3] - -Written primarily in **C** and donning the **MIT license** since 2013, AppImage is currently developed by **The AppImage project**. It is a very convenient way to use applications as demonstrated by the following features: - - 1. AppImages can run on virtually any Linux system. As mentioned before applications derive a lot of functionality from the operating system and a few common libraries. This is a common practice in the software world since if something is already done, there is no point in doing it again if you can pick and choose which parts from the same to use. The problem is that many Linux distros might not have all the files a particular application requires to run since it is left to the developers of that particular distro to include the necessary packages. Hence developers need to separately include the dependencies of the application for each Linux distro they are publishing their app for. Using the AppImage format developers can choose to include all the libraries and files that they cannot possibly hope the target operating system to have as part of the AppImage file. Hence the same AppImage format file can work on different operating systems and machines without needing granular control. - 2. The one app one file philosophy means that user experience is simple and elegant in that users need only download and execute one file that will serve their needs for using the application. - 3. **No requirement of root access**. System administrators will require people to have root access to stop them from messing with computers and their default setup. This also means that people with no root access or super user privileges cannot install the apps they need as they please. The practice is common in a public setting (such as library or university computers or on enterprise systems). The AppImage file does not require users to “install” anything and hence users need only download the said file and **make it executable** to start using it. This removes the access dilemmas that system administrators have and makes their job easier without sacrificing user experience. - 4. **No effect on core operating system**. The AppImage-application format allows using applications with their full functionality without needing to change or even access most system files. Meaning whatever the applications do, the core operating system setup and files remain untouched. - 5. An AppImage can be made by a developer for a particular version of their application. Any updated version is made as a different AppImage. Hence users if need be can **test multiple versions of the same application** by running different instances using different AppImages. This is an invaluable feature when you need to test your applications from an end-user POV to notice differences. - 6. Take your applications where you go. As mentioned previously AppImages are archived files of all the files that an application requires and can be used without installing or even bothering about the distribution the system uses. Hence if you have a set of apps that you use regularly you may even mount a few AppImage files on a thumb drive and take it with you to use on multiple computers running multiple different distros without worrying whether they’ll work or not. - - - -Furthermore, the **AppImageKit** allows users from all backgrounds to build their own AppImages from applications they already have or for applications that are not provided an AppImage by their upstream developer. - -The package manager is platform independent but focuses primarily on software distribution to end users on their desktops with a dedicated daemon **AppImaged** for integrating the AppImage formats into respective desktop environments. AppImage is supported natively now by a variety of distros such as Ubuntu, Debian, openSUSE, CentOS, Fedora etc. and others may set it up as per their needs. AppImages can also be run on servers with limited functionality via the CLI tools included. - -To know more about AppImages, go to the official [**AppImage documentation**][3] page. - -* * * - -**Suggested read:** - - * [**Search Linux Applications On AppImage, Flathub And Snapcraft Platforms**][4] - - - -* * * - -### 2\. Snappy - -**Snappy** is a software deployment and package management system like AppImage or any other package manager for that instance. It is originally designed for the now defunct **Ubuntu Touch** Operating system. Snappy lets developers create software packages for use in a variety of Linux based distributions. The initial intention behind creating Snappy and deploying **“snaps”** on Ubuntu based systems is to obtain a unified single format that could be used in everything from IoT devices to full-fledged computer systems that ran some version of Ubuntu and in a larger sense Linux itself.[4] - -The lead developer behind the project is **Canonical** , the same company that pilots the Ubuntu project. Ubuntu had native snap support from version 16.04 LTS with more and more distros supporting it out of the box or via a simple setup these days. If you use Arch or Debian or openSUSE you’ll find it easy to install support for the package manager using simple commands in the terminal as explained later in this section. This is also made possible by making the necessary snap platform files available on the respective repos.[5] - -Snappy has the following important components that make up the entire package manager system.[6] - - * **Snap** – is the file format of the packages themselves. Individual applications that are deployed using Snappy are called “Snaps”. Any application may be packaged using the tools provided to make a snap that is intended to run on a different system running Linux. Snap, similar to AppImage is an all-inclusive file and contains all dependencies the application needs to run without assuming them to part of the target system. - * **Snapcraft** – is the tool that lets developers make snaps of their applications. It is basically a command that is part of the snap system as well as a framework that will let you build your own snaps. - * **Snapd** – is the background daemon that maintains all the snaps that are installed in your system. It integrates into the desktop environment and manages all the files and processes related to working with snaps. The snapd daemon also checks for updates normally **4 times a day** unless set otherwise. - * [**Snap Store**][5] – is an online gallery of sorts that lets developers upload their snaps into the repository. Snap store is also an application discovery medium for users and will let users see and experience the application library before downloading and installing them. - - - -The snapd component is written primarily in **C** and **Golang** whereas the Snapcraft framework is built using **Python**. Although both the modules use the GPLv3 license it is to be noted that snapd has proprietary code from Canonical for its server-side operations with just the client side being published under the GPL license. This is a major point of contention with developers since this involves developers signing a CLA form to participate in snap development.[7] - -Going deeper into the finer details of the Snappy package manager the following may be noted: - - 1. Snaps as noted before are all inclusive and contain all the necessary files (dependencies) that the application needs to run. Hence, developers need not to make different snaps for the different distros that they target. Being mindful of the runtimes is all that’s necessary if base runtimes are excluded from the snap. - 2. Snappy packages are meant to support transactional updates. Such a transactional update is atomic and fully reversible, meaning you can use the application while its being updated and that if an update does not behave the way its supposed to, you can reverse the same with no other effects whatsoever. The concept is also called as **delta programming** in which only changes to the application are transmitted as an update instead of the whole package. An Ubuntu derivative called **Ubuntu Core** actually promises the snappy update protocol to the OS itself.[8] - 3. A key point of difference between snaps and AppImages, is how they handle version differences. Using AppImages different versions of the application will have different AppImages allowing you to concurrently use 2 or more different versions of the same application at the same time. However, using snaps means conforming to the transactional or delta update system. While this means faster updates, it keeps you from running two instances of the same application at the same time. If you need to use the old version of an app you’ll need to reverse or uninstall the new version. Snappy does support a feature called [**“parallel install”**][6] which will let users accomplish similar goals, however, it is still in an experimental stage and cannot be considered to be a stable implementation. Snappy also makes use of channels meaning you can use the beta or the nightly build of an app and the stable version at the same time.[9] - 4. Extensive support from major Linux distros and major developers including Google, Mozilla, Microsoft, etc.[4] - 5. Snapd the desktop integration tool supports taking **“snapshots”** of the current state of all the installed snaps in the system. This will let users save the current configuration state of all the applications that are installed via the Snappy package manager and let users revert to that state whenever they desire so. The same feature can also be set to automatically take snapshots at a frequency deemed necessary by the user. Snapshots can be created using the **snap save command** in the snapd framework.[10] - 6. Snaps are designed to be sandboxed during operation. This provides a much-required layer of security and isolation to users. Users need not worry about snap-based applications messing with the rest of the software on their computer. Sandboxing is implemented using three levels of isolation viz, **classic** , **strict** and **devmode**. Each level of isolation allows the app different levels of access within the file system and computer.[11] - - - -On the flip side of things, snaps are widely criticized for being centered around **Canonical’s modus operandi**. Most of the commits to the project are by Canonical employees or contractors and other contributors are required to sign a release form (CLA). The sandboxing feature, a very important one indeed from a security standpoint, is flawed in that the sandboxing actually requires certain other core services to run (such as Mir) while applications running the X11 desktop won’t support the said isolation, hence making the said security feature irrelevant. Questionable press releases and other marketing efforts from Canonical and the “central” and closed app repository are also widely criticized aspects of Snappy. Furthermore, the file sizes of the different snaps are also **comparatively very large** compared to the app sizes of the packages made using AppImage.[7] - -For more details, check [**Snap official documentation**][7]. - -* * * - -**Related read:** - - * [**Install Snap packages in Arch Linux, and Fedora**][8] - - - -* * * - -### 3\. Flatpak - -Like the Snap/Snappy listed above, **Flatpak** is also a software deployment tool that aims to ease software distribution and use in Linux. Flatpak was previously known as **“xdg-app”** and was based on concept proposed by **Lennart Poettering** in 2004. The idea was to contain applications in a secure virtual sandbox allowing for using applications **without the need of root privileges** and without compromising on the systems security. **Alex** started tinkering with Klik (thought to be a former version of AppImage) and wanted to implement the concept better. **Alexander Larsson** who at the time was working with Red Hat wrote an implementation called xdg-app in 2015 that acted as a pre-cursor to the current Flatpak format. - -Flatpak officially came out in 2016 with backing from Red Hat, Endless Computers and Collabora. **Flathub** is the official repository of all Flatpak application packages. At its surface Flatpak like the other is a framework for building and packaging distribution agnostic applications for Linux. It simply requires the developers to conform to a few desktop environment guidelines in order for the application to be successfully integrated into the Flatpak environment. - -Targeted primarily at the three popular desktop implementations **FreeDesktop** , **KDE** , and **GNOME** , the Flatpak framework itself is written in **C** and works on a **LGPL** license. The maintenance repository can be accessed via the GitHub link **[here][9]**. - -A few features of Flatpak that make it stand apart are mentioned below. Notice that features Flatpak shares with AppImage and Snappy are omitted here. - - * Deep integration into popular Linux desktop environments such as GNOME & KDE so that users can simply use Flatpaks using Graphical software management tools instead of resorting to the terminal. Flatpak can be installed from the default repositories of major desktop environments now and once the apps themselves are set-up they can be used and provide features similar to normal desktop applications.[12][13] - * **Forward-compatibility** – Flatpaks are built from the ground up keeping the operating systems core kernel and runtimes in mind. Hence, even if you upgrade or update your distro the Flatpaks you have should still work unless there is a core update. This is especially crucial for people who prefer staying on rolling betas or development versions of their distros. For such people, since the kinks of the OS itself isn’t ironed out usually, the Flatpak application will run seamlessly without having to depend on the OS files or libraries for its operation.[13] - * **Sandboxing using Bubblewrap** – snaps are also by default sandboxed in that they run in isolation from the rest of the applications running while you’re using your computer. However, Flatpaks fully seal the application from accessing OS files and user files during its operation by default. This essentially means that system administrators can be certain that Flatpaks that are installed in their systems cannot exploit the computer and the files it contains whereas for end users this will mean that in order to access a few specific functions or user data root permission is required.[14] - * Flatpak supports decentralized distribution of application natively however the team behind Flatpak still maintains a central online repository of apps/Flatpaks called **Flathub**. Users may in fact configure Flatpak to use multiple remote repositories as they see necessary. As opposed to snap you can have multiple repositories.[13] - * Modular access through the sandbox. Although this capability comes at a great potential cost to the integrity of the system, Flatpak framework allows for channels to be created through the sandbox for exchange of specific information from within the sandbox to the host system or vice versa. The channel is in this case referred to as a portal. A con to this feature is discussed later in the section.[14] - - - -One of the most criticized aspects of Flatpak however is it’s the sandbox feature itself. Sandboxing is how package managers such as Snappy and Flatpak implement important security features. Sandboxing essentially isolates the application from everything else in the system only allowing for user defined exchange of information from within the sandbox to outside. The flaw with the concept being that the sandbox cannot be inherently impregnable. Data has to be eventually transferred between the two domains and simple Linux commands can simply get rid of the sandbox restriction meaning that malicious applications might potentially jump out of the said sandbox.[15] - -This combined with the worse than expected commitment to rolling out security updates for Flatpak has resulted in widespread criticism of the team’s tall claim of providing a secure framework. The blog (named **flatkill** ) linked at the end of this guide in fact mentions a couple of exploits that were not addressed by the Flatpak team as soon as they should’ve been.[15] - -For more details, I suggest you to read [**Flatpak official documentation**][10]. - -* * * - -**Related read:** - - * [**A Beginners Guide To Flatpak**][11] - - - -* * * - -### AppImage vs Snap vs Flatpak - -The table attached below summarizes all the above findings into a concise and technical comparison of the three frameworks. - -**Feature** | **AppImage** | **Snappy** | **Flatpak** ----|---|---|--- -**Unique feature** | Not an appstore or repository, its simply put a packaging format for software distribution. | Led by Canonical (Same company as Ubuntu), features central app repository and active contribution from Canonical. | Features an app store called FlatHub, however, individuals may still host packages and distribute it. -**Target system** | Desktops and Servers. | Desktops, Servers, IoT devices, Embedded devices etc. | Desktops and limited function on servers. -**Libraries/Dependencies** | Base system. Runtimes optional, Libraries and other dependencies packaged. | Base system or via Plugins or can be packaged. | GNOME, KDE, Freedesktop bundled or custom bundled. -**Developers** | Community Driven led by Simon Peter. | Corporate driven by Canonical Ltd. | Community driven by flatpak team supported by enterprise. -**Written in** | C. | Golang, C and Python. | C. -**Initial release** | 2004. | 2014. | 2015. -**Sandboxing** | Can be implemented. | 3 modes – strict, classic, and devmode with varying confinement capabilities. Runs in isolation. | Isolated but Uses system files to run applications by default. -**Sandboxing Platform** | Firejail, AppArmor, Bubblewrap. | AppArmor. | Bubblewrap. -**App Installation** | Not necessary. Will act as self mounted disc. | Installation using snapd. | Installed using flatpak client tools. -**App Execution** | Can be run after setting executing bit. | Using desktop integrated snap tools. Runs isolated with user defined resources. | Needs to be executed using flatpak command if CLI is used. -**User Privileges** | Can be run w/o root user access. | Can be run w/o root user access. | Selectively required. -**Hosting Applications** | Can be hosted anywhere by anybody. | Has to be hosted with Canonical servers which are proprietary. | Can be hosted anywhere by anybody. -**Portable Execution from non system locations** | Yes. | No. | Yes, after flatpak client is configured. -**Central Repository** | AppImageHub. | Snap Store. | Flathub. -**Running multiple versions of the app** | Possible, any number of versions simultaneously. | One version of the app in one channel. Has to be separately configured for more. | Yes. -**Updating applications** | Using CLI command AppImageUpdate or via an updater tool built into the AppImage. | Requires snapd installed. Supports delta updating, will automatically update. | Required flatpak installed. Update Using flatpak update command. -**Package sizes on disk** | Application remains archived. | Application remains archived. | Client side is uncompressed. - -Here is a long tabular comparison of AppImage vs. Snap vs. Flatpak features. Please note that the comparison is made from an AppImage perspective. - - * [**https://github.com/AppImage/AppImageKit/wiki/Similar-projects#comparison**][12] - - - -### Conclusion - -While all three of these platforms have a lot in common with each other and aim to be platform agnostic in approach, they offer different levels of competencies in a few areas. While Snaps can run on a variety of devices including embedded ones, AppImages and Flatpaks are built with the desktop user in mind. AppImages of popular applications on the other had have superior packaging sizes and portability whereas Flatpak really shines with its forward compatibility when its used in a set it and forget it system. - -If there are any flaws in this guide, please let us know in the comment section below. We will update the guide accordingly. - -**References:** - - * **[1]** [**Concepts — AppImage documentation**][13] - * **[2]** [**Slashdot – Point-and-klik Linux Software Installation**][14] - * **[3]** [**History of AppImage project**][15] - * **[4][Snapcraft – Snaps are universal Linux packages][16]** - * **[5][Installing snapd – Snap documentation][17]** - * **[6][Snap documentation][7]** - * **[7][On Snappy and Flatpak: business as usual in the Canonical propaganda department][18]** - * **[8][Snap Updates are getting smaller, here’s why][19]** - * **[9][What Are Linux Snap Packages? Why Use Them?][20]** - * **[10][Snapshots – Snap documentation][21]** - * **[11][Snap confinement – Snap documentation][22]** - * **[12][Desktop Integration – Flatpak documentation][23]** - * **[13][Introduction to Flatpak – Flatpak documentation][24]** - * **[14][Sandbox Permissions – Flatpak documentation][25]** - * **[15][Flatpak – a security nightmare][26]** - - - --------------------------------------------------------------------------------- - -via: https://www.ostechnix.com/linux-package-managers-compared-appimage-vs-snap-vs-flatpak/ - -作者:[editor][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://www.ostechnix.com/author/editor/ -[b]: https://github.com/lujun9972 -[1]: https://www.ostechnix.com/wp-content/uploads/2019/06/Linux-Package-Managers-Compared-1-720x340.png -[2]: https://github.com/AppImage/AppImageKit/blob/master/README.md -[3]: https://docs.appimage.org/ -[4]: https://www.ostechnix.com/search-linux-applications-on-appimage-flathub-and-snapcraft-platforms/ -[5]: https://snapcraft.io/store -[6]: https://blog.ubuntu.com/2019/06/20/parallel-installs-test-and-run-multiple-instances-of-snaps -[7]: https://docs.snapcraft.io/ -[8]: https://www.ostechnix.com/install-snap-packages-arch-linux-fedora/ -[9]: https://github.com/flatpak/flatpak -[10]: http://docs.flatpak.org/en/latest/index.html -[11]: https://www.ostechnix.com/flatpak-new-framework-desktop-applications-linux/ -[12]: https://github.com/AppImage/AppImageKit/wiki/Similar-projects#comparison -[13]: https://docs.appimage.org/introduction/concepts.html#one-app-one-file. -[14]: https://linux.slashdot.org/story/05/01/15/1815210/point-and-klik-linux-software-installation -[15]: https://github.com/AppImage/AppImageKit/wiki/History#timeline. -[16]: https://snapcraft.io/# -[17]: https://docs.snapcraft.io/installing-snapd -[18]: https://www.happyassassin.net/2016/06/16/on-snappy-and-flatpak-business-as-usual-in-the-canonical-propaganda-department/ -[19]: https://blog.ubuntu.com/2017/08/01/snap-updates-are-getting-smaller-heres-why -[20]: https://www.feliciano.tech/blog/what-are-linux-snap-packages-why-use-them/ -[21]: https://docs.snapcraft.io/snapshots -[22]: https://docs.snapcraft.io/snap-confinement -[23]: http://docs.flatpak.org/en/latest/desktop-integration.html?highlight=desktop%20integration -[24]: http://docs.flatpak.org/en/latest/introduction.html -[25]: http://docs.flatpak.org/en/latest/sandbox-permissions.html?highlight=sandboxing -[26]: https://flatkill.org/ diff --git a/sources/tech/20190815 12 extensions for your GNOME desktop.md b/sources/tech/20190815 12 extensions for your GNOME desktop.md deleted file mode 100644 index 307cac4ebe..0000000000 --- a/sources/tech/20190815 12 extensions for your GNOME desktop.md +++ /dev/null @@ -1,130 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (12 extensions for your GNOME desktop) -[#]: via: (https://opensource.com/article/19/8/extensions-gnome-desktop) -[#]: author: (Alan Formy-Duval https://opensource.com/users/alanfdosshttps://opensource.com/users/erezhttps://opensource.com/users/alanfdosshttps://opensource.com/users/patrickhttps://opensource.com/users/liamnairn) - -12 extensions for your GNOME desktop -====== -Add functionality and features to your Linux desktop with these add-ons. -![A person working.][1] - -The GNOME desktop is the default graphical user interface for most of the popular Linux distributions and some of the BSD and Solaris operating systems. Currently at version 3, GNOME provides a sleek user experience, and extensions are available for additional functionality. - -We've covered [GNOME extensions][2] at Opensource.com before, but to celebrate GNOME's 22nd anniversary, I decided to revisit the topic. Some of these extensions may already be installed, depending on your Linux distribution; if not, check your package manager. - -### How to add extensions from the package manager - -To install extensions that aren't in your distro, open the package manager and click **Add-ons**. Then click **Shell Extensions** at the top-right of the Add-ons screen, and you will see a button for **Extension Settings** and a list of available extensions. - -![Package Manager Add-ons Extensions view][3] - -Use the Extension Settings button to enable, disable, or configure the extensions you have installed. - -Now that you know how to add and enable extensions, here are some good ones to try. - -## 1\. GNOME Clocks - -[GNOME Clocks][4] is an application that includes a world clock, alarm, stopwatch, and timer. You can configure clocks for different geographic locations. For example, if you regularly work with colleagues in another time zone, you can set up a clock for their location. You can access the World Clocks section in the top panel's drop-down menu by clicking the system clock. It shows your configured world clocks (not including your local time), so you can quickly check the time in other parts of the world. - -## 2\. GNOME Weather - -[GNOME Weather][5] displays the weather conditions and forecast for your current location. You can access local weather conditions from the top panel's drop-down menu. You can also check the weather in other geographic locations using Weather's Places menu. - -GNOME Clocks and Weather are small applications that have extension-like functionality. Both are installed by default on Fedora 30 (which is what I'm using). If you're using another distribution and don't see them, check the package manager. - -You can see both extensions in action in the image below. - -![Clocks and Weather shown in the drop-down][6] - -## 3\. Applications Menu - -I think the GNOME 3 interface is perfectly enjoyable in its stock form, but you may prefer a traditional application menu. In GNOME 30, the [Applications Menu][7] extension was installed by default but not enabled. To enable it, click the Extensions Settings button in the Add-ons section of the package manager and enable the Applications Menu extension. - -![Extension Settings][8] - -Now you can see the Applications Menu in the top-left corner of the top panel. - -![Applications Menu][9] - -## 4\. More columns in applications view - -The Applications view is set by default to six columns of icons, probably because GNOME needs to accommodate a wide array of displays. If you're using a wide-screen display, you can use the [More columns in applications menu][10] extension to increase the columns. I find that setting it to eight makes better use of my screen by eliminating the empty columns on either side of the icons when I launch the Applications view. - -## Add system info to the top panel - -The next three extensions provide basic system information to the top panel. - - * 5. [Harddisk LED][11] shows a small hard drive icon with input/output (I/O) activity. - * 6. [Load Average][12] indicates Linux load averages taken over three time intervals. - * 7. [Uptime Indicator][13] shows system uptime; when it's clicked, it shows the date and time the system was started. - - - -## 8\. Sound Input and Output Device Chooser - -Your system may have more than one audio device for input and output. For example, my laptop has internal speakers and sometimes I use a wireless Bluetooth speaker. The [Sound Input and Output Device Chooser][14] extension adds a list of your sound devices to the System Menu so you can quickly select which one you want to use. - -## 9\. Drop Down Terminal - -Fellow Opensource.com writer [Scott Nesbitt][15] recommended the next two extensions. The first, [Drop Down Terminal][16], enables a terminal window to drop down from the top panel by pressing a certain key; the default is the key above Tab; on my keyboard, that's the tilde (~) character. Drop Down Terminal has a settings menu for customizing transparency, height, the activation keystroke, and other configurations. - -## 10\. Todo.txt - -[Todo.txt][17] adds a menu to the top panel for maintaining a file for Todo.txt task tracking. You can add or delete a task from the menu or mark it as completed. - -![Drop-down menu for Todo.txt][18] - -## 11\. Removable Drive Menu - -Opensource.com editor [Seth Kenlon][19] suggested [Removable Drive Menu][20]. It provides a drop-down menu for managing removable media, such as USB thumb drives. From the extension's menu, you can access a drive's files and eject it. The menu only appears when removable media is inserted. - -![Removable Drive Menu][21] - -## 12\. GNOME Internet Radio - -I enjoy listening to internet radio streams with the [GNOME Internet Radio][22] extension, which I wrote about in [How to Stream Music with GNOME Internet Radio][23]. - -* * * - -What are your favorite GNOME extensions? Please share them in the comments. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/19/8/extensions-gnome-desktop - -作者:[Alan Formy-Duval][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/alanfdosshttps://opensource.com/users/erezhttps://opensource.com/users/alanfdosshttps://opensource.com/users/patrickhttps://opensource.com/users/liamnairn -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/rh_003784_02_os.comcareers_os_rh2x.png?itok=jbRfXinl (A person working.) -[2]: https://opensource.com/article/17/2/top-gnome-shell-extensions -[3]: https://opensource.com/sites/default/files/uploads/add-onsextensions_6.png (Package Manager Add-ons Extensions view) -[4]: https://wiki.gnome.org/Apps/Clocks -[5]: https://wiki.gnome.org/Apps/Weather -[6]: https://opensource.com/sites/default/files/uploads/clocksweatherdropdown_6.png (Clocks and Weather shown in the drop-down) -[7]: https://extensions.gnome.org/extension/6/applications-menu/ -[8]: https://opensource.com/sites/default/files/uploads/add-onsextensionsettings_6.png (Extension Settings) -[9]: https://opensource.com/sites/default/files/uploads/applicationsmenuextension_5.png (Applications Menu) -[10]: https://extensions.gnome.org/extension/1305/more-columns-in-applications-view/ -[11]: https://extensions.gnome.org/extension/988/harddisk-led/ -[12]: https://extensions.gnome.org/extension/1381/load-average/ -[13]: https://extensions.gnome.org/extension/508/uptime-indicator/ -[14]: https://extensions.gnome.org/extension/906/sound-output-device-chooser/ -[15]: https://opensource.com/users/scottnesbitt -[16]: https://extensions.gnome.org/extension/442/drop-down-terminal/ -[17]: https://extensions.gnome.org/extension/570/todotxt/ -[18]: https://opensource.com/sites/default/files/uploads/todo.txtmenu_3.png (Drop-down menu for Todo.txt) -[19]: https://opensource.com/users/seth -[20]: https://extensions.gnome.org/extension/7/removable-drive-menu/ -[21]: https://opensource.com/sites/default/files/uploads/removabledrivemenu_3.png (Removable Drive Menu) -[22]: https://extensions.gnome.org/extension/836/internet-radio/ -[23]: https://opensource.com/article/19/6/gnome-internet-radio diff --git a/sources/tech/20190820 The infrastructure is code- A story of COBOL and Go.md b/sources/tech/20190820 The infrastructure is code- A story of COBOL and Go.md deleted file mode 100644 index 629d36ee31..0000000000 --- a/sources/tech/20190820 The infrastructure is code- A story of COBOL and Go.md +++ /dev/null @@ -1,84 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (The infrastructure is code: A story of COBOL and Go) -[#]: via: (https://opensource.com/article/19/8/command-line-heroes-cobol-golang) -[#]: author: (Matthew Broberg https://opensource.com/users/mbbroberghttps://opensource.com/users/mbbroberghttps://opensource.com/users/mbbroberghttps://opensource.com/users/mbbroberghttps://opensource.com/users/mbbroberg) - -The infrastructure is code: A story of COBOL and Go -====== -COBOL remains the dominant language of mainframes. What can Go learn -from its history to dominate the cloud? -![Listen to the Command Line Heroes Podcast][1] - -Old challenges are new again. In [this week's Command Line Heroes podcast][2] (Season 3, Episode 5), that thought comes with a twist of programming languages and platforms. - -### COBOL dominates the mainframe - -One of the most brilliant minds in all of computer science is [Grace Murray Hopper][3]. Every time we don't have to write in binary to talk to computers, I recommend saying out loud: "Thank you, Rear Admiral Grace Murray Hopper." Try it next time, for she is the one who invented the first compiler (the software that translates programming code to machine language). - -Hopper was essential to the invention and adoption of high-level programming languages, the first of which was COBOL. She helped create the **CO**mmon **B**usiness-**O**riented **L**anguage (COBOL for short) in 1959. As Ritika Trikha put it on [HackerRank][4]: - -> "Grace Hopper, the mother of COBOL, helped champion the creation of this brand-new programming language that aimed to function across all business systems, saving an immense amount of time and money. Hopper was also the first to believe that programming languages should read just like English instead of computer jargon. Hence why COBOL's syntax is so wordy. But it helped humanize the computing process for businesses during an era when computing was intensive and prevalent only in research facilities." - -In the early 1960s, mainframes were a wild new architecture for sharing powerful amounts of computation. And in the era of mainframe computing, COBOL dominated the landscape. - -### COBOL in today's world - -But what about today? With the decline of mainframes and the rise of newer and more innovative languages designed for the web and cloud, where does COBOL sit? - -As last week's episode of Command Line Heroes mentioned, in the late 1990s, [Perl][5] (as well as JavaScript and C++) was outpacing COBOL. And, as Perl's creator, [Larry Wall stated then][6]: "COBOL is no big deal these days since demand for COBOL seems to be trailing off, for some strange reason." - -Fast forward to 2019, and COBOL has far from "trailed off." As David Cassel wrote on [The New Stack][7] in 2017: - -> "About 95% of ATM swipes use COBOL code, Reuters [reported in April][8], and the 58-year-old language even powers 80% of in-person transactions. In fact, Reuters calculates that there's still 220 billion lines of COBOL code currently being used in production today, and that every day, COBOL systems handle $3 trillion in commerce." - -Given its continued significance in the business world, knowing COBOL can be a great career move. Top COBOL programmers can expect to [make six figures][9] due to the limited number of people who specialize in the language. - -### Go dominates in the cloud, for now - -That story of COBOL's early dominance rings a bell for me. If we survey the most influential projects of this cloud computing era, you'd be hard-pressed to miss Go sitting at the top of the pack. Kubernetes and much of its related technology—from Etcd to Prometheus—are written in Go. As [RedMonk explored][10] back in 2014: - -> "Go's rapidly closing in on 1% of total commits and half a percent of projects and contributors. While the trend is obviously interesting, at first glance, numbers well under one percent look inconsequential relative to overall adoption. To provide some context, however, each of the most popular languages on Ohloh (C, C++, Java, JavaScript) only constitute ~10% of commits and ~5% of projects and contributors. **That means Go, a seemingly very minor player, is already used nearly one-tenth as much in FOSS as the most popular languages in existence**." - -In two of my previous jobs, my team (re)wrote infrastructure software in Go to be part of this monumental wave. Influential projects continue to live in the space that Go can fill, as [Uday Hiwarale explained][11] well in 2018: - -> "Things that make Go a great language [are] its simple concurrency model, its package-based code management, and its non-strict (type inference) typing system. Go does not support out-of-the box object-oriented programming experience, but [its] support structures (structs) …, with the help of methods and pointers, can help us achieve the same [outcomes]." - -It looks to me like Go could be following in COBOL's footsteps, but questions remain about where it's going. In June 2019, [RedMonk ranked][12] Go in 16th place, with a future that could lead either direction. - -### What can Go learn from COBOL? - -If Go were to see into its future, would it look like COBOL's, with such staying power? - -The stories told this season by Command Line Heroes illustrate how languages are born, how communities form around them, how they rise in popularity and standardize, and how some slowly decline. What can we learn about the lifespan of programming languages? Do they have a similar arc? Or do they differ? - -I think this podcast is well worth [subscribing so that you don't miss a single one][2]. I would love to hear your thoughts in the comments below. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/19/8/command-line-heroes-cobol-golang - -作者:[Matthew Broberg][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/mbbroberghttps://opensource.com/users/mbbroberghttps://opensource.com/users/mbbroberghttps://opensource.com/users/mbbroberghttps://opensource.com/users/mbbroberg -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/command-line-heroes-520x292.png?itok=s_F6YEoS (Listen to the Command Line Heroes Podcast) -[2]: https://www.redhat.com/en/command-line-heroes -[3]: https://www.biography.com/scientist/grace-hopper -[4]: https://blog.hackerrank.com/the-inevitable-return-of-cobol/ -[5]: https://opensource.com/article/19/8/command-line-heroes-perl -[6]: http://www.wall.org/~larry/onion3/talk.html -[7]: https://thenewstack.io/cobol-everywhere-will-maintain/ -[8]: http://fingfx.thomsonreuters.com/gfx/rngs/USA-BANKS-COBOL/010040KH18J/index.html -[9]: https://www.laserfiche.com/ecmblog/looking-job-hows-your-cobol/ -[10]: https://redmonk.com/dberkholz/2014/03/18/go-the-emerging-language-of-cloud-infrastructure/ -[11]: https://medium.com/rungo/introduction-to-go-programming-language-golang-89d16ca72bbf -[12]: https://redmonk.com/sogrady/2019/07/18/language-rankings-6-19/ diff --git a/sources/tech/20190911 10 Ansible modules you need to know.md b/sources/tech/20190911 10 Ansible modules you need to know.md deleted file mode 100644 index 51b0078f86..0000000000 --- a/sources/tech/20190911 10 Ansible modules you need to know.md +++ /dev/null @@ -1,381 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (10 Ansible modules you need to know) -[#]: via: (https://opensource.com/article/19/9/must-know-ansible-modules) -[#]: author: (DirectedSoul https://opensource.com/users/directedsoulhttps://opensource.com/users/markphttps://opensource.com/users/rich-butkevichttps://opensource.com/users/jairojuniorhttps://opensource.com/users/marcobravohttps://opensource.com/users/johnsimcall) - -10 Ansible modules you need to know -====== -See examples and learn the most important modules for automating -everyday tasks with Ansible. -![Text editor on a browser, in blue][1] - -[Ansible][2] is an open source IT configuration management and automation platform. It uses human-readable YAML templates so users can program repetitive tasks to happen automatically without having to learn an advanced programming language. - -Ansible is agentless, which means the nodes it manages do not require any software to be installed on them. This eliminates potential security vulnerabilities and makes overall management smoother. - -Ansible [modules][3] are standalone scripts that can be used inside an Ansible playbook. A playbook consists of a play, and a play consists of tasks. These concepts may seem confusing if you're new to Ansible, but as you begin writing and working more with playbooks, they will become familiar. - -There are some modules that are frequently used in automating everyday tasks; those are the ones that we will cover in this article. - -Ansible has three main files that you need to consider: - - * **Host/inventory file:** Contains the entry of the nodes that need to be managed - * **Ansible.cfg file:** Located by default at **/etc/ansible/ansible.cfg**, it has the necessary privilege escalation options and the location of the inventory file - * **Main file:** A playbook that has modules that perform various tasks on a host listed in an inventory or host file - - - -### Module 1: Package management - -There is a module for most popular package managers, such as DNF and APT, to enable you to install any package on a system. Functionality depends entirely on the package manager, but usually these modules can install, upgrade, downgrade, remove, and list packages. The names of relevant modules are easy to guess. For example, the DNF module is [dnf_module][4], the old YUM module (required for Python 2 compatibility) is [yum_module][5], while the APT module is [apt_module][6], the Slackpkg module is [slackpkg_module][7], and so on. - -Example 1: - - -``` -\- name: install the latest version of Apache and MariaDB -  dnf: -    name: -     - httpd -      - mariadb-server -    state: latest -``` - -This installs the Apache web server and the MariaDB SQL database. - -#### Example 2: - - -``` -\- name: Install a list of packages -  yum: -    name: -     - nginx -      - postgresql -      - postgresql-server -    state: present -``` - -This installs the list of packages and helps download multiple packages. - -### Module 2: Service - -After installing a package, you need a module to start it. The [service module][8] enables you to start, stop, and reload installed packages; this comes in pretty handy. - -#### Example 1: - - -``` -\- name: Start service foo, based on running process /usr/bin/foo -  service: -    name: foo -    pattern: /usr/bin/foo -    state: started -``` - -This starts the service **foo**. - -#### Example 2: - - -``` -\- name: Restart network service for interface eth0 -  service: -    name: network -    state: restarted -    args: eth0 -``` - -This restarts the network service of the interface **eth0**. - -### Module 3: Copy - -The [copy module][9] copies a file from the local or remote machine to a location on the remote machine. - -#### Example 1: - - -``` -\- name: Copy a new "ntp.conf file into place, backing up the original if it differs from the copied version -  copy: -    src: /mine/ntp.conf -    dest: /etc/ntp.conf -    owner: root -    group: root -    mode: '0644' -    backup: yes -``` - -#### Example 2: - - -``` -\- name: Copy file with owner and permission, using symbolic representation -  copy: -    src: /srv/myfiles/foo.conf -    dest: /etc/foo.conf -    owner: foo -    group: foo -    mode: u=rw,g=r,o=r -``` - -### Module 4: Debug - -The [debug module][10] prints statements during execution and can be useful for debugging variables or expressions without having to halt the playbook. - -#### Example 1: - - -``` -\- name: Display all variables/facts known for a host -  debug: -    var: hostvars[inventory_hostname] -    verbosity: 4 -``` - -This displays all the variable information for a host that is defined in the inventory file. - -#### Example 2: - - -``` -\- name: Write some content in a file /tmp/foo.txt -  copy: -    dest: /tmp/foo.txt -    content: | -     Good Morning! -      Awesome sunshine today. -    register: display_file_content -\- name: Debug display_file_content -    debug: -      var: display_file_content -      verbosity: 2 -``` - -This registers the content of the copy module output and displays it only when you specify verbosity as 2. For example: - - -``` -`ansible-playbook demo.yaml -vv` -``` - -### Module 5: File - -The [file module][11] manages the file and its properties. - - * It sets attributes of files, symlinks, or directories. - * It also removes files, symlinks, or directories. - - - -#### Example 1: - - -``` -\- name: Change file ownership, group and permissions -  file: -    path: /etc/foo.conf -    owner: foo -    group: foo -    mode: '0644' -``` - -This creates a file named **foo.conf** and sets the permission to **0644**. - -#### Example 2: - - -``` -\- name: Create a directory if it does not exist -  file: -    path: /etc/some_directory -    state: directory -    mode: '0755' -``` - -This creates a directory named **some_directory** and sets the permission to **0755**. - -### Module 6: Lineinfile - -The [lineinfile module][12] manages lines in a text file. - - * It ensures a particular line is in a file or replaces an existing line using a back-referenced regular expression. - * It's primarily useful when you want to change just a single line in a file. - - - -#### Example 1: - - -``` -\- name: Ensure SELinux is set to enforcing mode -  lineinfile: -    path: /etc/selinux/config -    regexp: '^SELINUX=' -    line: SELINUX=enforcing -``` - -This sets the value of **SELINUX=enforcing**. - -#### Example 2: - - -``` -\- name: Add a line to a file if the file does not exist, without passing regexp -  lineinfile: -    path: /etc/resolv.conf -    line: 192.168.1.99 foo.lab.net foo -    create: yes -``` - -This adds an entry for the IP and hostname in the **resolv.conf** file. - -### Module 7: Git - -The [git module][13] manages git checkouts of repositories to deploy files or software. - -#### Example 1: - - -``` -# Example Create git archive from repo -\- git: -    repo: -    dest: /src/ansible-examples -    archive: /tmp/ansible-examples.zip -``` - -#### Example 2: - - -``` -\- git: -    repo: -    dest: /src/ansible-examples -    separate_git_dir: /src/ansible-examples.git -``` - -This clones a repo with a separate Git directory. - -### Module 8: Cli_command - -The [cli_command module][14], first available in Ansible 2.7, provides a platform-agnostic way of pushing text-based configurations to network devices over the **network_cli connection** plugin. - -#### Example 1: - - -``` -\- name: commit with comment -  cli_config: -    config: set system host-name foo -    commit_comment: this is a test -``` - -This sets the hostname for a switch and exits with a commit message. - -#### Example 2: - - -``` -\- name: configurable backup path -  cli_config: -    config: "{{ lookup('template', 'basic/config.j2') }}" -    backup: yes -    backup_options: -      filename: backup.cfg -      dir_path: /home/user -``` - -This backs up a config to a different destination file. - -### Module 9: Archive - -The [archive module][15] creates a compressed archive of one or more files. By default, it assumes the compression source exists on the target. - -#### Example 1: - - -``` -\- name: Compress directory /path/to/foo/ into /path/to/foo.tgz -  archive: -    path: /path/to/foo -    dest: /path/to/foo.tgz -``` - -#### Example 2: - - -``` -\- name: Create a bz2 archive of multiple files, rooted at /path -  archive: -    path: -   - /path/to/foo -    - /path/wong/foo -    dest: /path/file.tar.bz2 -    format: bz2 -``` - -### Module 10: Command - -One of the most basic but useful modules, the [command module][16] takes the command name followed by a list of space-delimited arguments. - -#### Example 1: - - -``` -\- name: return motd to registered var -  command: cat /etc/motd -  register: mymotd -``` - -#### Example 2: - - -``` -\- name: Change the working directory to somedir/ and run the command as db_owner if /path/to/database does not exist. -  command: /usr/bin/make_database.sh db_user db_name -  become: yes -  become_user: db_owner -  args: -    chdir: somedir/ -    creates: /path/to/database -``` - -### Conclusion - -There are tons of modules available in Ansible, but these ten are the most basic and powerful ones you can use for an automation job. As your requirements change, you can learn about other useful modules by entering **ansible-doc <module-name>** on the command line or refer to the [official documentation][17]. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/19/9/must-know-ansible-modules - -作者:[DirectedSoul][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/directedsoulhttps://opensource.com/users/markphttps://opensource.com/users/rich-butkevichttps://opensource.com/users/jairojuniorhttps://opensource.com/users/marcobravohttps://opensource.com/users/johnsimcall -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/browser_blue_text_editor_web.png?itok=lcf-m6N7 (Text editor on a browser, in blue) -[2]: https://www.ansible.com/ -[3]: https://docs.ansible.com/ansible/latest/user_guide/modules.html -[4]: https://docs.ansible.com/ansible/latest/modules/dnf_module.html -[5]: https://docs.ansible.com/ansible/latest/modules/yum_module.html -[6]: https://docs.ansible.com/ansible/latest/modules/apt_module.html -[7]: https://docs.ansible.com/ansible/latest/modules/slackpkg_module.html -[8]: https://docs.ansible.com/ansible/latest/modules/service_module.html -[9]: https://docs.ansible.com/ansible/latest/modules/copy_module.html -[10]: https://docs.ansible.com/ansible/latest/modules/debug_module.html -[11]: https://docs.ansible.com/ansible/latest/modules/file_module.html -[12]: https://docs.ansible.com/ansible/latest/modules/lineinfile_module.html -[13]: https://docs.ansible.com/ansible/latest/modules/git_module.html#git-module -[14]: https://docs.ansible.com/ansible/latest/modules/cli_command_module.html -[15]: https://docs.ansible.com/ansible/latest/modules/archive_module.html -[16]: https://docs.ansible.com/ansible/latest/modules/command_module.html -[17]: https://docs.ansible.com/ diff --git a/sources/tech/20191021 How to build a Flatpak.md b/sources/tech/20191021 How to build a Flatpak.md deleted file mode 100644 index 94bbb65036..0000000000 --- a/sources/tech/20191021 How to build a Flatpak.md +++ /dev/null @@ -1,320 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (How to build a Flatpak) -[#]: via: (https://opensource.com/article/19/10/how-build-flatpak-packaging) -[#]: author: (Seth Kenlon https://opensource.com/users/seth) - -How to build a Flatpak -====== -A universal packaging format with a decentralized means of distribution. -Plus, portability and sandboxing. -![][1] - -A long time ago, a Linux distribution shipped an operating system along with _all_ the software available for it. There was no concept of “third party” software because everything was a part of the distribution. Applications weren’t so much installed as they were enabled from a great big software repository that you got on one of the many floppy disks or, later, CDs you purchased or downloaded. - -This evolved into something even more convenient as the internet became ubiquitous, and the concept of what is now the “app store” was born. Of course, Linux distributions tend to call this a _software repository_ or just _repo_ for short, with some variations for “branding”, such as _Ubuntu Software Center_ or, with typical GNOME minimalism, simply _Software_. - -This model worked well back when open source software was still a novelty and the number of open source applications was a number rather than a _theoretical_ number. In today’s world of GitLab and GitHub and Bitbucket (and [many][2] [many][3] more), it’s hardly possible to count the number of open source projects, much less package them up in a repository. No Linux distribution today, even [Debian][4] and its formidable group of package maintainers, can claim or hope to have a package for every installable open source project. - -Of course, a Linux package doesn’t have to be in a repository to be installable. Any programmer can package up their software and distribute it from their own website. However, because repositories are seen as an integral part of a distribution, there isn’t a universal packaging format, meaning that a programmer must decide whether to release a `.deb` or `.rpm`, or an AUR build script, or a Nix or Guix package, or a Homebrew script, or just a mostly-generic `.tgz` archive for `/opt`. It’s overwhelming for a developer who lives and breathes Linux every day, much less for a developer just trying to make a best-effort attempt at supporting a free and open source target. - -### Why Flatpak? - -The Flatpak project provides a universal packaging format along with a decentralized means of distribution, plus portability, and sandboxing. - - * **Universal** Install the Flatpak system, and you can run Flatpaks, regardless of your distribution. No daemon or systemd required. The same Flatpak runs on Fedora, Ubuntu, Mageia, Pop OS, Arch, Slackware, and more. - * **Decentralized** Developers can create and sign their own Flatpak packages and repositories. There’s no repository to petition in order to get a package included. - * **Portability** If you have a Flatpak on your system and want to hand it to a friend so they can run the same application, you can export the Flatpak to a USB thumbdrive. - * **Sandboxed** Flatpaks use a container-based model, allowing multiple versions of libraries and applications to exist on one system. Yes, you can easily install the latest version of an app to test out while maintaining the old version you rely on. - - - -### Building a Flatpak - -To build a Flatpak, you must first install Flatpak (the subsystem that enables you to use Flatpak packages) and the Flatpak-builder application. - -On Fedora, CentOS, RHEL, and similar: - - -``` -`$ sudo dnf install flatpak flatpak-builder` -``` - -On Debian, Ubuntu, and similar: - - -``` -`$ sudo apt install flatpak flatpak-builder` -``` - -You must also install the development tools required to build the application you are packaging. By nature of developing the application you’re now packaging, you may already have a development environment installed, so you might not notice that these components are required, but should you start building Flatpaks with Jenkins or from inside containers, then you must ensure that your build tools are a part of your toolchain. - -For the first example build, this article assumes that your application uses [GNU Autotools][5], but Flatpak itself supports other build systems, such as `cmake`, `cmake-ninja`, `meson`, `ant`, as well as custom commands (a `simple` build system, in Flatpak terminology, but by no means does this imply that the build itself is actually simple). - -#### Project directory - -Unlike the strict RPM build infrastructure, Flatpak doesn’t impose a project directory structure. I prefer to create project directories based on the **dist** packages of software, but there’s no technical reason you can’t instead integrate your Flatpak build process with your source directory. It is technically easier to build a Flatpak from your **dist** package, though, and it’s an easier demo too, so that’s the model this article uses. Set up a project directory for GNU Hello, serving as your first Flatpak: - - -``` -$ mkdir hello_flatpak -$ mkdir src -``` - -Download your distributable source. For this example, the source code is located at `https://ftp.gnu.org/gnu/hello/hello-2.10.tar.gz`. - - -``` -$ cd hello_flatpak -$ wget -``` - -#### Manifest - -A Flatpak is defined by a manifest, which describes how to build and install the application it is delivering. A manifest is atomic and reproducible. A Flatpak exists in a “sandbox” container, though, so the manifest is based on a mostly empty environment with a root directory call `/app`. - -The first two attributes are the ID of the application you are packaging and the command provided by it. The application ID must be unique to the application you are packaging. The canonical way of formulating a unique ID is to use a triplet value consisting of the entity responsible for the code followed by the name of the application, such as `org.gnu.Hello`. The command provided by the application is whatever you type into a terminal to run the application. This does not imply that the application is intended to be run from a terminal instead of a `.desktop` file in the Activities or Applications menu. - -In a file called `org.gnu.Hello.yaml`, enter this text: - - -``` -id: org.gnu.Hello -command: hello -``` - -A manifest can be written in [YAML][6] or in JSON. This article uses YAML. - -Next, you must define each “module” delivered by this Flatpak package. You can think of a module as a dependency or a component. For GNU Hello, there is only one module: GNU Hello. More complex applications may require a specific library or another application entirely. - - -``` -modules: -  - name: hello -    buildsystem: autotools -    no-autogen: true -    sources: -      - type: archive -        path: src/hello-2.10.tar.gz -``` - -The `buildsystem` value identifies how Flatpak must build the module. Each module can use its own build system, so one Flatpak can have several build systems defined. - -The `no-autogen` value tells Flatpak not to run the setup commands for `autotools`, which aren’t necessary because the GNU Hello source code is the product of `make dist`. If the code you’re building isn’t in a easily buildable form, then you may need to install `autogen` and `autoconf` to prepare the source for `autotools`. This option doesn’t apply at all to projects that don’t use `autotools`. - -The `type` value tells Flatpak that the source code is in an archive, which triggers the requisite unarchival tasks before building. The `path` points to the source code. In this example, the source exists in the `src` directory on your local build machine, but you could instead define the source as a remote location: - - -``` -modules: -  - name: hello -    buildsystem: autotools -    no-autogen: true -    sources: -      - type: archive -        url: -``` - -Finally, you must define the platform required for the application to run and build. The Flatpak maintainers supply runtimes and SDKs that include common libraries, including `freedesktop`, `gnome`, and `kde`. The basic requirement is the `freedesk` runtime and SDK, although this may be superseded by GNOME or KDE, depending on what your code needs to run. For this GNU Hello example, only the basics are required. - - -``` -runtime: org.freedesktop.Platform -runtime-version: '18.08' -sdk: org.freedesktop.Sdk -``` - -The entire GNU Hello flatpak manifest: - - -``` -id: org.gnu.Hello -runtime: org.freedesktop.Platform -runtime-version: '18.08' -sdk: org.freedesktop.Sdk -command: hello -modules: -  - name: hello -    buildsystem: autotools -    no-autogen: true -    sources: -      - type: archive -        path: src/hello-2.10.tar.gz -``` - -#### Building a Flatpak - -Now that the package is defined, you can build it. The build process prompts Flatpak-builder to parse the manifest and to resolve each requirement: it ensures that the necessary Platform and SDK are available (if they aren’t, then you’ll have to install them with the `flatpak` command), it unarchives the source code, and executes the `buildsystem` specified. - -The command to start: - - -``` -`$ flatpak-builder build-dir org.gnu.Hello.yaml` -``` - -The directory `build-dir` is created if it does not already exist. The name `build-dir` is arbitrary; you could call it `build` or `bld` or `penguin`, and you can have more than one build destination in the same project directory. However, the term `build-dir` is a frequent value used in documentation, so using it as the literal value can be helpful. - -#### Testing your application - -You can test your application before or after it has been built by running the build command along with the `--run` option, and endingi the command with the command provided by the Flatpak: - - -``` -$ flatpak-builder --run build-dir \ -org.gnu.Hello.yaml hello -Hello, world! -``` - -### Packaging GUI apps with Flatpak - -Packaging up a simple self-contained _hello world_ application is trivial, and fortunately packaging up a GUI application isn’t much harder. The most difficult applications to package are those that don’t rely on common libraries and frameworks (in the context of packaging, “common” means anything _not_ already packaged by someone else). The Flatpak community provides SDKs and SDK Extensions for many components you might otherwise have had to package yourself. For instance, when packaging the pure Java implementation of `pdftk`, I use the OpenJDK SDK extension I found in the Flatpak Github repository: - - -``` -runtime: org.freedesktop.Platform -runtime-version: '18.08' -sdk: org.freedesktop.Sdk -sdk-extensions: - - org.freedesktop.Sdk.Extension.openjdk11 -``` - -The Flatpak community does a lot of work on the foundations required for applications to run upon in order to make the packaging process easy for developers. For instance, the Kblocks game from the KDE community requires the KDE platform to run, and that’s already available from Flatpak. The additional `libkdegames` library is not included, but it’s as easy to add it to your list of `modules` as `kblocks` itself. - -Here’s a manifest for the Kblocks game: - - -``` -id: org.kde.kblocks -command: kblocks -modules: -\- buildsystem: cmake-ninja -  name: libkdegames -  sources: -    type: archive -    path: src/libkdegames-19.08.2.tar.xz -\- buildsystem: cmake-ninja -  name: kblocks -  sources: -    type: archive -    path: src/kblocks-19.08.2.tar.xz -runtime: org.kde.Platform -runtime-version: '5.13' -sdk: org.kde.Sdk -``` - -As you can see, the manifest is still straight-forward and relatively intuitive. The build system is different, and the runtime and SDK point to KDE instead of the Freedesktop, but the structure and requirements are basically the same. - -Because it’s a GUI application, however, there are some new options required. First, it needs an icon so that when it’s listed in the Activities or Application menu, it looks nice and recognizable. Kblocks includes an icon in its sources, but the names of files exported by a Flatpak must be prefixed using the application ID (such as `org.kde.Kblocks.desktop`). The easiest way to do this is to rename the file directly in the application source, which Flatpak can do for you as long as you include this directive in your manifest: - - -``` -`rename-icon: kblocks` -``` - -Another unique trait of GUI applications is that they often require integration with common desktop services, like the graphics server (X11 or Wayland) itself, a sound server such as [Pulse Audio][7], and the Inter-Process Communication (IPC) subsystem. - -In the case of Kblocks, the requirements are: - - -``` -finish-args: -\- --share=ipc -\- --socket=x11 -\- --socket=wayland -\- --socket=pulseaudio -\- --device=dri -\- --filesystem=xdg-config/kdeglobals:ro -``` - -Here’s the final, complete manifest, using URLs for the sources so you can try this on your own system easily: - - -``` -command: kblocks -finish-args: -\- --share=ipc -\- --socket=x11 -\- --socket=wayland -\- --socket=pulseaudio -\- --device=dri -\- --filesystem=xdg-config/kdeglobals:ro -id: org.kde.kblocks -modules: -\- buildsystem: cmake-ninja -  name: libkdegames -  sources: -  - sha256: 83456cec44502a1f79c0be00c983090e32fd8aea5fec1461fbfbd37b5f8866ac -    type: archive -    url: -\- buildsystem: cmake-ninja -  name: kblocks -  sources: -  - sha256: 8b52c949e2d446a4ccf81b09818fc90234f2f55d8722c385491ee67e1f2abf93 -    type: archive -    url: -rename-icon: kblocks -runtime: org.kde.Platform -runtime-version: '5.13' -sdk: org.kde.Sdk -``` - -To build the application, you must have the KDE Platform and SDK Flatpaks (version 5.13 as of this writing) installed. Once the application has been built, you can run it using the `--run` method, but to see the application icon, you must install it. - -#### Distributing and installing a Flatpak you have built - -Distributing flatpaks happen through repositories. - -You can list your apps on [Flathub.org][8], a community website meant as a _technically_ decentralised (but central in spirit) location for Flatpaks. To submit your Flatpak, [place your manifest into a Git repository][9] and [submit a pull request on Github][10]. - -Alternately, you can create your own repository using the `flatpak build-export` command. - -You can also just install locally: - - -``` -`$ flatpak-builder --force-clean --install build-dir org.kde.Kblocks.yaml` -``` - -Once installed, open your Activities or Applications menu and search for Kblocks. - -![The Activities menu in GNOME][11] - -### Learning more - -The [Flatpak documentation site][12] has a good walkthrough on building your first Flatpak. It’s worth reading even if you’ve followed along with this article. Besides that, the docs provide details on what Platforms and SDKs are available. - -For those who enjoy learning from examples, there are manifests for _every application_ available on [Flathub][13]. - -The resources to build and use Flatpaks are plentiful, and Flatpak, along with containers and sandboxed apps, are arguably [the future][14], so get familiar with them, start integrating them with your Jenkins pipelines, and enjoy easy and universal Linux app packaging. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/19/10/how-build-flatpak-packaging - -作者:[Seth Kenlon][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/seth -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/flatpak-lead-image.png?itok=J93RG_fi -[2]: http://notabug.org -[3]: http://savannah.nongnu.org/ -[4]: http://debian.org -[5]: https://opensource.com/article/19/7/introduction-gnu-autotools -[6]: https://www.redhat.com/sysadmin/yaml-tips -[7]: https://opensource.com/article/17/1/linux-plays-sound -[8]: http://flathub.org -[9]: https://opensource.com/resources/what-is-git -[10]: https://opensource.com/life/16/3/submit-github-pull-request -[11]: https://opensource.com/sites/default/files/gnome-activities-kblocks.jpg (The Activities menu in GNOME) -[12]: http://docs.flatpak.org/en/latest/introduction.html -[13]: https://github.com/flathub -[14]: https://silverblue.fedoraproject.org/ diff --git a/sources/tech/20191111 A guide to intermediate awk scripting.md b/sources/tech/20191111 A guide to intermediate awk scripting.md deleted file mode 100644 index 53e7126eb1..0000000000 --- a/sources/tech/20191111 A guide to intermediate awk scripting.md +++ /dev/null @@ -1,140 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (A guide to intermediate awk scripting) -[#]: via: (https://opensource.com/article/19/11/intermediate-awk-scripting) -[#]: author: (Seth Kenlon https://opensource.com/users/seth) - -A guide to intermediate awk scripting -====== -Learn how to structure commands into executable scripts. -![Coding on a computer][1] - -This article explores awk's capabilities, which are easier to use now that you know how to structure your command into an executable script. - -### Logical operators and conditionals - -You can use the logical operators **and** (written **&&**) and **or** (written **||**) to add specificity to your conditionals. - -For example, to select and print only records with the string "purple" in the second column _and_ an amount less than five in the third column: - - -``` -`$2 == "purple" && $3 < 5 {print $1}` -``` - -If a record has "purple" in column two but a value greater than five in column three, then it is _not_ selected. Similarly, if a record matches column three's requirement but lacks "purple" in column two, it is also _not_ selected. - -### Next command - -Say you want to select every record in your file where the amount is greater than or equal to eight and print a matching record with two asterisks (******). You also want to flag every record with a value between five (inclusive) and eight with only one asterisk (*****). There are a few ways to do this, and one way is to use the **next** command to instruct awk that after it takes an action, it should stop scanning and proceed to the _next_ record. - -Here's an example: - - -``` -NR == 1 { -  print $0; -  next; -} - -$3 >= 8 { -  printf "%s\t%s\n", $0, "**"; -  next; -} - -$3 >= 5 { -  printf "%s\t%s\n", $0, "*"; -  next; -} - -$3 < 5 { -  print $0; -} -``` - -### BEGIN command - -The **BEGIN** command lets you print and set variables before awk starts scanning a text file. For instance, you can set the input and output field separators inside your awk script by defining them in a **BEGIN** statement. This example adapts the simple script from the previous article for a file with fields delimited by commas instead of whitespace: - - -``` -#!/usr/bin/awk -f -# -# Print each record EXCEPT -# IF the first record contains "raspberry", -# THEN replace "red" with "pi" - -BEGIN { -        FS=","; -} - -$1 == "raspberry" { -        gsub(/red/,"pi") -} -``` - -### END command - -The **END** command, like **BEGIN**, allows you to perform actions in awk after it completes its scan through the text file you are processing. If you want to print cumulative results of some value in all records, you can do that only after all records have been scanned and processed. - -The **BEGIN** and **END** commands run only once each. All rules between them run zero or more times on _each record_. In other words, most of your awk script is a loop that is executed at every new line of the text file you're processing, with the exception of the **BEGIN** and **END** rules, which run before and after the loop. - -Here is an example that wouldn't be possible without the **END** command. This script accepts values from the output of the **df** Unix command and increments two custom variables (**used** and **available**) with each new record. - - -``` -$1 != "tempfs" { -    used += $3; -    available += $4; -} - -END { -    printf "%d GiB used\n%d GiB available\n", used/2^20, available/2^20; -} -``` - -Save the script as **total.awk** and try it: - - -``` -`df -l | awk -f total.awk` -``` - -The **used** and **available** variables act like variables in many other programming languages. You create them arbitrarily and without declaring their type, and you add values to them at will. At the end of the loop, the script adds the records in the respective columns together and prints the totals. - -### Math - -As you can probably tell from all the logical operators and casual calculations so far, awk does math quite naturally. This arguably makes it a very useful calculator for your terminal. Instead of struggling to remember the rather unusual syntax of **bc**, you can just use awk along with its special **BEGIN** function to avoid the requirement of a file argument: - - -``` -$ awk 'BEGIN { print 2*21 }' -42 -$ awk 'BEGIN {print 8*log(4) }' -11.0904 -``` - -Admittedly, that's still a lot of typing for simple (and not so simple) math, but it wouldn't take much effort to write a frontend, which is an exercise for you to explore. - -* * * - -_This article is adapted from an episode of [Hacker Public Radio][2], a community technology podcast._ - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/19/11/intermediate-awk-scripting - -作者:[Seth Kenlon][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/lnrCoder) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/seth -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/code_computer_laptop_hack_work.png?itok=aSpcWkcl (Coding on a computer) -[2]: http://hackerpublicradio.org/eps.php?id=2129 diff --git a/sources/tech/20191112 5 open source plugins for Flutter apps.md b/sources/tech/20191112 5 open source plugins for Flutter apps.md deleted file mode 100644 index 2f529b9303..0000000000 --- a/sources/tech/20191112 5 open source plugins for Flutter apps.md +++ /dev/null @@ -1,853 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (5 open source plugins for Flutter apps) -[#]: via: (https://opensource.com/article/19/11/open-source-plugins-flutter-apps) -[#]: author: (Baradwaj Varadharajan https://opensource.com/users/baradwaj) - -5 open source plugins for Flutter apps -====== -Create more useful and attractive apps faster with these plugins for -Google's cross-platform development language. -![][1] - -[Flutter][2] is the newest addition to Google's programming cadre. Following the success of Android, Kotlin, and Golang, [Flutter][3] was created as a cross-platform application development language. It is primarily based on the Dart programming construct and is considered to be the next big programming paradigm because its code can run as a mobile app, a web app, and even a desktop app without any major changes. Supposedly it will support Google's upcoming [Fuschia][4] operating system. - -Flutter plugins are simple dependencies that extend the language's capabilities. This list of the top five open source Flutter plugins includes both user interface (UI)-related and function-related plugins. - -The plugins must be included in your **pubspec.yaml** file before they can be used; they are required to make modifications to the **pubspec.yaml** file in the **lib** folder inside the project. - -### Flutter video-player plugin - -The video_player plugin allows you to embed videos to play in Flutter apps.  - -_Note: Up to Flutter 1.9, there is no video player support present in Flutter, so you have to depend on external plugins like video_player. This provides us with the VideoPlayer class which we will be using here._ - -Before using the VideoPlayer class in Flutter, you have to do the following for iOS and Android applications. - -#### Prerequisites - -**For Android:** - -Make sure that the minimum SDK is set to 21. You can modify this through the Build Gradle inside the **android>app** folder. - -Next, make sure that the **AndroidManifest.xml** file has internet permission enabled by adding the following line in the **AndroidManifest.xml** file: - - -``` -`` -``` - -**For iOS:** - -To give permission to use the internet to render the videos (if required), add the following lines to the **info.plist** file in **<project root>/ios/Runner/Info.plist**: - - -``` -<key>NSAppTransportSecurity</key> -<dict> -  <key>NSAllowsArbitraryLoads</key> -  <true/> -</dict> -``` - -Once the prerequisites for Android and iOS are done, add the following line to the **pubspec.yaml** file in the **dependency** section: - - -``` -`dependencies: video_player: ^0.10.1+3` -``` - -Then use **get packages** to sync the project. - -#### Video_Player plugin basics - -The Video_Player plugin provides support for playing network and local videos on a device by creating a simple API to call the videos. The example application below shows how the Video_Player plugin uses the controller object and how to create the **Future<> Builder** to play the video on loading. - -Start by using the [Scaffold widget][5] as the parent body widget. The goal is for the user to be able to play and pause a video using button controls. - -In order to call the video player object from anywhere, you need a controller to hold it. The VideoPlayerController class makes this possible. The example application pieces it all together. - -#### Example Flutter Video Player app - - -``` -import 'dart:async'; - -import 'package:flutter/material.dart'; -import 'package:video_player/video_player.dart'; - -void main() => runApp(VideoPlayerApp()); - -class VideoPlayerApp extends StatelessWidget { -  @override -  Widget build(BuildContext context) { -    return MaterialApp( -      title: 'Video Player Demo', -      home: VideoPlayerScreen(), -    ); -  } -} - -class VideoPlayerScreen extends StatefulWidget { -  VideoPlayerScreen({Key key}) : super(key: key); - -  @override -  _VideoPlayerScreenState createState() => _VideoPlayerScreenState(); -} - -class _VideoPlayerScreenState extends State<VideoPlayerScreen> { -  VideoPlayerController _controller; -  Future<void> _initializeVideoPlayerFuture; - -  @override -  void initState() { -    _controller = VideoPlayerController.network( -      '', -    ); - -    // Initialize the controller and store the Future for later use. -    _initializeVideoPlayerFuture = _controller.initialize(); - -    // Use the controller to loop the video. -    _controller.setLooping(true); -    super.initState(); -  } - -  @override -  void dispose() { -    // Ensure disposing of the VideoPlayerController to free up resources. -    _controller.dispose(); - -    super.dispose(); -  } - -  @override -  Widget build(BuildContext context) { -    return Scaffold( -      drawer: Drawer(), -      backgroundColor: Colors.orangeAccent, -      appBar: AppBar( -        title: Text('Bee Video'), -        backgroundColor: Colors.black87, -      ), -      // Use a FutureBuilder to display a loading spinner while waiting for the -      // VideoPlayerController to finish initializing. -      body: Stack( -        children: <Widget>[ -          Center(child:FutureBuilder( -            future: _initializeVideoPlayerFuture, -            builder: (context, snapshot) { -              if (snapshot.connectionState == ConnectionState.done) { -                // If the VideoPlayerController has finished initialization, use -                // the data it provides to limit the aspect ratio of the video. -                return AspectRatio( -                  aspectRatio: _controller.value.aspectRatio, -                  // Use the VideoPlayer widget to display the video. -                  child: VideoPlayer(_controller), -                ); -              } else { -                // If the VideoPlayerController is still initializing, show a -                // loading spinner. -                return Center(child: CircularProgressIndicator()); -              } -            }, -          )), -          Center( -              child: -             ButtonTheme( -                  height: 100.0, -                  minWidth: 200.0, -                  child: RaisedButton( -                    padding: EdgeInsets.all(60.0), -                    color: Colors.transparent, -                    textColor: Colors.white, -                    onPressed: () { -                      // Wrap the play or pause in a call to `setState`. This ensures the -                      // correct icon is shown. -                      setState(() { -                        // If the video is playing, pause it. -                        if (_controller.value.isPlaying) { -                          _controller.pause(); -                        } else { -                          // If the video is paused, play it. -                          _controller.play(); -                        } -                      }); -                    }, -                    child: Icon( -                      _controller.value.isPlaying ? Icons.pause : Icons.play_arrow, -                      size: 120.0, -                    ), -                  )) -          ) -        ], -      ), -    ); -  } -} -``` - -Here's the resulting application. - -![Flutter Video Plugin][6] - -![Flutter Video Plugin][7] - -### Flutter Shimmer Effect plugin - -The Flutter [Shimmer Effect][8] UI plugin is fairly straightforward: You just make use of only one class in your widget tree, and the work is done. Here is what the Shimmer Effect looks like: - -![Flutter Shimmer Effect plugin][9] - -To implement this effect, jump into the widget definition and use the **Shimmer** class in your widget tree with this option: - - -``` -`Shimmer.fromColors` -``` - -Next, finalize the application by filling out the properties described below. - -#### Shimmer.fromColors properties - -**Shimmer.fromColors** has the following properties: - - * **baseColor:** This is the shimmer's base color that gets shown on the widget. This is the primary color and the one the child widget will use. - * **HighlightColor:** This is the color that produces the shimmer-like effect by continually waving across the child widget. - * **Child:** This holds whatever widget produces the Shimmer Effect. It could be a Text widget or any complex structure. - - - -The example program shows how these attributes work across complex widgets. - -#### Example Flutter Shimmer Effect app - -This example produces the Shimmer Effect for two important widgets: the Text widget and the [Listview widget][10]. - - -``` -import 'dart:async'; -import 'package:flutter/material.dart'; -import 'package:shimmer/shimmer.dart'; - -void main() => runApp(ShimmerEffectApp()); - -class ShimmerEffectApp extends StatelessWidget { -@override -Widget build(BuildContext context) { -return MaterialApp( -title: 'Sample ShimmerEffect Widget', -home: ShimmerWidget(), -); -} -} - -class ShimmerWidget extends StatefulWidget { -ShimmerWidget({Key key}) : super(key: key); - -@override -_ShimmerWidgetState createState() => _ShimmerWidgetState(); -} - -class _ShimmerWidgetState extends State { - -@override -void initState() { -super.initState(); -} - -@override -Widget build(BuildContext context) { -return Scaffold( -appBar: AppBar(title: Text("Shimmer effect"),), -body: Container( -padding: EdgeInsets.all(25.0), -child:Center( -child: Shimmer.fromColors( -direction: ShimmerDirection.rtl, -period: Duration(seconds:5), -child: Column( -children: [0, 1, 2, 3] -.map((_) => Padding( -padding: const EdgeInsets.only(bottom: 8.0), -child: Row( -crossAxisAlignment: CrossAxisAlignment.start, -children: [ -Container( -width: 48.0, -height: 48.0, -color: Colors.white, -), -Padding( -padding: -const EdgeInsets.symmetric(horizontal: 8.0), -), -Expanded( -child: Column( -crossAxisAlignment: CrossAxisAlignment.start, -children: [ -Container( -width: double.infinity, -height: 8.0, -color: Colors.white, -), -Padding( -padding: -const EdgeInsets.symmetric(vertical: 2.0), -), -Container( -width: double.infinity, -height: 8.0, -color: Colors.white, -), -Padding( -padding: -const EdgeInsets.symmetric(vertical: 2.0), -), -Container( -width: 40.0, -height: 8.0, -color: Colors.white, -), -], -), -) -], -), -)) -.toList(), -), -baseColor: Colors.grey[700], -highlightColor: Colors.grey[100]), -) -), -); -} -} -``` - -Here's the resulting application. - -![Flutter Shimmer Effect plugin][11] - -![Flutter Shimmer Effect plugin][12] - -### Flutter Badges plugin - -[Flutter Badges][13] is a very useful UI plugin that marks a notification count, a count of items in an e-commerce basket, etc. - -To use the Flutter Badges plugin, add the following dependency in your **pubspec.yaml** file: - - -``` -dependencies: -    badges: ^1.1.0 -``` - -Then, import the following line into your **main.dart** file: - - -``` -`import 'package:badges/badges.dart';` -``` - -Now, you can create badges with a simple call to the **Badge class.** - -#### Badge class properties - -Following are the Badge class's available properties: - - * **badgeContent:** This is the attribute that takes in the value of the Badge. It could be a number, a letter, etc. Make sure to make it as small as possible! - * **BadgeColor:** Control the color of the badge by adjusting the BadgeColor colors property. - * **AnimationType:** This enables three animations for the Badge: - * **BadgeAnimationType.scale:** Scales animation once loading happens. - * **BadgeAnimationType.fade:** Fades animation once loading happens - * **BadgeAnimationType.slide:** Slides animation once loading happens - * **shape:** This controls the shape of the badge; it could be a circle or a square. - * **AnimationDuration:** This takes in a Duration class as its value to set how long the animation should last. - - - -Once these attributes are set, you can create a simple app like the following. - -#### Example Flutter Badge application - -Add the following to your **main.dart** file and run the application. - - -``` -import 'dart:async'; -import 'package:flutter/material.dart'; -import 'package:badges/badges.dart'; - -void main() => runApp(BadgesApp()); - -class BadgesApp extends StatelessWidget { -@override -Widget build(BuildContext context) { -return new MaterialApp( -title: 'APP', -home: BadgesWidget(), -); -} -} - -class BadgesWidget extends StatefulWidget { -BadgesWidget({Key key}) : super(key: key); - -@override -_BadgesWidgetState createState() => _BadgesWidgetState(); -} - -class _BadgesWidgetState extends State { - -int value = 0; - -@override -void initState() { -super.initState(); -} - -@override -Widget build(BuildContext context) { -return Scaffold( -appBar: AppBar(title:Text("Sample Badges")), -body: Center( -child: Container( -padding: EdgeInsets.all(25.0), -child: Column( -children: [ -Spacer(), -Badge( -child: RaisedButton( -color: Colors.blueGrey, -child: Text("Notifications", style: TextStyle(color: Colors.white),), -onPressed: (){ -setState(() { -value = value + 1; -}); -},), -badgeContent: Text('$value',style: TextStyle(color: Colors.white),), -badgeColor: Colors.red, -animationType: BadgeAnimationType.scale, -animationDuration: Duration(milliseconds: 500), -shape: BadgeShape.circle, -), -Spacer(), -Badge( -child: RaisedButton( -color: Colors.blueGrey, -child: Text("Messages", style: TextStyle(color: Colors.white),), -onPressed: (){ - -},), -badgeContent: Text("2",style: TextStyle(color: Colors.white),), -badgeColor: Colors.red, -animationType: BadgeAnimationType.scale, -animationDuration: Duration(seconds: 1), -shape: BadgeShape.circle, -), -Spacer(), -Badge( -child: RaisedButton( -color: Colors.blueGrey, -child: Text("Notifications", style: TextStyle(color: Colors.white),), -onPressed: (){ -},), -badgeContent: Text("2",style: TextStyle(color: Colors.white),), -badgeColor: Colors.red, -animationType: BadgeAnimationType.scale, -animationDuration: Duration(seconds: 1), -shape: BadgeShape.circle, -), -Spacer(flex: 4,) -], -), -), -) -); -} -} -``` - -Here's the resulting application. - -![Flutter Badges plugin][14] - -### Flutter Google Maps plugin - -Adding Google Maps in Flutter apps is a very easy process with the help of the **google_maps_flutter** plugin. - -_Note: The Google Maps Flutter plugin is still in developer preview (so it cannot be released to the app store yet). Make sure to wait for the stable release before using it._ - -The main prerequisites for using this plugin are to have a [Google Cloud Platform][15] account and to create a Google Maps API key. If you do not know how to obtain a key, see [Google Maps Integration in Flutter][16]. - -Once the Google Maps SDK is enabled with a credential/API key, you can use it in your Flutter app. Fill out the following with the key. - -**For Android:** - -Go to **android>app>src>main>Androidmanifest.xml** and make sure that the manifest looks like the following (replacing YOUR KEY HERE with your API key): - - -``` -<manifest ... -  <application ... -    <meta-data android:name="com.google.android.geo.API_KEY" -               android:value="YOUR KEY HERE"/> -``` - -**For iOS:** - -Edit the **Appdelegate.m** file as follows (replacing YOUR KEY HERE with your API key): - - -``` -@implementation AppDelegate - -\- (BOOL)application:(UIApplication *)application -    didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { -  [GMSServices provideAPIKey:@"YOUR KEY HERE"]; -  [GeneratedPluginRegistrant registerWithRegistry:self]; -  return [super application:application didFinishLaunchingWithOptions:launchOptions]; -} -@end -``` - -#### GoogleMaps widget basics - -Now it's time to bring the Maps inside the Flutter application. To begin, add the following dependency in the **pubspec.yaml** file: - - -``` -dependencies: - google_maps_flutter: ^0.5.21 -``` - -Import the following package to the **main.dart** file: - - -``` -`import 'package:google_maps_flutter/google_maps_flutter.dart';` -``` - -This package provides the following widgets: - -##### GoogleMap - -The GoogleMap widget provides the main control over Google Maps inside a Flutter application. It has several important attributes that help create the maps you require. They are: - - * **mapType:** This attribute defines what type of map (satellite, hybrid, or normal) is shown. Select one by with the value MapType.satellite, MapType.hybrid, or MapType.normal. - * **InitialCameraPosition:** The initial camera position is important for rendering the map on the Flutter UI and setting the camera position (from which the camera will move). Set the initial camera position by creating a variable with the **CameraPosition** class as its value. - * **OnMapCreated:** This is a callback that fires whenever the camera position changes (e.g., whenever the user moves the map by pinching or swiping it). To move the camera angle programmatically, use GoogleMapController instead. - - - -##### GoogleMapController - -This class controls the Google Map by creating an instance of it. There is no explicit way to change the camera position of the Google Map, but you can use the GoogleMapController to control all sorts of activities on the GoogleMap class. - -##### CameraPosition - -The CameraPosition class provides the camera position values that are required to show any position on the GoogleMap. - - -``` -CameraPosition initPosition = CameraPosition( -target: LatLng(14.5, 25.7), zoom: 7, ); -``` - -The CameraPosition class takes in various attributes, like target, zoom, etc. The **Target** attribute marks the latitude and longitude position on the Google Map. The class takes in a double value like **LatLng(double, double)** to mark it at that position. - -#### Example Flutter GoogleMaps app - -This example app creates an animated camera transition on a Google Map. This is a very useful way to provide [Google Maps in Flutter][16] applications. - - -``` -import 'dart:async'; -import 'package:flutter/material.dart'; -import 'package:google_maps_flutter/google_maps_flutter.dart'; - -void main() => runApp(GoogleMapApp()); - -class GoogleMapApp extends StatelessWidget { -@override -Widget build(BuildContext context) { -return MaterialApp( -title: 'Sample GoogleMap Widget', -home: GoogleMapWidget(), -); -} -} - -class GoogleMapWidget extends StatefulWidget { -GoogleMapWidget({Key key}) : super(key: key); - -@override -_GoogleMapWidgetState createState() => _GoogleMapWidgetState(); -} - -class _GoogleMapWidgetState extends State { - -Completer _controller = Completer(); - -@override -void initState() { -super.initState(); -} - -CameraPosition initPosition = CameraPosition( -target: LatLng(14.5, 25.7), -zoom: 7, -); - -void updateGoogleMap() -async{ -GoogleMapController cont = await _controller.future; -setState(() { -CameraPosition newtPosition = CameraPosition( -target: LatLng(14.5, 28.7), -zoom: 4, -); -cont.animateCamera(CameraUpdate.newCameraPosition(newtPosition)); -}); - -} - -@override -Widget build(BuildContext context) { -return Scaffold( -appBar: AppBar( -backgroundColor: Colors.black45, -title: Text("Update Google Map"), -), -body: Center( -child: Column( -children: [ -Container( -height: 400.0, -child: GoogleMap( -mapType: MapType.hybrid, -initialCameraPosition: initPosition, -onMapCreated: (GoogleMapController controller){ -_controller.complete(controller); -}, -), -), -FlatButton( -child: Text("Update Map", style: TextStyle(color: Colors.white),), -color: Colors.deepOrange, -onPressed: (){ -updateGoogleMap(); -}, -) -], -), -)); -} -} -``` - -Here's the resulting application. - -![Flutter Google Maps plugin][17] - -![Flutter Google Maps plugin][18] - -### Flutter ImagePicker image gallery plugin - -The ImagePicker plugin integrates an image gallery into a Flutter app. - -To begin using the [**image_picker**][19] plugin, add the following dependency in the **pubspec.yaml** file: - - -``` -dependencies: -  image_picker: ^0.6.1+4 -``` - -This requires you to add an import statement in your main file, e.g., **main.dart** file: - - -``` -`import 'package:image_picker/image_picker.dart';` -``` - -To use the Flutter application in iOS, make the following changes in the **info.plist** file: - - * **NSPhotoLibraryUsageDescription:** This describes why the app needs permission to use the photo library. This is called _Privacy - Photo Library Usage Description_ in the visual editor. - * **NSCameraUsageDescription:** This describes why your app needs access to the camera. This is called _Privacy - Camera Usage Description_ in the visual editor. - * **NSMicrophoneUsageDescription:** This describes why your app needs access to the microphone if you intend to record videos. This is called _Privacy - Microphone Usage Description_ in the visual editor. - - - -#### Image Picker widget basics - -To use the ImagePicker widget, just call the class [**ImagePicker**][20]. There are two options for this class: - - * Choose an image or choose a video - * Choose an image or video directly from a gallery or a camera source - - - -This is possible through two method callbacks: - - * **ImagePicker.pickImage()** with the source **ImageSource.gallery** or **ImageSource.camera** - * **ImagePicker.pickVideo()** with the above sources - - - -Both of these calls are async calls, which require **setState()** on the image or video that is selected. - -**ImagePicker.<source call>** returns the file location of the image/video. You must load the image using the **Image.file()** call. - -All of this is explained in the example application. - -#### Example Flutter ImagePicker widget app - -This example app creates an [Image Picker button][20] to select an image from the gallery or directly from the camera. - - -``` -import 'dart:async'; -import 'dart:io'; -import 'package:flutter/material.dart'; -import 'package:image_picker/image_picker.dart'; - -void main() => runApp(ImagePickerApp()); - -class ImagePickerApp extends StatelessWidget { -@override -Widget build(BuildContext context) { -return MaterialApp( -title: 'Sample Imagepicker Widget', -home: ImagePickerWidget(), -); -} -} - -class ImagePickerWidget extends StatefulWidget { -ImagePickerWidget({Key key}) : super(key: key); - -@override -_ImagePickerWidgetState createState() => _ImagePickerWidgetState(); -} - -class _ImagePickerWidgetState extends State { - -File _image; -@override -void initState() { -super.initState(); -} - -void open_camera() -async { -var image = await ImagePicker.pickImage(source: ImageSource.camera); -setState(() { -_image = image; -}); - -} -void open_gallery() -async { -var image = await ImagePicker.pickImage(source: ImageSource.gallery); -setState(() { -_image = image; -}); -} -@override -Widget build(BuildContext context) { -return Scaffold( -appBar: AppBar(title: Text("Sample Imagepicker Widget"), -backgroundColor: Colors.black45,), -body: Center( -child: Container( -child: Column( -children: [ -Container( -color: Colors.black12, -height: 300.0, -width: 900.0, -child: _image == null ? Text("Still waiting!") : Image.file(_image),), -FlatButton( -color: Colors.deepOrangeAccent, -child: Text("Open Camera", style: TextStyle(color: Colors.white),), -onPressed: (){ -open_camera(); -},), -FlatButton( -color: Colors.limeAccent, - -child:Text("Open Gallery", style: TextStyle(color: Colors.black),), -onPressed: (){ -open_gallery(); -}, -) -], -), -), -) - -); - -} -} -``` - -Here's the resulting application. - -![Flutter ImagePicker widget][21] - -![Flutter ImagePicker widget][22] - -![Flutter ImagePicker widget][23] - -### Summary - -These five plugins are very important for creating a neater UI experience in Flutter apps. They will also help you ramp up faster with Flutter app development. - -* * * - -_Some of the information in this article was previously published at [Android Monks][24]._ - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/19/11/open-source-plugins-flutter-apps - -作者:[Baradwaj Varadharajan][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/baradwaj -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/bug-insect-butterfly-diversity-inclusion-2.png?itok=TcC9eews -[2]: https://opensource.com/article/18/6/flutter -[3]: https://flutter.dev/ -[4]: https://en.wikipedia.org/wiki/Google_Fuchsia -[5]: https://androidmonks.com/scaffold-flutter/ -[6]: https://opensource.com/sites/default/files/uploads/flutter1_videoplayer.png (Flutter Video Plugin) -[7]: https://opensource.com/sites/default/files/uploads/flutter2_videoplayer.png (Flutter Video Plugin) -[8]: https://androidmonks.com/shimmer-effect-flutter/ -[9]: https://opensource.com/sites/default/files/uploads/flutter3_shimmergif.gif (Flutter Shimmer Effect plugin) -[10]: https://androidmonks.com/listview-flutter/ -[11]: https://opensource.com/sites/default/files/uploads/flutter4_shimmer.png (Flutter Shimmer Effect plugin) -[12]: https://opensource.com/sites/default/files/uploads/flutter5_shimmer.png (Flutter Shimmer Effect plugin) -[13]: https://androidmonks.com/flutter-badges/ -[14]: https://opensource.com/sites/default/files/uploads/flutter6_samplebadges.png (Flutter Badges plugin) -[15]: https://cloud.google.com/maps-platform/ -[16]: https://androidmonks.com/google-maps-flutter/ -[17]: https://opensource.com/sites/default/files/uploads/flutter7_googlemap.png (Flutter Google Maps plugin) -[18]: https://opensource.com/sites/default/files/uploads/flutter8_googlemap.png (Flutter Google Maps plugin) -[19]: https://pub.dev/packages/image_picker -[20]: https://androidmonks.com/imagepicker-flutter/ -[21]: https://opensource.com/sites/default/files/uploads/flutter9_imagepicker.png (Flutter ImagePicker widget) -[22]: https://opensource.com/sites/default/files/uploads/flutter10_imagepicker.png (Flutter ImagePicker widget) -[23]: https://opensource.com/sites/default/files/uploads/flutter11_imagepicker.png (Flutter ImagePicker widget) -[24]: https://androidmonks.com/flutter-open-source-plugins/ diff --git a/sources/tech/20191128 Monitoring Linux and Windows hosts with Glances.md b/sources/tech/20191128 Monitoring Linux and Windows hosts with Glances.md deleted file mode 100644 index 0c480bc6ea..0000000000 --- a/sources/tech/20191128 Monitoring Linux and Windows hosts with Glances.md +++ /dev/null @@ -1,231 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Monitoring Linux and Windows hosts with Glances) -[#]: via: (https://opensource.com/article/19/11/monitoring-linux-glances) -[#]: author: (David Both https://opensource.com/users/dboth) - -Monitoring Linux and Windows hosts with Glances -====== -The Glances tool offers more information about system performance than -other sysadmin monitoring tools. -![Code going into a computer.][1] - -Sysadmins have many tools to view and manage running processes. For me, these primarily used to be **top**, **atop**, and **htop**. A few years ago, I found [Glances][2], a tool that displays information that none of my other favorites do. All of these tools monitor CPU and memory usage, and most of them list information about running processes (at the very least). However, Glances also monitors filesystem I/O, network I/O, and sensor readouts that can display CPU and other hardware temperatures as well as fan speeds and disk usage by hardware device and logical volume. - -### Glances - -I mentioned Glances in my article [_4 open source tools for Linux system monitoring_][3], but I will delve into it more deeply in this article. If you read my previous article, some of this information may be familiar, but you should also find some new things here. - -Glances is cross-platform because it is written in Python. It can be installed on Windows and other hosts with current versions of Python installed. Most Linux distributions (Fedora in my case) have Glances in their repositories. If not, or if you are using a different operating system (such as Windows), or you just want to get it right from the source, you can find instructions for downloading and installing it in [Glances' GitHub repo][4]. - -I suggest running Glances on a test machine while you try the commands in this article. If you don't have a physical host available for testing, you can explore Glances on a virtual machine (VM), but you won't see the hardware sensors section; after all, a VM has no real hardware. - -To start Glances on a Linux host, open a terminal session and enter the command **glances**. - -Glances has three main sections—Summary, Process, and Alerts—as well as a sidebar. I'll explore them and other details for using Glances now. - -### Summary section - -In its top few lines, Glances' Summary section contains much of the same information as you'll find in other monitors' summary sections. If you have enough horizontal space in your terminal, Glances can show CPU usage with both a bar graph and a numeric indicator; otherwise it will show only the number. - -I like Glances' Summary section better than the ones in other monitors (like **top**); I think it provides the right information in an easily understandable format. - -![Glances display][5] - -The Glances display on a busy Linux host. In the interest of clarity, not all possible displays are shown in the left sidebar. - -The Summary section above provides an overview of the system's status. The first line shows the hostname, the Linux distribution, the kernel version, and the system uptime. - -The next four lines display CPU, memory usage, swap, and load statistics. The left column displays the percentages of CPU, memory, and swap space that are in use. It also shows the combined statistics for all CPUs present in the system. - -Press the **1** key to toggle between the consolidated CPU usage display and the display of the individual CPUs. The following image shows the Glances display with individual CPU statistics. - -![Glances display][6] - -Glances showing the individual CPU statistics. - -This view includes some additional CPU statistics. In either display mode, the descriptions of the CPU usage fields can help you interpret the data displayed in the CPU section. Notice that CPUs are numbered starting at 0 (Zero). - -**CPU** | This is the current CPU usage as a percentage of the total available. ----|--- -**user** | These are the applications and other programs running in user space, i.e., not in the kernel. -**system** | These are kernel-level functions. It does not include CPU time taken by the kernel itself, just the kernel system calls. -**idle** | This is the idle time, i.e., time not used by any running process. -**nice** | This is the time used by processes that are running at a positive, nice level. -**irq** | These are the interrupt requests that take CPU time. -**iowait** | These are CPU cycles that are spent waiting for I/O to occur—this is wasted CPU time. -**steal** | The percentage of CPU cycles that a virtual CPU waits for a real CPU while the hypervisor is servicing another virtual processor. -**ctx-sw** | These are the number of context switches per second; it represents the number of times per second that the CPU switches from running one process to another. -**inter** | This is the number of hardware interrupts per second. A hardware interrupt occurs when a hardware device, such as a hard drive, tells a CPU that it has completed a data transfer or that a network interface card is ready to accept more data. -**sw_int** | Software interrupts tell the CPU that some requested task has completed or that the software is ready for something. These tend to be more common in kernel-level software. - -#### About nice numbers - -Nice numbers are the mechanism used by administrators to affect the priority of a process. It is not possible to change the priority of a process directly, but changing the nice number can modify the results of the kernel scheduler’s priority setting algorithm. Nice numbers run from -20 to +19 where higher numbers are nicer. The default nice number is 0 and the default priority is 20. Setting the nice number higher than zero increases the priority number somewhat, thus making the process nicer and therefore less greedy of CPU cycles. Setting the nice number to a more negative number results in a lower priority number making the process less nice. Nice numbers can be changed using the renice command or from within top, atop, and htop. - -#### Memory - -The Memory portion of the Summary section contains statistics about memory usage. - -**MEM** | This shows the memory usage as a percent of the total amount available. ----|--- -**total** | This is the total amount of RAM memory installed in the host, less any amount assigned to the display adapter. -**used** | This is the total amount of memory in use by the system and application programs but not including cache or buffers. -**free** | This is the amount of free memory. -**active** | This is the amount of actively used memory—inactive memory is subject to swapping to disk should the need arise. -**inactive** | This is memory that is in use but that has not been accessed for some time. -**buffers** | This is memory that is used for buffer space; it is usually used by communications and I/O such as networking. The data is received and stored until the software can retrieve it for use or it can be sent to a storage device or transmitted out to the network. -**cached** | This is the memory used to store data for disk transfer until it can be used by a program or stored to disk. - -The Swap section is self-explanatory if you understand a bit about swap space and how it works. This shows how much total swap space is available, how much is used, and how much is left. - -The Load part of the Summary section displays the one-, five-, and 15-minute load averages. - -You can use the numeric keys **1**, **3**, **4**, and **5** to alter your view of the data in this section. The **2** key toggles the left sidebar on and off. - -#### More about load averages - -Load averages are commonly misunderstood, even though they are a key criterion for measuring CPU usage. But what does it really mean when I say that the one- (or five- or 10-) minute load average is 4.04, for example? Load average can be considered a measure of demand for the CPU; it is a number that represents the average number of instructions waiting for CPU time, so it is a true measure of CPU performance. - -For example, a fully utilized single-processor system CPU would have a load average of 1. This means that the CPU is keeping up exactly with demand; in other words, it has perfect utilization. A load average of less than 1 means the CPU is underutilized, and a load average greater than 1 means the CPU is overutilized and that there is pent-up, unsatisfied demand. For example, a load average of 1.5 in a single-CPU system indicates that one-third of the CPU instructions must wait to be executed until the preceding one has completed. - -This is also true for multiple processors. If a four-CPU system has a load average of 4, then it has perfect utilization. If it has a load average of 3.24, for example, then three of its processors are fully utilized, and one is utilized at about 24%. In the example above, a four-CPU system has a one-minute load average of 4.04, meaning there is no remaining capacity among the four CPUs, and a few instructions are forced to wait. A perfectly utilized four-CPU system would show a load average of 4.00, meaning that the system is fully loaded but not overloaded. - -The optimum load average condition is for the load average to equal the total number of CPUs in a system. That would mean that every CPU is fully utilized, and no instruction must be forced to wait. But reality is messy, and optimum conditions are seldom met. If a host were running at 100% utilization, this would not allow for spikes in CPU load requirements. - -The longer-term load averages indicate overall utilization trends. - -_Linux Journal_ published an excellent article [about load averages][7], the theory, the math behind them, and how to interpret them, in its December 1, 2006, issue. Unfortunately, _Linux Journal_ has ceased publication, and its archives are no longer available directly, so the link is to a third-party archive. - -#### Finding CPU hogs - -One of the reasons for using a tool like Glances is to find processes that are taking up too much CPU time. Open a new terminal session (different from the one running Glances), and enter and start the following CPU-hogging Bash program. - - -``` -`X=0;while [ 1 ];do echo $X;X=$((X+1));done` -``` - -This program is a CPU hog and will use up every available CPU cycle. Allow it to run while you finish this article and experiment with Glances. It will provide you with an idea of what a program that hogs CPU cycles looks like. Be sure to observe the effects on the load averages over time, as well as the cumulative time in the **TIME+** column for this process. - -### Process section - -The Process section displays standard information about each process that is running. Depending upon the viewing mode and the size of the terminal screen, different columns of information will be displayed for the running processes. The default mode with a wide-enough terminal displays the columns listed below. The columns that are displayed change automatically if the terminal screen is resized. The following columns are typically displayed for each process from left to right. - -**CPU%** | This is the amount of CPU time as a percentage of a single core. For example, 98% represents 98% of the available CPU cycles for a single core. Multiple processes can show up to 100% CPU usage. ----|--- -**MEM%** | This is the amount of RAM memory used by the process as a percentage of the total virtual memory in the host. -**VIRT** | This is the amount of virtual memory used by the process in human-readable format, such as 12M for 12 megabytes. -**RES** | This refers to the amount of physical (resident) memory used by the process. Again, this is in human-readable format, with an indicator of **K**, **M**, or **G**, to specify kilobytes, megabytes, or gigabytes. -**PID** | Every process has an identification number, called the PID. This number can be used in commands, such as **renice** and **kill**, to manage the process. Remember that the **kill** utility can send signals to another process besides the “kill” signal. -**USER** | This is the name of the user that owns the process. -**TIME+** | This indicates the cumulative amount of CPU time accrued by the process since it started. -**THR** | This is the total number of threads currently running for this process. -**NI** | This is the nice number of the process. -**S** | This is the current status; it can be (**R**)unning, (**S**)leeping, (**I**)dle, **T** or **t** when the process is stopped during a debugging trace, or (**Z**)ombie. A zombie is a process that has been killed but has not completely died, so it continues to consume some system resources, such as RAM. -**R/s and W/s** | These are the disk reads and writes per second. -**Command** | This is the command used to start the process. - -Glances usually determines the default sort column automatically. Processes can be sorted automatically (**a**), or by CPU (**c**), memory (**m**), name (**p**), user (**u**), I/O rate (**i**), or time (**t**). Processes are automatically sorted by the most-used resource. In the images above, the **TIME+** column is highlighted. - -### Alerts section - -Glances also shows warnings and critical alerts, including the time and duration of the event, at the bottom of the screen. This can be helpful when you're attempting to diagnose problems and cannot stare at the screen for hours at a time. These alert logs can be toggled on or off with the **l** (lower-case L) key, warnings can be cleared with the **w** key, while alerts and warnings can all be cleared with **x**. - -### Sidebar - -Glances has a very nice sidebar on the left that displays information that is not available in **top** or **htop**. While **atop** displays some of this data, Glances is the only monitor that displays data about sensors. After all, sometimes it is nice to see the temperatures inside your computer. - -The individual modules, disk, filesystem, network, and sensors can be toggled on and off using the **d**, **f**, **n**, and **s** keys, respectively. The entire sidebar can be toggled using **2**. Docker stats can be displayed in the sidebar with **D**. - -Note that hardware sensors are not displayed when Glances is running on a virtual machine. - -### Getting help - -You can get help by pressing the **h** key; dismiss the help page by pressing **h** again. The Help page is rather terse, but it does show the available interactive options and how to turn them on and off. The [man page][8] has terse explanations of the options that can be used when launching Glances. - -You can press **q** or **Esc** to exit Glances. - -### Configuration - -Glances does not require a configuration file to work properly. If you choose to have one, the system-wide instance of the configuration file will be located in **/etc/glances/glances.conf**. Individual users can have a local instance at **~/.config/glances/glances.conf**, which will override the global configuration. The primary purpose of these configuration files is to set thresholds for warnings and critical alerts. You can also specify whether certain modules are displayed by default or not. - -The file **/usr/local/share/doc/glances/README.rst** contains additional useful information, including optional Python modules you can install to support some optional Glances features. - -### Command-line options - -Glances provides command-line options that allow it to start up in specific viewing modes. For example, the command **glances -2** starts the program with the left sidebar disabled. - -### Remote and more - -By starting it in server mode, you can use Glances to monitor remote hosts: - - -``` -`[root@testvm1 ~]# glances -s` -``` - -You can then connect to the server from the client with: - - -``` -`[root@testvm2 ~]# glances -c @testvm1` -``` - -Glances can show a list of Glances servers along with a summary of their activity. It also has a web interface so you can monitor remote Glances servers from a browser. Recent versions of Glances can also display Docker statistics. - -There are also pluggable modules for Glances that provide measurement data not available in the base program. - -### Limitations - -Although Glances can monitor many aspects of a host, it cannot manage processes. It cannot change the nice number of a process nor kill one, as **top** and **htop** can. Glances is not an interactive tool. It is used strictly for monitoring. External tools like **kill** and **renice** can be used to manage processes. - -Glances can only show the processes that are taking the majority of the resource specified, such as CPU time, in the available space. If there is room to list just 10 processes, that is all you will be able to see. Glances does not provide scrolling or reverse-sort options that would enable you to see any other than the top X processes. - -### The impact of measurement - -The [observer effect][9] is a physics theory that states, "simply observing a situation or phenomenon necessarily changes that phenomenon." This is also true when measuring Linux system performance. - -Merely using a monitoring tool alters the system's use of resources, including memory and CPU time. The **top** utility and most other monitors use perhaps 2% tor 3% of a system's CPU time. The Glances utility has much more impact than the others; it usually uses between 10% and 20% of CPU time, and I have seen it use as much as 40% of one CPU in a very large and active system with 32 CPUs. That is a lot, so consider its impact when you think about using Glances as your monitor. - -My personal opinion is that this is a small price to pay when you need the capabilities of Glances. - -### Summary - -Despite its lack of interactive capabilities, such as the ability to **renice** or **kill** processes, and its high CPU load, I find Glances to be a very useful tool. The complete [Glances documentation][10] is available on the internet, and the Glances man page has startup options and interactive command information. - -* * * - -_Parts of this article are based on David Both's new book, _[Using and Administering Linux: Volume 2 – Zero to SysAdmin: Advanced Topics][11].__ - -David Both shares his favorite system monitoring tools for understanding what is going on in any... - -David Both explains the importance of keeping hardware cool and shares some Linux tools that can... - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/19/11/monitoring-linux-glances - -作者:[David Both][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/dboth -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/code_computer_development_programming.png?itok=4OM29-82 (Code going into a computer.) -[2]: https://nicolargo.github.io/glances/ -[3]: https://opensource.com/life/16/2/open-source-tools-system-monitoring -[4]: https://github.com/nicolargo/glances/blob/master/README.rst#installation -[5]: https://opensource.com/sites/default/files/uploads/glances-figure-1.png (Glances display) -[6]: https://opensource.com/sites/default/files/uploads/glances-figure-2.png (Glances display) -[7]: https://archive.org/details/Linux-Journal-2006-12/page/n81 -[8]: https://linux.die.net/man/1/glances -[9]: https://en.m.wikipedia.org/wiki/Observer_effect_(physics) -[10]: https://glances.readthedocs.io/en/stable/ -[11]: https://www.apress.com/us/book/9781484250488 diff --git a/sources/tech/20200103 Tracking Translations with Transtats.md b/sources/tech/20200103 Tracking Translations with Transtats.md deleted file mode 100644 index b11a56be66..0000000000 --- a/sources/tech/20200103 Tracking Translations with Transtats.md +++ /dev/null @@ -1,106 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Tracking Translations with Transtats) -[#]: via: (https://fedoramagazine.org/tracking-translations-with-transtats/) -[#]: author: (Sundeep Anand https://fedoramagazine.org/author/suanand/) - -Tracking Translations with Transtats -====== - -![][1] - -Translation is an important step in software localization which helps make software more popular globally, and impacts international user experience. In recent years, localization processes have been evolving worldwide to become more continuous, faster, efficient with automation. In Fedora, the development of the [Zanata][2] platform and its plugins, then [Transtats][3], and now the migration to the [Weblate][4] platform are part of this common ongoing goal. The localization of a desktop OS like Fedora is highly complex because it depends on many factors of the individual upstream projects which are packaged in Fedora. For example, different translation timelines, resources, and tooling. - -### What is Transtats? - -Transtats is a web application which tries to tie up upstream repositories, translation platforms, build system, and product release schedule together to solve problems of mismatch, out-of-sync conditions and to assist the timely packaging of quality translations. Actually, it collects translation data, analyzes them, and creates meaningful representations. - -Fedora Transtats is hosted at - -![][5] - -### How to see the translation status of my package? - -Just select **Packages** tab from left hand side navigation bar. This takes us to the packages list view. Then, search for the package and click on its name. - -![][6] - -For example _anaconda_. On package details page, locate following: - -![][7] - -Here, we have translation statistics from translation platform: [Zanata][8] and [Koji][9] build system. Syncs with the platform and build system are scheduled, which update differences periodically. Languages in red color indicate that there are translated strings remaining in the Translation Platform to be pulled and packaged, whereas, blue denote translated messages could not make 100% in the built package. - -### String breakage (or changes?) - -In translation of software packages, one of the challenges is to prevent string breakage. Package maintainers should strive to abide by the scheduled Fedora release String Freeze. However, in some circumstances it could be necessary to break the string freeze and to inform the translation team on the mailing list. As well as, to update latest translation template (POT) file in the translation platform. Just in case these actions seem missing – translators may get new strings to translate very late or the application may have some strings untranslated. In the worst case, an outdated translation string mismatch may result in a crash. Sync and automation pipelines are there to prevent this, nevertheless it depends on the push or pull methods followed by package developers or maintainers. - -To deal with the same context, we can use a job template in Transtats to detect this string change – particularly useful after string freeze in Fedora release schedule. This would be really helpful for the folks who look for packaging translations without string breakage, keeping translation template (POT) file in sync with translation platform, and testing localized form of the application for translation completeness to back trace. - -### How to detect string changes? - -One of the options in **Jobs** tab is ‘YML based Jobs’. Where we can see available job templates. - -![][10] - -The jobs framework executes all the tasks mentioned in the YAML, create appropriate logs and store results. Track String Change job basically: - - 1. Clones the source repository of respective package. - 2. Tries to generate translation template (POT) file. - 3. Downloads POT file from respective translation platform. - 4. And, finds differences between both the POT files. - - - -_Actually, Transtats maintains mapping of upstream repository, Translation Platform project and respective build tag for every package._ - -![][11] - -Let’s take a closer look into this YAML. We can provide value for %PACKAGE_NAME% and %RELEASE_SLUG% in the next step – **Set Values**! For example: _anaconda_ and _fedora-32_. Furthermore, a couple of things seek attention are: - - * In case the upstream software repository maintains separate git branch for fedora release, please edit ‘branch: master’ to ‘branch: <fedora-release-branch>’ - * In ‘generate’ block, mention the command to generate POT file. Default one should work for ‘intltool-update’ only, however, many packages do have their own. - * A few packages may have gettext domain name different than that of package name. If this is the case, mention the gettext domain too. - - - -As soon as the job is triggered, logs should be populated. If this is not a _scratch_ run, a unique URL shall also be created at the end. - -![][12] - -Left hand side is the input YAML and right hand side is respective log for each task. Here we can find the differences and figure out string mismatch. - -![][13] - -In [Transtats][14], we can create solutions to different problems in the form of job templates. And, scheduling of these jobs could be a step towards automation. - --------------------------------------------------------------------------------- - -via: https://fedoramagazine.org/tracking-translations-with-transtats/ - -作者:[Sundeep Anand][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://fedoramagazine.org/author/suanand/ -[b]: https://github.com/lujun9972 -[1]: https://fedoramagazine.org/wp-content/uploads/2019/12/transtats-816x345.png -[2]: http://zanata.org/ -[3]: http://transtats.org/ -[4]: https://weblate.org/en/ -[5]: https://fedoramagazine.org/wp-content/uploads/2019/12/transtats-landing-1-1024x450.png -[6]: https://fedoramagazine.org/wp-content/uploads/2019/12/anaconda-pkg.png -[7]: https://fedoramagazine.org/wp-content/uploads/2019/12/anaconda-details.png -[8]: https://fedora.zanata.org/project/view/anaconda -[9]: https://koji.fedoraproject.org/koji -[10]: https://fedoramagazine.org/wp-content/uploads/2019/12/job-templates-1024x361.png -[11]: https://fedoramagazine.org/wp-content/uploads/2019/12/strchgjob.png -[12]: https://fedoramagazine.org/wp-content/uploads/2019/12/string-change-job-log-1024x478.png -[13]: https://fedoramagazine.org/wp-content/uploads/2019/12/string-change-1024x614.png -[14]: https://github.com/transtats/transtats diff --git a/sources/tech/20200106 Create fancy text for your social media posts with this Gawk script.md b/sources/tech/20200106 Create fancy text for your social media posts with this Gawk script.md deleted file mode 100644 index 361bac0726..0000000000 --- a/sources/tech/20200106 Create fancy text for your social media posts with this Gawk script.md +++ /dev/null @@ -1,126 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Create fancy text for your social media posts with this Gawk script) -[#]: via: (https://opensource.com/article/20/1/gawk-scripting-social-media) -[#]: author: (Jim Hall https://opensource.com/users/jim-hall) - -Create fancy text for your social media posts with this Gawk script -====== -Add a little style to your status updates by posting text in script, -fraktur, or double-strike characters. -![Chat via email][1] - -Like almost everyone on the planet, I have a few social media accounts. I mostly stick to Facebook to stay up to date with friends and family and Twitter to follow a few other people. - -Have you ever wanted to make a post that includes italics or some other fancy formatting? You can easily change the text to italics or bold when you're writing an email, but most social media platforms don't provide many formatting options. - -And sometimes, I just want to put a little _emphasis_ into what I'm writing. If I've had a really good day and I want to share that with my friends, I might want to put that text in italics. For other posts, I might want to use different formatting that will help my text stand out. Sure, you can use emoji, but sometimes a little text formatting can add that extra pizzazz to your posts. - -I found a way to do just that. With a short [Gawk][2] script I wrote, I can create fancy formatting that I can copy and paste into my social media posts. - -### Special HTML - -HTML includes a bunch of special characters for mathematics, symbols, and other languages that most people are not aware of. Within the Mathematical Markup Language ([MathML][3]) math character support, HTML includes alternate versions of the alphabet for script, fraktur, and double-strike (shown respectively in this image) characters. - -![script, fraktur, and double-strike text][4] - -You can use these alternate versions of the alphabet to create fancy text. - -The script alphabet variation is written as the letter followed by **scr**. Characters can be uppercase or lowercase. For example, to print the script letter **a** in an HTML page, type **&ascr;**, and to print the script letter **Z** in HTML, type **&Zscr;**. - -The fraktur and double-strike variations are referenced in similar ways. The fraktur mathematical lower-case **a** is **&afr;**, and the capital **Y** is **&Yfr;**. The mathematical double-strike **a** is referenced as **&aopf;**, and the double-strike **X** is **&Xopf;**. - -### Gawk functions - -Once you know how to reference the alternate versions of each letter, it's easy to define a few Gawk functions to print those HTML entities. Since these alternate characters exist only for letters and not punctuation or numbers, start with a simple wrapper function to determine if a character is an uppercase or lowercase letter. - - -``` -#!/usr/bin/gawk -f -# Echo the input as different "fonts." Redirect this into an html -# page and copy/paste fancy text into twitter or facebook. - -BEGIN { alpha="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"; } - -function is_alpha(c) { -  return(index(alpha, c)); -} -``` - -The **BEGIN** statement defines an alphabet string called **alpha** that contains all letters a–z and A–Z. The **is_alpha(c)** function uses the built-in **index()** function to return the location of the character **c** in the string **alpha**. If the character **c** is not a letter, **index()** returns zero, which the script uses as a False value. - -Because the **is_alpha(c)** function just "wraps" a call to the **index()** function without doing anything else; this is called a _wrapper_ function. Think of it as shorthand that makes the Gawk script easier to read. - -With that, it's easy to define a few functions that convert single letters into each of the alternate versions of the alphabet. In general, each function calls **is_alpha(c)** to determine if a character is a letter a–z or A–Z. If it is (i.e., if the returned value is non-zero), then the function prints the HTML entity for that letter as script, fraktur, and double-strike. Otherwise, the function prints the letter. - - -``` -function print_script(c) { -  if ( is_alpha(c) ) { printf("&%cscr;", c); } else { printf("%c", c); } -} -function print_fraktur(c) { -  if ( is_alpha(c) ) { printf("&%cfr;", c); }  else { printf("%c", c); } -} -function print_double(c) { -  if ( is_alpha(c) ) { printf("&%copf;", c); } else { printf("%c", c); } -} -``` - -The **print_script(c)** function prints a single letter in script. Similarly, the **print_fraktur(c)** function prints a letter in fraktur, and the **print_double(c)** function prints a single letter in double-strike. - -All that's left is a Gawk loop to convert plain text into each of the alternate alphabet characters. This script loops over each line three times and prints the text in script, fraktur, or double-strike. Each line is wrapped in **<p>** and **</p>** HTML tags. - - -``` -{ text=$0; -  len=length(text); - -  print "<p>"; -  for (i=1; i<=len; i++) { -    print_script( substr(text, i, 1) ); -  } -  print "</p><p>"; -  for (i=1; i<=len; i++) { -    print_fraktur( substr(text, i, 1) ); -  } -  print "</p><p>"; -  for (i=1; i<=len; i++) { -    print_double( substr(text, i, 1) ); -  } -  print "</p>"; -} -``` - -### Putting it all together - -I saved the above lines in a script file called **htmlecho** and put it in my **~/bin** directory. - - -``` -$ htmlecho > /tmp/hello.html -Hello world -^Z -``` - -Whenever I want to add fancy text to my Facebook and Twitter posts, I just run the script and save the output to a temporary HTML page. I open the temporary page in a web browser and copy and paste the fancy text I like best into my social media posts. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/1/gawk-scripting-social-media - -作者:[Jim Hall][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/jim-hall -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/email_chat_communication_message.png?itok=LKjiLnQu (Chat via email) -[2]: https://www.gnu.org/software/gawk/ -[3]: https://en.wikipedia.org/wiki/MathML -[4]: https://opensource.com/sites/default/files/uploads/hello_world.png (script, fraktur, and double-strike text) diff --git a/sources/tech/20200107 App Highlight- Catfish Desktop File Searching Tool.md b/sources/tech/20200107 App Highlight- Catfish Desktop File Searching Tool.md deleted file mode 100644 index d485682215..0000000000 --- a/sources/tech/20200107 App Highlight- Catfish Desktop File Searching Tool.md +++ /dev/null @@ -1,107 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (App Highlight: Catfish Desktop File Searching Tool) -[#]: via: (https://itsfoss.com/catfish/) -[#]: author: (Abhishek Prakash https://itsfoss.com/author/abhishek/) - -App Highlight: Catfish Desktop File Searching Tool -====== - -_****Brief: Catfish is a nifty file searching GUI tool for Linux desktop. The interface is lightweight and simple and the tool allows to refine your search with** criteria like time, file type etc.**_ - -The Linux purists use commands like locate, find and grep to search for files in the terminal. - -But as a desktop Linux user, you don’t need to leave the comfort of the graphical user interface (GUI) and deep dive into the command line interface (CLI) just for searching files on your desktop. - -Most Linux distributions provide a basic desktop search feature either via the file manager or through the desktop environment itself. - -On GNOME desktop, you can search for files in the Activities area (use the Windows key to bring it up). Files (previously known as Nautilus) also has a built-in search button. - -![Nautilus file manager already has advanced search feature][1] - -You can extend this search and add options like time and type of the file. One thing it doesn’t do is to search inside the files. For example, you cannot use it to get all the files that contains “university”. - -This is where a desktop file search tool like Catfish could help you. - -### Catfish: A nifty GUI tool for searching files on Linux - -[Catfish][2] is a GUI tool that enables you to search your desktop for any kind of files. It uses locate and find commands underneath. The autocompletion feature uses [Zeitgeist][3] daemon and [locate command][4]. It’s a lightweight tool and uses GTK+. - -Catfish is developed by [Christian Dywan][5], the same person who develops the [lightweight Midori web browser][6]. - -![Catfish interface on MX Linux][7] - -Some of the main features of Catfish are: - - * Search for files anywhere on your system, **including the mounted partitions** - * **Search inside the files** for its contents (can be enabled from preferences) - * Search hidden files as well - * Refine your search based on modification time - * Refine your search based on file type (images, videos, documents etc) - * Refine your search based on location (Documents, Downloads, Pictures or other folders) - * Exclude certain directories and paths from your search - * Lightweight and simple interface - * **Support for Wayland** display server (from version 1.4.12) - - - -Catfish is now a Xfce project and it is providing the search feature to Xfce’s Thunar file manager. - -### Installing Catfish on Ubuntu and other Linux distributions - -Let’s see how to install Catfish on your Linux distributions. - -**Ubuntu-based distributions** - -Catfish is available in the universe repository for Ubuntu based distributions such as Xubuntu, Linux Mint, Linux Lite etc. - -You can install it from the software center by searching for Catfish - -![Catfish in Ubuntu Software Center][8] - -or, use the terminal to install it: - -``` -sudo apt install catfish -``` - -The version provided by Ubuntu may not be the latest. The [official PPA][9] has been abandoned so this means that to get the latest Catfish version, you’ll have to [install it from the source code][10]. - -**On other distributions** - -Catfish is also available in most major Linux distributions. It is certainly available on Fedora and if you check your distribution’s package manager or software center, you should find it there and install it like any other program. - -**Conclusion** - -In this week’s Linux application highlight, you learned about this handy little utility. However, Catfish is not the only tool of its kind. You may check some other search tools like [ANGRYSearch][11] or [SearchMonkey][12]. - -Have you ever used a GUI tool for searching files or do you rely on the good old command line? And what do you think of Catfish? Do you look forward to use it? - --------------------------------------------------------------------------------- - -via: https://itsfoss.com/catfish/ - -作者:[Abhishek Prakash][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://itsfoss.com/author/abhishek/ -[b]: https://github.com/lujun9972 -[1]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/01/search-files-gnome.jpg?ssl=1 -[2]: https://launchpad.net/catfish-search/ -[3]: https://wiki.archlinux.org/index.php/Zeitgeist -[4]: https://linuxhandbook.com/locate-command/ -[5]: http://www.twotoasts.de/index.php/about/ -[6]: https://itsfoss.com/midori-browser/ -[7]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/01/catfish_screenshot.png?ssl=1 -[8]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/01/catfish_ubuntu_software_center.jpg?ssl=1 -[9]: https://itsfoss.com/ppa-guide/ -[10]: https://itsfoss.com/install-software-from-source-code/ -[11]: https://itsfoss.com/angrysearch/ -[12]: https://itsfoss.com/searchmonkey-search-text-files-linux/ diff --git a/sources/tech/20200107 Introduction to the Linux goto shell utility.md b/sources/tech/20200107 Introduction to the Linux goto shell utility.md deleted file mode 100644 index b683f34449..0000000000 --- a/sources/tech/20200107 Introduction to the Linux goto shell utility.md +++ /dev/null @@ -1,599 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Introduction to the Linux goto shell utility) -[#]: via: (https://opensource.com/article/20/1/directories-autocomplete-linux) -[#]: author: (Lazarus Lazaridis https://opensource.com/users/iridakos) - -Introduction to the Linux goto shell utility -====== -Learn how to use goto to alias and navigate to directories with -autocomplete in Linux. -![Files in a folder][1] - -The goto shell utility allows users to navigate to aliased directories and also supports autocompletion. - -## How it works - -Before you can use goto, you need to register your directory aliases. For example: - - -``` -`goto -r dev /home/iridakos/development` -``` - -then change to that directory, e.g.: - - -``` -`goto dev` -``` - -![goto demo][2] - -## Autocompletion in goto - -**goto** comes with a nice autocompletion script—whenever you press the Tab key after the **goto** command, Bash or Zsh will prompt you with suggestions of the aliases that are available: - - -``` -$ goto <tab> -bc /etc/bash_completion.d                     -dev /home/iridakos/development -rubies /home/iridakos/.rvm/rubies -``` - -## Installing goto - -There are several ways to install goto. - -### Via script - -Clone the repository and run the install script as a superuser or root: - - -``` -git clone -cd goto -sudo ./install -``` - -### Manually - -Copy the file **goto.sh** somewhere in your filesystem and add a line in your **.zshrc** or **.bashrc** to source it. - -For example, if you placed the file in your home folder, all you have to do is add the following line to your **.zshrc** or **.bashrc** file: - - -``` -`source ~/goto.sh` -``` - -### MacOS Homebrew - -A formula named **goto** is available for the Bash shell in MacOS: - - -``` -`brew install goto` -``` - -### Add colored output - - -``` -`echo -e "\$include /etc/inputrc\nset colored-completion-prefix on" >> ~/.inputrc` -``` - -**Notes:** - - * You need to restart your shell after installation. - * You need to have the Bash completion feature enabled for Bash in MacOS (see this [issue][3]). - * You can install it with **brew install bash-completion** if you don't have it enabled. - - - -## Ways to use goto - -### Change to an aliased directory - -To change to an aliased directory, type: - - -``` -`goto ` -``` - -For example: - - -``` -`goto dev` -``` - -### Register an alias - -To register a directory alias, type: - - -``` -`goto -r ` -``` - -or - - -``` -`goto --register ` -``` - -For example: - - -``` -`goto -r blog /mnt/external/projects/html/blog` -``` - -or - - -``` -`goto --register blog /mnt/external/projects/html/blog` -``` - -**Notes:** - - * **goto** **expands** the directories, so you can easily alias your current directory with the following command and it will automatically be aliased to the whole path: [code]`goto -r last_release .` -``` - * Pressing the Tab key after the alias name provides the shell's default directory suggestions. - - - -### Unregister an alias - -To unregister an alias, use: -``` -`goto -u ` -``` -or -``` -`goto --unregister ` -``` -For example: -``` -`goto -u last_release` -``` -or -``` -`goto --unregister last_release` -``` -**Note:** By pressing the Tab key after the command (**-u** or **\--unregister**), the completion script will prompt you with the list of registered aliases. - -### List aliases - -To get a list of your currently registered aliases, use: -``` -`goto -l` -``` -or -``` -`goto --list` -``` -### Expand an alias - -To expand an alias to its value, use: -``` -`goto -x ` -``` -or -``` -`goto --expand ` -``` -For example: -``` -`goto -x last_release` -``` -or -``` -`goto --expand last_release` -``` -### Clean up aliases - -To clean up the aliases from directories that are no longer accessible in your filesystem, use: -``` -`goto -c` -``` -or -``` -`goto --cleanup` -``` -### Get help - -To view the tool's help information, use: -``` -`goto -h` -``` -or -``` -`goto --help` -``` -### Check the version - -To view the tool's version, use: -``` -`goto -v` -``` -or -``` -`goto --version` -``` -### Push before changing directories - -To push the current directory onto the directory stack before changing directories, type: -``` -`goto -p ` -``` -or -``` -`goto --push ` -``` -### Revert to a pushed directory - -To return to a pushed directory, type: -``` -`goto -o` -``` -or -``` -`goto --pop` -``` -**Note:** This command is equivalent to **popd** but within the **goto** command. - -## Troubleshooting - -If you see the error **command not found: compdef** in Zsh, it means you need to load **bashcompinit**. To do so, append this to your **.zshrc** file: -``` - - -autoload bashcompinit -bashcompinit - -``` -## Get involved - -The goto tool is open source under the [MIT License][4] terms, and contributions are welcomed. To learn more, visit the [Contributing][5] section in goto's GitHub repository. - -## The goto script -``` - - -goto() -{ -  local target -  _goto_resolve_db - -  if [ -z "$1" ]; then -    # display usage and exit when no args -    _goto_usage -    return -  fi - -  subcommand="$1" -  shift -  case "$subcommand" in -    -c|--cleanup) -      _goto_cleanup "$@" -      ;; -    -r|--register) # Register an alias -      _goto_register_alias "$@" -      ;; -    -u|--unregister) # Unregister an alias -      _goto_unregister_alias "$@" -      ;; -    -p|--push) # Push the current directory onto the pushd stack, then goto -      _goto_directory_push "$@" -      ;; -    -o|--pop) # Pop the top directory off of the pushd stack, then change that directory -      _goto_directory_pop -      ;; -    -l|--list) -      _goto_list_aliases -      ;; -    -x|--expand) # Expand an alias -      _goto_expand_alias "$@" -      ;; -    -h|--help) -      _goto_usage -      ;; -    -v|--version) -      _goto_version -      ;; -    *) -      _goto_directory "$subcommand" -      ;; -  esac -  return $? -} - -_goto_resolve_db() -{ -  GOTO_DB="${GOTO_DB:-$HOME/.goto}" -  touch -a "$GOTO_DB" -} - -_goto_usage() -{ -  cat <<\USAGE -usage: goto [<option>] <alias> [<directory>] - -default usage: -  goto <alias> \- changes to the directory registered for the given alias - -OPTIONS: -  -r, --register: registers an alias -    goto -r|--register <alias> <directory> -  -u, --unregister: unregisters an alias -    goto -u|--unregister <alias> -  -p, --push: pushes the current directory onto the stack, then performs goto -    goto -p|--push <alias> -  -o, --pop: pops the top directory from the stack, then changes to that directory -    goto -o|--pop -  -l, --list: lists aliases -    goto -l|--list -  -x, --expand: expands an alias -    goto -x|--expand <alias> -  -c, --cleanup: cleans up non existent directory aliases -    goto -c|--cleanup -  -h, --help: prints this help -    goto -h|--help -  -v, --version: displays the version of the goto script -    goto -v|--version -USAGE -} - -# Displays version -_goto_version() -{ -  echo "goto version 1.2.4.1" -} - -# Expands directory. -# Helpful for ~, ., .. paths -_goto_expand_directory() -{ -  builtin cd "$1" 2>/dev/null && pwd -} - -# Lists registered aliases. -_goto_list_aliases() -{ -  local IFS=$' ' -  if [ -f "$GOTO_DB" ]; then -    while read -r name directory; do -      printf '\e[1;36m%20s  \e[0m%s\n' "$name" "$directory" -    done < "$GOTO_DB" -  else -    echo "You haven't configured any directory aliases yet." -  fi -} - -# Expands a registered alias. -_goto_expand_alias() -{ -  if [ "$#" -ne "1" ]; then -    _goto_error "usage: goto -x|--expand <alias>" -    return -  fi - -  local resolved - -  resolved=$(_goto_find_alias_directory "$1") -  if [ -z "$resolved" ]; then -    _goto_error "alias '$1' does not exist" -    return -  fi - -  echo "$resolved" -} - -# Lists duplicate directory aliases -_goto_find_duplicate() -{ -  local duplicates= - -  duplicates=$(sed -n 's:[^ ]* '"$1"'$:&:p' "$GOTO_DB" 2>/dev/null) -  echo "$duplicates" -} - -# Registers and alias. -_goto_register_alias() -{ -  if [ "$#" -ne "2" ]; then -    _goto_error "usage: goto -r|--register <alias> <directory>" -    return 1 -  fi - -  if ! [[ $1 =~ ^[[:alnum:]]+[a-zA-Z0-9_-]*$ ]]; then -    _goto_error "invalid alias - can start with letters or digits followed by letters, digits, hyphens or underscores" -    return 1 -  fi - -  local resolved -  resolved=$(_goto_find_alias_directory "$1") - -  if [ -n "$resolved" ]; then -    _goto_error "alias '$1' exists" -    return 1 -  fi - -  local directory -  directory=$(_goto_expand_directory "$2") -  if [ -z "$directory" ]; then -    _goto_error "failed to register '$1' to '$2' - can't cd to directory" -    return 1 -  fi - -  local duplicate -  duplicate=$(_goto_find_duplicate "$directory") -  if [ -n "$duplicate" ]; then -    _goto_warning "duplicate alias(es) found: \\\n$duplicate" -  fi - -  # Append entry to file. -  echo "$1 $directory" >> "$GOTO_DB" -  echo "Alias '$1' registered successfully." -} - -# Unregisters the given alias. -_goto_unregister_alias() -{ -  if [ "$#" -ne "1" ]; then -    _goto_error "usage: goto -u|--unregister <alias>" -    return 1 -  fi - -  local resolved -  resolved=$(_goto_find_alias_directory "$1") -  if [ -z "$resolved" ]; then -    _goto_error "alias '$1' does not exist" -    return 1 -  fi - -  # shellcheck disable=SC2034 -  local readonly GOTO_DB_TMP="$HOME/.goto_" -  # Delete entry from file. -  sed "/^$1 /d" "$GOTO_DB" > "$GOTO_DB_TMP" && mv "$GOTO_DB_TMP" "$GOTO_DB" -  echo "Alias '$1' unregistered successfully." -} - -# Pushes the current directory onto the stack, then goto -_goto_directory_push() -{ -  if [ "$#" -ne "1" ]; then -    _goto_error "usage: goto -p|--push <alias>" -    return -  fi - -  { pushd . || return; } 1>/dev/null 2>&1 - -  _goto_directory "$@" -} - -# Pops the top directory from the stack, then goto -_goto_directory_pop() -{ -  { popd || return; } 1>/dev/null 2>&1 -} - -# Unregisters aliases whose directories no longer exist. -_goto_cleanup() -{ -  if ! [ -f "$GOTO_DB" ]; then -    return -  fi - -  while IFS= read -r i && [ -n "$i" ]; do -    echo "Cleaning up: $i" -    _goto_unregister_alias "$i" -  done <<< "$(awk '{al=$1; $1=""; dir=substr($0,2); -                    system("[ ! -d \"" dir "\" ] && echo " al)}' "$GOTO_DB")" -} - -# Changes to the given alias' directory -_goto_directory() -{ -  local target - -  target=$(_goto_resolve_alias "$1") || return 1 - -  builtin cd "$target" 2> /dev/null || \ -    { _goto_error "Failed to goto '$target'" && return 1; } -} - -# Fetches the alias directory. -_goto_find_alias_directory() -{ -  local resolved - -  resolved=$(sed -n "s/^$1 \\\\(.*\\\\)/\\\1/p" "$GOTO_DB" 2>/dev/null) -  echo "$resolved" -} - -# Displays the given error. -# Used for common error output. -_goto_error() -{ -  (>&2 echo -e "goto error: $1") -} - -# Displays the given warning. -# Used for common warning output. -_goto_warning() -{ -  (>&2 echo -e "goto warning: $1") -} - -# Displays entries with aliases starting as the given one. -_goto_print_similar() -{ -  local similar - -  similar=$(sed -n "/^$1[^ ]* .*/p" "$GOTO_DB" 2>/dev/null) -  if [ -n "$similar" ]; then -    (>&2 echo "Did you mean:") -    (>&2 column -t <<< "$similar") -  fi -} - -# Fetches alias directory, errors if it doesn't exist. -_goto_resolve_alias() -{ -  local resolved - -  resolved=$(_goto_find_alias_directory "$1") - -  if [ -z "$resolved" ]; then -    _goto_error "unregistered alias $1" -    _goto_print_similar "$1" -    return 1 -  else -    echo "${resolved}" -  fi -} - -# Completes the goto function with the available commands -_complete_goto_commands() -{ -  local IFS=$' \t\n' - -  # shellcheck disable=SC2207 -  COMPREPLY=($(compgen -W "-r --register -u --unregister -p --push -o --pop -l --list -x --expand -c --cleanup -v --version" -- "$1")) -} - -# Completes the goto function with the available aliases -_complete_goto_aliases() -{ -  local IFS=$'\n' matches -  _goto_resolve_db - -  # shellcheck disable=SC2207 -  matches=($(sed -n "/^$1/p" "$GOTO_DB" 2>/dev/null)) - -  if [ "${#matches[@]}" -eq "1" ]; then -    # remove the filenames attribute from the completion method -    compopt +o filenames 2>/dev/null - -    # if you find only one alias don't append the directory -    COMPREPLY=("${matches[0]// *}") -  else -    for i in "${!matches[@]}"; do -      # remove the filenames attribute from the completion method -      compopt +o filenames 2>/dev/null - -      if ! [[ $(uname -s) =~ Darwin* ]]; then -        matches[$i]=$(printf '%*s' "-$COLUMNS" "${matches[$i]}") - -        COMPREPLY+=("$(compgen -W "${matches[$i]}")") -      els \ No newline at end of file diff --git a/sources/tech/20200108 Automating the creation of research artifacts.md b/sources/tech/20200108 Automating the creation of research artifacts.md deleted file mode 100644 index e5d3f96163..0000000000 --- a/sources/tech/20200108 Automating the creation of research artifacts.md +++ /dev/null @@ -1,232 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Automating the creation of research artifacts) -[#]: via: (https://opensource.com/article/20/1/automating-documentation) -[#]: author: (Kiko Fernandez-Reyes https://opensource.com/users/kikofernandez) - -Automating the creation of research artifacts -====== -A simple way to automate generating source code documentation, creating -HTML and PDF versions of user documentation, compiling a technical -(research) document to PDF, generating the bibliography, and -provisioning virtual machines. -![Files in a folder][1] - -In my work as a programming language researcher, I need to create [artifacts][2] that are easy to understand and well-documented. To make my work easier, I found a simple way to automate generating source code documentation, creating HTML and PDF versions of user documentation, compiling a technical (research) document to PDF, generating the bibliography, and provisioning of virtual machines with the software artefact installed for ease of reproducibility of my research. - -The tools I use are: - - * [Make][3] makefiles for overall orchestration of all components - * [Haddock][4] for generating source code documentation - * [Pandoc][5] for generating PDF and HTML files from a Markdown file - * [Vagrant][6] for provisioning virtual machines - * [Stack][7] for downloading Haskell dependencies, compiling, running tests, etc - * [pdflaTeX][8] for compiling a LaTeX file to PDF format - * [BibTeX][9] for generating a bibliography - * [Zip][10] to pack everything and get it ready for distribution - - - -I use the following folder and file structure: - - -``` -├── Makefile -├── Vagrantfile -├── code -│   └── typechecker-oopl (Project) -│       ├── Makefile -│       └── ... -│ -├── documentation -│   ├── Makefile -│   ├── README.md -│   ├── assets -│   │   ├── pandoc.css (Customised CSS for Pandoc) -│   │   └── submitted-version.pdf (PDF of your research) -│   └── meta.yaml -│ -├── research -│   ├── Makefile -│   ├── ACM-Reference-Format.bst -│   ├── acmart.cls -│   ├── biblio.bib -│   └── typecheckingMonad.tex -``` - -The Makefile glues together the output from all of the tools listed above. The **code** folder contains the source code of the tool/language I created. The **documentation** folder contains a Makefile that has instructions on how to generate PDF and HTML versions of the user instructions, located in the README.md file. I generate the PDF and HTML user documentation using Pandoc. The **assets** are simply the CSS style to use and a PDF of my research article that will be hyperlinked from the user-generated documentation, so that it is easy to follow. **meta.yaml** contains meta instructions for generating the user documentation, used by Pandoc for e.g., for author names. The **research** folder contains my research article in LaTeX format, but it could hold any other technical document. - -As you can see in the structure, I have a [Makefile][11] for each folder to decouple each Makefile's responsibility and keep a (somewhat) maintainable design. Here is an overview of the top-level Makefile, which orchestrates generating the user documentation, research paper, bibliography, documentation from source code, and provisioning of a virtual machine. - - -``` -all: doc gen - -doc: -        make -C $(DOC_SRC) $@ -        make -C $(CODE_PATH) $@ -        make -C $(RESEARCH) - -gen: -        # Creation of folder with artefact, empty at the moment -        mkdir -p $(ARTEFACT_FOLDER) - -        # Moving user documentation to artefact folder -        cp $(DOC_SRC)/$(README).pdf $(ARTEFACT_FOLDER) -        cp $(DOC_SRC)/$(README).html $(ARTEFACT_FOLDER) -        cp -r $(DOC_SRC)/$(ASSETS) $(ARTEFACT_FOLDER) - -        # Moving research article to artefact folder -        cp $(RESEARCH)/$(RESEARCH_PAPER).pdf $(ARTEFACT_FOLDER)/$(ASSETS)/submitted-version.pdf - -        # Moving code and autogenerated doc to artefact folder -        cp -r $(CODE_PATH) $(ARTEFACT_FOLDER) -        cd $(ARTEFACT_FOLDER)/$(CODE_SRC) -        $(STACK) -        cd ../.. -        rm -rf $(ARTEFACT_FOLDER)/$(DOC_SRC) -        mv $(ARTEFACT_FOLDER)/$(CODE_SRC)/$(HADDOCK) $(ARTEFACT_FOLDER)/$(DOC_SRC) - -        # zip it! -        zip $(ZIP_FILE) $(ARTEFACT_FOLDER) - -update: -        vagrant up -        vagrant provision - -clean: -        rm -rf $(ARTEFACT_FOLDER) - -.PHONY: all clean doc gen update -``` - -First, the **doc** target generates the user documentation using Pandoc, then it uses Haddock to generate the documentation from the Haskell library source code, and finally, it creates a PDF from the LaTeX file. As depicted in the image below, the generated user documentation is in HTML and CSS. The user documentation contains links to the generated source code documentation, also in HTML and CSS, and to the technical (research) paper . The generated source code documentation links directly to the source code, in case the reader would like to understand the implementation. - -![Artifact automation structure][12] - -The user documentation is generated with the following Makefile: - - -``` -DOCS=README.md -META=meta.yaml -NUMBER_SECTION_HEADINGS=-N - -.PHONY: all doc clean - -all: doc - -doc: $(DOC) -        pandoc -s $(META) $(DOCS) --listings --pdf-engine=xelatex -c assets/pandoc.css -o $(DOCS:md=pdf) -        pandoc -s $(META) $(DOCS) --self-contained -c assets/pandoc.css -o $(DOCS:md=html) - -clean: -        rm $(DOCS:md=pdf) $(DOCS:md=html) -``` - -To generate documentation from Haskell code, I use this other Makefile, which makes use of Stack to compile the library and download dependencies, and Haddock (inside its OPTS, or options) to create documentation in HMTL: - - -``` -OPTS=exec -- haddock --html --hyperlinked-source --odir=docs - -doc: -        stack $(OPTS) src/Initial/AST.hs src/Initial/Typechecker.hs \ -        src/Reader/AST.hs src/Reader/Typechecker.hs \ -        src/Backtrace/AST.hs src/Backtrace/Typechecker.hs \ -        src/Warning/AST.hs src/Warning/Typechecker.hs \ -        src/MultiError/AST.hs src/MultiError/Typechecker.hs \ -        src/PhantomFunctors/AST.hs src/PhantomFunctors/Typechecker.hs \ -        src/PhantomPhases/AST.hs src/PhantomPhases/Typechecker.hs \ -        src/Applicative/AST.hs src/Applicative/Typechecker.hs \ -        src/Final/AST.hs src/Final/Typechecker.hs - -.PHONY: doc -``` - -I compile the research paper from LaTeX to PDF with this simple Makefile: - - -``` -.PHONY: research - -research: -        pdflatex typecheckingMonad.tex -        bibtex typecheckingMonad -        pdflatex typecheckingMonad.tex -        pdflatex typecheckingMonad.tex -``` - -The virtual machine (VM) relies on Vagrant and the Vagrantfile, where I can write all the commands to set up the VM. The one thing that I do not know how to automate is moving all of the documentation, once it is generated, into the VM. If you know how to transfer the file from the host machine to the VM, please share your solution in the comments. That means that, currently, I manually enter in the VM and place the documentation in the Desktop folder. - - -``` -# All Vagrant configuration is done below. The "2" in Vagrant.configure -# configures the configuration version (we support older styles for -# backwards compatibility). Please don't change it unless you know what -# you're doing. -Vagrant.configure("2") do |config| -  config.vm.box = "ubuntu/trusty64" -  config.ssh.username = "vagrant" -  config.ssh.password = "vagrant" -  config.vm.provider "virtualbox" do |vb| -    # Display the VirtualBox GUI when booting the machine -    vb.gui = true - -    # Customize the amount of memory on the VM: -    vb.memory = "2048" -    vb.customize ["modifyvm", :id, "--vram", "64"] -  end -  config.vm.provision "shell", inline: <<-SHELL -    ## Installing dependencies, comment after this has been done once. -    # sudo apt-get update -y -    # sudo apt-get install ubuntu-desktop -y -    # sudo apt-get install -y build-essential linux-headers-server - -    # echo 'PATH="/home/vagrant/.local/bin:$PATH"' >> /home/vagrant/.profile - -    ## Comment and remove the folder sharing before submission -    mkdir -p /home/vagrant/Desktop/TypeChecker -    cp -r /vagrant/artefact-submission/* /home/vagrant/Desktop/TypeChecker/ -    chown -R vagrant:vagrant /home/vagrant/Desktop/TypeChecker/ -  SHELL -end -``` - -With this final step, everything has been wired. You can see one example of the result [in HTML][13] and [in PDF][14]. I have created a [GitHub repo with all the source code][15] for ease of study and reproducibility. - -I have used this setup for two conferences—the European Conference on Object-Oriented Programming (ECOOP) and the International Conference on Software Language Engineering (SLE), where we won (in both) the Disguinshed Artifact Award. - -Pinterest software engineer Baogang Song tells us about Pinrepo, Pinterest's open source solution... - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/1/automating-documentation - -作者:[Kiko Fernandez-Reyes][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/kikofernandez -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/files_documents_paper_folder.png?itok=eIJWac15 (Files in a folder) -[2]: https://en.wikipedia.org/wiki/Artifact_%28software_development%29 -[3]: https://en.wikipedia.org/wiki/Make_%28software%29 -[4]: https://www.haskell.org/haddock/ -[5]: https://pandoc.org/ -[6]: https://www.vagrantup.com/ -[7]: https://docs.haskellstack.org/en/stable/README/ -[8]: https://linux.die.net/man/1/pdflatex -[9]: http://www.bibtex.org/ -[10]: https://linux.die.net/man/1/zip -[11]: https://opensource.com/article/18/8/what-how-makefile -[12]: https://opensource.com/sites/default/files/uploads/makefile_pandoc_haddock.png (Artifact automation structure) -[13]: https://www.plresearcher.com/files/monadic-typechecker/README.html -[14]: https://www.plresearcher.com/files/monadic-typechecker/README.pdf -[15]: https://github.com/kikofernandez/pandoc-examples/tree/master/artefact-creation diff --git a/sources/tech/20200108 Detecting CPU steal time in guest virtual machines.md b/sources/tech/20200108 Detecting CPU steal time in guest virtual machines.md deleted file mode 100644 index ed532cecd5..0000000000 --- a/sources/tech/20200108 Detecting CPU steal time in guest virtual machines.md +++ /dev/null @@ -1,70 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Detecting CPU steal time in guest virtual machines) -[#]: via: (https://opensource.com/article/20/1/cpu-steal-time) -[#]: author: (Jamie Fargen https://opensource.com/users/jamiefargen) - -Detecting CPU steal time in guest virtual machines -====== -Is your VM getting all of its vitamin CPU? Use GNU top to find out -what's causing guest performance issues. -![and old computer and a new computer, representing migration to new software or hardware][1] - -CPU steal time is defined in the [GNU **top**][2] command as "time stolen from [a] VM by the hypervisor." CPU steal time occurs when a hypervisor process and a guest instance are trying to utilize the same hypervisor physical core (pCPU) at the same time. This results in less processor time available to the guest's virtual CPU (vCPU) and performance degradation for the guest. - -In today's virtualized environments (which have become nearly universal with the adoption of public and private clouds), a guest instance can experience performance CPU steal time under several scenarios: - - * Oversubscription of the hypervisor and multiple guest VMs' vCPUs with high CPU utilization are running on the same pCPUs. - * The guest vCPU and its emulator thread are pinned to the same pCPU resulting in vhost processes stealing CPU time from the guest vCPU while processing I/O. - * Hypervisor processes, like monitoring, logging, and I/O processes, are concurrently using a pCPU that is also in use by a guest VM vCPU. - - - -Normally, a systems engineer brought in to investigate an application or system performance issue will find that the system's performance is degraded due to CPU time stolen from the guest. The guest's performance issues usually become apparent in the form of low disk or network I/O performance, network packet loss, and other application performance anomalies. - -Even when a system administrator is observing the guest and the hypervisor, it can be difficult to narrow down the cause of the guest instance's degraded performance due to CPU steal time. There are a few reasons for the difficulty. First, CPU steal time is not logged by any of the commonly monitored log files. A hypervisor that is being observed may be expected to be under heavy load but steal time can occur on hypervisors that are under normal load. And finally, administrators may not be aware that hypervisor CPU contention can be observed from within the guest VM instance using GNU top. - -Fortunately, GNU top indeed makes it quite easy to detect CPU steal time on a guest VM instance. Steal time is displayed in top's output at the end of line 3, which beings with **%Cpu(s)**, as shown in the following screenshots (it is the value at the end, labeled **st**.) The first example shows a guest with little steal time: - -![Output of the top command showing low CPU steal time][3] - -Output of the top command from a guest experiencing a low CPU steal time of 0.2 st. - -This screenshot shows a guest experiencing heavy CPU steal time: - -![Output of the top command showing high CPU steal time][4] - -Output of the top command from a guest experiencing a heavy CPU steal time of 9.0 st. - -In both examples, the stress tool was executed with four processes that consumed all four vCPUs of the guest instance. In the first example, the hypervisor was relatively idle, so the guest's steal time was just 0.2. But in the second example, the stress tool was executed at the same time on the hypervisor with eight processes that consumed all eight of the hypervisors' pCPUs, which produced a high CPU steal time of 9.0. - -There is another sign of steal time in the second example: the stress utility process cannot consume ~100% of the guests' vCPUs; it can only consume 99.3%, 99.3%, 86.4%, and 74.4%, respectively. In total, this is equal to 40.3% of a guest vCPU's being stolen. This is because the hypervisor is consuming cycles on the same pCPUs that the guest vCPU's processes are using. - -### Using top to mitigate poor performance - -This example shows how the oversubscription of guest VM instances and other processes on a hypervisor can contend with a guest, and how to use GNU top to detect it based on the CPU steal time percentage on a guest VM. - -It is important to detect this type of performance degradation in a guest VM so that you can mitigate the cause of poor system and application performance. In a public cloud, the only solution might be migrating the instance or changing to an instance type with guaranteed pCPU service-level agreements (SLAs). In a private cloud, there are more options, but again, the simplest approach may be to migrate the instance to a hypervisor with lower utilization. However, if many guest instances experience high CPU steal time, you will need to make changes to how guests' and hypervisors' processes are managed to attain guest instances' performance SLAs. - -David Both explains the importance of keeping hardware cool and shares some Linux tools that can... - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/1/cpu-steal-time - -作者:[Jamie Fargen][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/jamiefargen -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/migration_innovation_computer_software.png?itok=VCFLtd0q (and old computer and a new computer, representing migration to new software or hardware) -[2]: https://en.wikipedia.org/wiki/Top_(software) -[3]: https://opensource.com/sites/default/files/uploads/cpu-steal-time_1.png (Output of the top command showing low CPU steal time) -[4]: https://opensource.com/sites/default/files/uploads/cpu-steal-time_2.png (Output of the top command showing high CPU steal time) diff --git a/sources/tech/20200109 Create demo project templates with one script.md b/sources/tech/20200109 Create demo project templates with one script.md deleted file mode 100644 index 950ec0e85f..0000000000 --- a/sources/tech/20200109 Create demo project templates with one script.md +++ /dev/null @@ -1,130 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Create demo project templates with one script) -[#]: via: (https://opensource.com/article/20/1/initsh-script) -[#]: author: (Eric D. Schabell https://opensource.com/users/eschabell) - -Create demo project templates with one script -====== -This init.sh script makes it easier to create demos to convince your -customers, team, and boss that your project is exactly what they need. -![Person using a laptop][1] - -When you're standing on a stage or doing a live demo in an online session, getting your project into a perfect-looking state may appear easy. But a lot of work goes on behind the scenes to create working, easy to use, and repeatable demo projects. - -When you're doing a demo, the technology in a project must support your bigger story about the project without failing. My fellow JBoss technology evangelists and I often have to set up different technologies, so it became necessary for us to tune some sort of generic framework or template to put these demo projects into. - -Achieving this goal was guided by three principles: - - * KISS (keep it simple, stupid) - * Consistency - * Repeatability - - - -These stem from our aim to support anyone who wants to explore and get started with a JBoss technology. Note that while the order of these principles has some significance about what is most important, they all have to balance each other. - -If one must be weighed more heavily, when using technology, it is KISS. Therefore, you will find that this principle is followed almost religiously when deciding how to solve anything within the demo project template. - -### Simple - -The demos need to have a simple set up, taking almost no effort to get them started or, more realistically, the least amount of effort possible. - -Each project requires just three steps to get going: - - 1. Download and unzip the project. - 2. Add products to the project's **installs** directory. - 3. Run **init.sh** (for Unix) or **init.bat** (for Windows) to install the project. - - - -That's it; just watch the install's output to continue with the project as you see fit. - -This setup also relies on the very smallest or most basic set of dependencies that are physically possible for Unix- and Windows-based systems—Java and Maven, nothing more than that. - -A demo is all about learning what the project in front of you does, so it must be clear and offer the possibility to explore how the project is set up, configured, and runs. Based on users' feedback over the years, full automation is not desirable, as it takes the project out of the user's learning sphere. - -There is a balance offered when installing a project with autoconfiguration and setup, but there are still some steps that allow you to pause, consider, and explore what has been done. - -### Consistent - -The only way for people to be able to jump between our various technologies and products is to have some consistency in our demo projects. A customer, partner, or interested party needs to be able to recognize a simple and clear form of project setup. - -This is done with a simple and clear project template structure: - - * **docs/** contains project documentation and screenshots. - * **installs/** is where you place needed products. - * **projects/** contains sources for services, clients, or other project-based code. - * **support/** holds all other configuration, setup, or other necessary files and utilities. - * **init.{sh|bat}** stores installation scripts needed to set up the project. - - - -That's it; every single time it will look like this. - -### Repeatable - -Nothing is worse than spending a large amount of time to provide a demo project and only being able to run it one time. Often, there is some factor that rushes a project's completion so that you have little chance to bring some sort of order to it. - -Our template allows you to develop a demo project while saving its repeatability. Note that the entire setup is done in a new directory called **target**, where you can throw it all away and just set the project up again (with the initial **init** script). - -This is a golden rule: Every demo project should be repeatable in minutes, if not less. - -### Generic demo template project - -You want to create your own awesome demo to convince your friends, team, and boss that your project is exactly what the doctor ordered? This template will provide the tools to set up simple, consistent and easily repeatable demo projects. - -### Getting started with this template - - 1. [Download and unzip it][2]. - - - -Run **init.sh** to populate a project, and see the README files that are generated for how to use it: - - -``` -`$ ./init.sh PROJECTNAME` -``` - -#### - -![Setting up your project][3] - -#### Released versions - - * v2.0—Updated to generic template project creation - * v1.0—Image added and final touches - - - -  - -![Installing the template][4] - -![Installing the template][5] - -_This article is adapted from "How to create simple, consistent, repeatable demo projects" on [Eric D. Schabell's blog][6] and is reused with permission._ - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/1/initsh-script - -作者:[Eric D. Schabell][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/eschabell -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/laptop_screen_desk_work_chat_text.png?itok=UXqIDRDD (Person using a laptop) -[2]: https://github.com/jbossdemocentral/jboss-demo-template/archive/master.zip -[3]: https://opensource.com/sites/default/files/uploads/settingup_demotemplate.png (Setting up your project) -[4]: https://opensource.com/sites/default/files/uploads/install_eric_schabell.png (Installing the template) -[5]: https://opensource.com/sites/default/files/uploads/install-2_eric_schabell.png (Installing the template) -[6]: http://www.schabell.org/2015/02/jboss-evangelist-howto-create-demo-projects.html diff --git a/sources/tech/20200110 How I upgraded my CuBox open source music server.md b/sources/tech/20200110 How I upgraded my CuBox open source music server.md deleted file mode 100644 index b4651d48c4..0000000000 --- a/sources/tech/20200110 How I upgraded my CuBox open source music server.md +++ /dev/null @@ -1,237 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (How I upgraded my CuBox open source music server) -[#]: via: (https://opensource.com/article/20/1/upgrade-cubox-open-source-music-server) -[#]: author: (Chris Hermansen https://opensource.com/users/clhermansen) - -How I upgraded my CuBox open source music server -====== -Our resident audiophile explains how he updated his CuBox music server -after more than five years of excellent use. -![open source music with piano keys background][1] - -Back in early 2014, I purchased my first [ARM-based computer][2], a [SolidRun CuBox-i4][3]. My goal for the CuBox was to have a headless device (e.g., no display) that takes up minimal space in the audio equipment shelf, makes minimal noise, and serves music files to my digital-to-analog converter (DAC) and thus to the rest of the stereo. On paper, the CuBox was a perfect fit. It is fanless, works with various Linux distros, provides a separate [eSATA interface][4] for a locally mounted hard drive and therefore leaves the USB ports free for other stuff, provides a [TOSLINK port][5] for digital audio, uses a [MicroSD card][6] (by default, anyway) for the system installation and boot drive, and comes with 2GB of RAM and a reasonably fast [i.MX6q quad-core processor][7], all in an unobtrusive 5x5x5cm black plastic box. - -And as luck would (sometimes) have it, those promises have mostly been kept. The box still runs and provides my family with a great deal of musical enjoyment. The attached hard drive contains about 275GB of music files—a bit over 7,500 FLAC files with some 300 or so MP3 files thrown in. - -As our home music server, the CuBox runs a barebones Linux server distro with Music Player Daemon ([MPD][8]) as the music-serving software, sending digital data to the DAC via the [ALSA][9] with no software mixing, up- or down-sampling, or volume control on the server. Lately, I've found it convenient to run [lighttpd][10], a lightweight, simple-to-configure HTTP server, to provide cover images to the various MPD clients that we run in the house. (But now MPD provides that capability, so that convenience may soon go away.) For the user interfaces to play music, we use [Cantata][11] on the desktop and [MPD Remote][12] (caution: it may not be open source) on our Android phones to browse, select, and play music. - -In 2017, I wrote about [my experiences using the CuBox][13]. I had tried [Voyage Linux][14], [Volumio][15], and [Archphile Linux][16], and had just moved to [Armbian][17], which at that time was based on Ubuntu 16.04 LTS (long term support). This fall, I decided it was time to upgrade the server, get the latest version of MPD, and deal with a few other bothersome details along the way. - -### The upgrade - -Given my generally great experience with Armbian, I decided to go there again for upgrade materials. There are two supported options: a Debian Buster-based server configuration and an Ubuntu 18.04 desktop configuration. Bearing in mind my desire to keep the system display-free and minimalist, I selected the Debian version. - -![Armbian versions][18] - -The download was trouble-free, and I soon had an install image in my Downloads folder. As before, I was impressed with the quality and "to the point" nature of the [Armbian documentation][19], which notes: - -> Images shall only be written with Etcher on all platforms since, unlike other tools, Etcher validates burning results **saving you from corrupted SD card contents**. - -This was my first experience using [Etcher][20], and I was duly impressed with its usability (yet another wonderful reason to use open source software). I inserted the resulting MicroSD card into the CuBox, connected the Ethernet cable, DAC, and eSATA drive, and powered it on. Soon, I could SSH into the CuBox to configure it. Talk about a painless experience! Here's what I see when I log into that machine using SSH: - -![CuBox login][21] - -In terms of configuration, I had the following objectives: - - * Finish the initial configuration - * Configure static IP addressing for the wired networking connection - * Get the installed system up to date - * Disable the wireless - * Install and configure MPD - * Install and configure lighttpd - * Listen to some music! - - - -I used the excellent [Armbian Config program][22] to carry out a bunch of these initial configuration tasks. - -![Armbian-Config screen][23] - -Choosing System presents this menu: - -![Armbian-Config settings][24] - -I used this to disable root login over SSH and enable password and public key authentication. - -In the Network subsystem, I set static IP addressing (to conform to my home router settings), and in the Personal subsystem, I changed the time zone and hostname. I probably could have used the Software subsystem to run the initial update, but I chose to exit to the shell and use apt to finish up this initial configuration with: - - -``` -sudo apt update -sudo apt upgrade -``` - -I also used apt to install MPD and lighttpd with: - - -``` -`sudo apt install mpd lighttpd` -``` - -I had my previous MPD configuration file (**/etc/mpd.conf**); generally, I prefer to use these types of older files as guides to configure a new one, rather than just plunking the old one on top of the new. In the end, there weren't many changes to make; here are the differences between the old and new files: - - -``` -clh@stereo:/etc$ diff mpd.conf.orig mpd.conf -85c85,86 -< bind_to_address               "localhost" -\--- -> #bind_to_address              "localhost" -> bind_to_address               "192.168.1.21" -241c242,249 -<       name            "My ALSA Device" -\--- ->       name            "Drop Airist R2R" ->       device          "hw:CARD=U20,DEV=0" ->       mixer_type      "none" ->       replay_gain_handler      "none" -> #     name            "Schit Bifrost 4490" -> #     device          "hw:CARD=S2,DEV=0" -> #     mixer_type      "none" -> #     replay_gain_handler      "none" -clh@stereo:/etc$ -``` - -You can see that I have two DACs (just because), and the second is commented out (and not connected). Also, I had to change **bind_to_address** so that MPD will listen over the local area network. - -As for lighttpd, I only had to change the **document-root**: - - -``` -clh@stereo:/etc/lighttpd$ diff lighttpd.conf.orig lighttpd.conf -8c8,13 -< server.document-root        = "/var/www/html" -\--- -> # Used this config documentation -> # -> # which wasn't good - wrong user name, didn't need to add -> # the mime config -> # in the end just changed the document root. -> -> server.document-root        = "/var/lib/mpd/music/" -clh@stereo:/etc/lighttpd$ -``` - -To get to the music files, I added the following line to **/etc/fstab**: - - -``` -`/dev/sda1 /mnt/eSATA ext4 rw 0 0` -``` - -and created the mount point with: - - -``` -`sudo mkdir /mnt/eSATA` -``` - -At this point, I mounted the external hard drive with: - - -``` -`sudo mount /dev/sda1` -``` - -Finally, I linked MPD's configuration directory to the music with: - - -``` -sudo rmdir /var/lib/mpd/music -sudo ln -s /mnt/eSATA/Music /var/lib/mpd/music -``` - -I used this approach because I'd rather not futz around with MPD's configuration more than I have to. - -It's a good idea to check that the music files are owned by the correct MPD user ID. Do this with: - - -``` -clh@stereo:~$ ls -ld /var/lib/mpd/music/* | head -drwxrwxrwx   5 mpd audio  4096 Jan 22  2017 /var/lib/mpd/music/Academy of St. Martin-in-the-Fields -drwxrwxrwx   3 mpd audio  4096 Jan 22  2017 /var/lib/mpd/music/Acantus -drwxrwxrwx   3 mpd audio  4096 Dec 13  2014 /var/lib/mpd/music/Afrikan_Sciences -drwxrwxrwx   5 mpd audio  4096 Sep 25  2016 /var/lib/mpd/music/Afro Celt Sound System -drwxrwxrwx   3 mpd audio  4096 Mar 11  2014 /var/lib/mpd/music/Agnes Obel -drwxrwxrwx   3 mpd audio  4096 Oct  9  2013 /var/lib/mpd/music/Alexander Malter, Dietmar Schwalke, Vladimir Spiakov, Sergej Bezrodny -drwxrwxrwx   3 mpd audio  4096 Oct  8  2013 /var/lib/mpd/music/Ali Farka Toure & Toumani Diabate -drwxrwxrwx   3 mpd audio  4096 Oct  8  2013 /var/lib/mpd/music/Ali Farka Touré with Ry Cooder -drwxrwxrwx   5 mpd audio  4096 Jan  1  2018 /var/lib/mpd/music/Amadou et Mariam -drwxrwxrwx   3 mpd audio  4096 Jul 11  2017 /var/lib/mpd/music/American Authors -clh@stereo:~$ -``` - -This looks fine (user ID **mpd**, group ID **audio**). - -Finally, to disable the wireless, I entered: - - -``` -`sudo nmcli radio wifi off` -``` - -And I'm done! Time for a reboot: - - -``` -`sudo systemctl reboot` -``` - -Once it rebooted, I used Cantata to force MPD to refresh its database. Here's what it looks like when that's done, and I'm listening to [Frameworks' latest album, _Imagine Gold_][25]: - -![Frameworks "Imagine Gold" in Cantata][26] - -Just to the left of the track listings, you can see the cover images that lighttpd serves. - -### And speaking of music - -I really do like Frameworks' latest album. It's quite similar to his previous work, and he always has the greatest hooks with very dance-able stuff and just that great bit of "yearning." It's nice to buy his stuff on Bandcamp, as usual (see link above, where you can also listen). - -Lately, I've also been buying stuff in that other great open source format, vinyl records. In particular, two fine recent albums from the [Erased Tapes][27] label, [Anne Müller's _Heliopause_][28], which is a beautiful record of her own solo cello and supporting instruments and sounds, "focusing on novel approaches to classical instrumentation," and [Penguin Cafe's _Handfuls of Night_][29], which "began life after Greenpeace commissioned [Arthur] Jeffes [of Penguin Cafe] to write four pieces of music corresponding to four breeds of penguins to help raise awareness for the endangered Antarctic seas." How could a Linux user not have music about penguins by Penguin Cafe? - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/1/upgrade-cubox-open-source-music-server - -作者:[Chris Hermansen][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/clhermansen -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/OSDC_LIFE_music_520x292_0411_ma.png?itok=v_ARy1ZT (open source music with piano keys background) -[2]: https://en.wikipedia.org/wiki/ARM_architecture -[3]: https://www.solid-run.com/nxp-family/cubox-i/ -[4]: https://en.wikipedia.org/wiki/Serial_ATA -[5]: https://en.wikipedia.org/wiki/TOSLINK -[6]: https://www.makeuseof.com/tag/5-mistakes-avoid-buying-next-microsd-card/ -[7]: https://www.nxp.com/products/processors-and-microcontrollers/arm-processors/i.mx-applications-processors/i.mx-6-processors/i.mx-6quad-processors-high-performance-3d-graphics-hd-video-arm-cortex-a9-core:i.MX6Q?&cid=ps_PRG100148_CAM262037_EETECH&gclid=CjwKCAiA27LvBRB0EiwAPc8XWfLpyKIpi4OPNrPLdmXpSynIaDP0FG2jQ9PPZ1q49ENp1CbQU2fKxxoCKtMQAvD_BwE -[8]: https://www.musicpd.org/ -[9]: https://en.wikipedia.org/wiki/Advanced_Linux_Sound_Architecture -[10]: https://www.lighttpd.net/ -[11]: https://opensource.com/article/17/8/cantata-music-linux -[12]: https://play.google.com/store/apps/details?id=net.prezz.mpr&hl=en_CA -[13]: https://opensource.com/article/17/6/armbian-cubox-i4pro -[14]: https://wiki.debian.org/Derivatives/Census/VoyageLinux -[15]: https://volumio.org/ -[16]: https://archphile.org/ -[17]: https://www.armbian.com/ -[18]: https://opensource.com/sites/default/files/uploads/armbianversions.png (Armbian versions) -[19]: https://docs.armbian.com/ -[20]: https://www.etcher.io/ -[21]: https://opensource.com/sites/default/files/uploads/cuboxlogin.png (CuBox login) -[22]: https://docs.armbian.com/User-Guide_Armbian-Config/ -[23]: https://opensource.com/sites/default/files/uploads/armbian-config.png (Armbian-config screen) -[24]: https://opensource.com/sites/default/files/uploads/armbian-config_settings.png (Armbian-config settings) -[25]: https://frameworksuk.bandcamp.com/album/imagine-gold -[26]: https://opensource.com/sites/default/files/uploads/frameworks-imaginegold.png (Frameworks "Imagine Gold" in Cantata) -[27]: https://www.erasedtapes.com/ -[28]: https://www.erasedtapes.com/release/eratp128-anne-mueller-heliopause -[29]: https://www.erasedtapes.com/release/eratp127-penguin-cafe-handfuls-of-night diff --git a/sources/tech/20200113 Use this script to create, save, and run different rsync configurations via named profiles.md b/sources/tech/20200113 Use this script to create, save, and run different rsync configurations via named profiles.md deleted file mode 100644 index 3b4e5fc6e4..0000000000 --- a/sources/tech/20200113 Use this script to create, save, and run different rsync configurations via named profiles.md +++ /dev/null @@ -1,380 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Use this script to create, save, and run different rsync configurations via named profiles) -[#]: via: (https://opensource.com/article/20/1/create-save-run-rsync-configurations) -[#]: author: (Petr Beránek https://opensource.com/users/pberanek) - -Use this script to create, save, and run different rsync configurations via named profiles -====== -A quick explanation of the rpf script. -![Person drinking a hat drink at the computer][1] - -The **rpf** script allows you to create, save, and run different rsync configurations via named profiles. - -For example, create a new profile named **backup** by typing **rpf -c backup**. Assume that the username is **user**. - -**rpf** creates the following directories: - - * **/home/user/.rpf** - * **/home/user/.rpf/shared** where you can place config files shared by multiple profiles - * **/home/user/.rpf/profiles** where all profiles are saved as subdirectories - - - -**rpf** also created **/home/user/.rpf/profiles/backup** that contains the files **conf** and **excluded**. - -The **conf** file defines rsync's configuration: - - -``` -# rsync config template -# -# Write each rsync option on separate line. For option details see man rsync. -# Empty lines and lines starting with # are ignored. Dynamic references -# (e.g. using command substitution) are not supported. -# -# Config files shared between different profiles should be saved in -# /home/user/.rpf/shared -# -# Example configuration: -# -\--verbose -\--archive -\--human-readable -# exclude all files that match pattern in: -\--exclude-from=/home/user/.rpf/profiles/backup/exclude -\--relative -# perform trial run, make no changes -\--dry-run -# source, e.g. -/home/user -# destination, e.g. -/mnt/usb_drive/users_backup -``` - -Now you can edit, add, or remove rsync options as needed. - -In **exclude**, you can define paths or patterns of files and directories you want to exclude from the transfer. To exclude **Trash** and **Downloads**, add the following lines: - - -``` -\- /home/user/.local/share/Trash -\- /home/user/Downloads -``` - -Or to transfer only **Documents** and **Projects** and exclude everything else: - - -``` -\+ /home/user/Documents -\+ /home/user/Projects -\- ** -``` - -For subtler pattern configurations, see the FILTER RULES section of **man rsync**, or Google for tutorials. - -When you are ready, you can start rsync transfer by typing **rpf backup**. - -That's it. - -For additional **rpf** options, see **rpf --help**. - -### Security - -Please be aware that **rpf** is not secure against code injection in the **conf** file. Any additional code (e.g., **; ./run_evil_script**) will also be executed. Therefore, protect your **.rpf/** config directory from malicious users by implementing appropriate permissions. Moreover, exploiting this behavior can lead to unexpected side effects. - -### The script - - -``` -#!/usr/bin/env bash -# -# Simple rsync profiler -# -# Author: [petrberanek.mail@gmail.com][2] (Petr Beranek) -# -# For usage details type `rpf --help' -# - -set -o errexit -set -o nounset - -__name=$(basename "${0}") -__version="0.1" - -config_dir="${HOME}/.rpf" -profiles_dir="${config_dir}/profiles" -shared_dir="${config_dir}/shared" -help="\ -Usage: ${__name} [OPTION...] PROFILE_NAME - -${__name} is simple rsync profiler that stores your different rsync -configurations in named profiles. - -Options: -    -c, --create-profile PROFILE_NAME   create new profile (profile data -                            are stored in ${config_dir}/PROFILE_NAME). -                            Profile name can contain alphanumeric -                            characters only. -    -s, --show-profile-config PROFILE_NAME  show content of profile -                            configuration file (stored in -                            ${config_dir}/PROFILE_NAME) -    -l, --list-profiles     list all available profiles -    -h, --help              show this help - -Example: -    Create new profile by typing -    ${__name} -c PROFILE_NAME - -    edit its config files stored by default in -    ${profiles_dir}/PROFILE_NAME - -    and then run it by typing -    ${__name} PROFILE_NAME - -    That's it. - -${__name} comes with ABSOLUTELY NO WARRANTY. This is free software, -and you are welcome to redistribute it under certain conditions. See -the GNU General Public Licence for details. - -Email bug reports or enhancement requests to [petrberanek.mail@gmail.com][2]. -" - -create_profile() { -    # Create dir with given profile name and with default content. -    # -    # Arguments: $1 -- profile name -    # -    # Creates files: conf, exclude -    # -    # If dir with the same name already exists, exits with error. -    # - -    local profile_name="${1}" -    local profile_dir="${profiles_dir}/${profile_name}" - -    # create default rpf dirs if missing -    if [[ ! -d "${profiles_dir}" ]]; then -        echo "Creating ${profiles_dir}" -        mkdir --parents "${profiles_dir}" -    fi -    if [[ ! -d "${shared_dir}" ]]; then -        echo "Creating ${shared_dir}" -        mkdir --parents "${shared_dir}" -    fi - -    # don't overwrite existing profile -    if [[ -d "${profile_dir}" ]]; then -        echo "${__name}: error: profile already exists." -        exit 1 -    fi - -    echo "Creating ${profile_dir}" -    mkdir "${profile_dir}" - -    # create `conf' template -    local conf="${profile_dir}/conf" -    echo "Creating ${conf}" -    cat << EOF > "${conf}" -# rsync config template -# -# Write each rsync option on separate line. For details see man rsync. -# Empty lines and lines starting with # are ignored. Dynamic references -# (e.g. using command substitution) are not supported. -# -# Config files shared between different profiles should be saved in -# ${shared_dir} -# -# Example configuration: -# -\--verbose -\--archive -\--human-readable -# file with patterns of files and directories in source excluded -# from transfer -\--exclude-from="${profiles_dir}/${profile_name}/exclude" -\--relative -# perform trial run, make no changes -\--dry-run -# source, e.g. -${HOME} -# destination, e.g. -/mnt/usb_drive/my_backup -EOF - -    # create `exclude' template -    local exclude="${profile_dir}/exclude" -    echo "Creating ${exclude}" -    cat << EOF > "${exclude}" -# \\`exclude' template -# -# Lines starting with # or ; are ignored. For details see man rsync, -# section FILTER RULES. -# -EOF - -    # all done -    echo "OK" -    echo "Edit profile config files in ${profile_dir} to fit your needs." -} - -list_profiles() { -    # Show all available rpf profiles. -    # -    # Assumes that all dirs in $profiles_dir are profiles. -    # - -    for item in "${profiles_dir}"/*; do -        if [[ -d "${item}" ]]; then -            basename "${item}" -        fi -    done -} - -show_help() { echo "${help}"; } - -show_profile_config() { -    # Show configuration file for given profile. -    # -    # Arguments: $1 -- profile name -    # - -    local profile_name="${1}" -    less "${profiles_dir}/${profile_name}/conf" -} - -check_profile_name() { -    # Check that name is not empty and contains alphanumeric chars only. -    # -    # Arguments: $1 -- profile name -    # -    # If test fails, exits with error. -    # - -    if [[ -z "${1}" ]]; then -        echo "${__name}: error: empty profile name." -        exit 1 -    elif [[ "${1}" =~ [^a-zA-Z0-9] ]]; then -        echo "${__name}: error: non-alphanumeric characters in profile name." -        exit 1 -    fi -} - -check_profile_exists() { -    # Check that $profile_name exists and is a directory. -    # -    # Arguments: $1 -- profile name -    # -    # If test fails, exits with error. -    # - -    local profile_name="${1}" -    if [[ ! -d "${profiles_dir}/${profile_name}" ]]; then -        echo "${__name}: error: profile ${profile_name} does not exist." -        exit 1 -    fi -} - -check_num_args() { -    # Check that value of $1 = number of arguments (excluding $1) -    # -    # Arguments: $1 -- limit (positive int) -    # -    # If test fails, exits with error. -    # - -    local num_args=$(( ${#} - 1 ))  # do not count $1 in total num of args -    if [[ "${1}" -ne "${num_args}" ]]; then -        echo "${__name}: error: expected num args: ${1}, received: $num_args" -        exit 1 -    fi -} - -run_rsync() { -    # Run rsync with configuration coresponding to given profile name. -    # -    # Arguments: $1 -- profile name -    # - -    local profile_name="${1}" -    local visual_div="==============================" -    local parsed_args -    parsed_args=$(grep --invert-match '^#' "${profiles_dir}/${profile_name}/conf" \ -                    | tr '\n' ' ') - -    # Print debug info -    echo "${visual_div}" -    echo "${__name} version: ${__version}" -    echo "args: ${parsed_args}" -    echo "${visual_div}" - -    # Expand $parsed_args - each item from conf file becomes rsync argument -    # shellcheck disable=SC2086 -    rsync ${parsed_args} -} - -if [[ "${#}" == 0 ]]; then -    show_help -    exit 1 -fi -while [[ "${#}" -gt 0 ]]; do -    case "${1}" in -        -c | --create-profile) -            check_num_args 2 "${@}" -            shift -            check_profile_name "${1:-}" # If $1 is not declared, set it empty. -            create_profile "${1}" -            exit 0;; -        -s | --show-profile-config) -            check_num_args 2 "${@}" -            shift -            check_profile_name "${1:-}" -            check_profile_exists "${1}" -            show_profile_config "${1}" -            exit 0;; -        -l | --list-profiles) -            check_num_args 1 "${@}" -            list_profiles -            exit 0;; -        -h | --help) -            check_num_args 1 "${@}" -            show_help -            exit 0;; -        -*) -            echo "${__name}: error: unknown option \\`${1}'" -            exit 1;; -        *) -            check_num_args 1 "${@}" -            check_profile_name "${1:-}" -            check_profile_exists "${1}" -            run_rsync "${1}" -            exit 0;; -    esac -    shift -done -``` - -* * * - -This was originally published in [Petr Beranek's GitHub repository][3] and it is licensed under GPLv3. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/1/create-save-run-rsync-configurations - -作者:[Petr Beránek][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/pberanek -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/coffee_tea_laptop_computer_work_desk.png?itok=D5yMx_Dr (Person drinking a hat drink at the computer) -[2]: mailto:petrberanek.mail@gmail.com -[3]: https://github.com/beranep/rpf diff --git a/sources/tech/20200114 LMMS- A Free - Open Source Digital Audio Workstation (DAW).md b/sources/tech/20200114 LMMS- A Free - Open Source Digital Audio Workstation (DAW).md deleted file mode 100644 index 1b3358f7bd..0000000000 --- a/sources/tech/20200114 LMMS- A Free - Open Source Digital Audio Workstation (DAW).md +++ /dev/null @@ -1,127 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (LMMS: A Free & Open Source Digital Audio Workstation (DAW)) -[#]: via: (https://itsfoss.com/lmms/) -[#]: author: (Ankush Das https://itsfoss.com/author/ankush/) - -LMMS: A Free & Open Source Digital Audio Workstation (DAW) -====== - -_**In this week’s Linux application highlight, we take a look at a free and open-source DAW that helps make music with most of the essential features offered.**_ - -### LMMS: A Free & Open Source Software To Help Make Music - -[LMMS][1] is a cross-platform open source [DAW][2] hosted on [GitHub][3]. It is completely free to use and you do not need to purchase any kind of license to use it. - -If you’re curious, there’s no specific full-form for “LMMS” acronym but you can consider it along the lines of “**Let’s Make Music**” or formerly known as “**Linux MultiMedia Studio**” as stated in one of their [official forum post][4] years back. - -So, with the help of LMMS, you should be able to work on making music on Linux. - -Of course, you should not expect a free DAW to replace a full-fledged professional DAW bundled with proprietary plugins – but for starters, it isn’t a bad one. - -![][5] - -If you’re used to other DAWs, it might take a while to get comfortable with the user interface. For instance, I’ve used [Studio One][6] and [Mixcraft][7] as a beginner – so the UI of LMMS looked different. - -But, the good news is – you get a [detailed official documentation][8] of LMMS. So, if you have trouble learning how it works, simply refer to the official documentation available on their [website][1]. - -**Recommended Read:** - -![][9] - -#### [Best Audio Editors For Linux][10] - -These awesome free and open source audio editors let you create awesome music in Linux. Check out the list of top Linux audio editors. - -### Features of LMMS - -![][11] - -Just like any other DAW, you will find plugins, samples to use, instruments, and MIDI support. However, it is indeed a long list of features. So, instead of taking a whole day explaining it, let me highlight all the necessary features that LMMS provides. - - * Ability to add notes within the project without needing a separate note-taking app - * Bundled free plugins to use - * Note playback via MIDI or typing keyboard - * MIDI Editor - * Separate editor for instruments - * Track Automation support - * 64-bit VST instrument support (for wine-based VSTs) - * Built-in synthesizers that include some popular emulators for Yamaha and Roland - * Feature-rich audio plugins built-in - * Demo projects to easily get started - * Several samples included - * Native multisample support for SoundFont (SF2), Giga (GIG) and Gravis UltraSound (GUS) formats for high-quality instrument patches and banks (only if it’s relevant for your work) - * [LADSPA][12] plugin support - * You will also find the essential delay/reverb/compressor/limiter and distortion tools built-in - * Spectrum analyzer - - - -You can find some extensive [documentation on using LMMS][8]. If you face any difficulties, LMMS also has its [own forum][13] where you can ask for help. - -### Installing LMMS on Linux - -![][14] - -You can also find LMMS listed in the software center of your distribution- however, it might not feature the latest version. - -To get the latest LMMS version, you can download the .**AppImage** file from the [official download page][15]. If you want to take a look at the latest or previous releases on GitHub, you can find those in their [releases][16] section. - -If you want to use the AppImage file, you can refer to our guide on [using AppImage file][17]. - -You may also try [installing the Flatpak package][18] available on [Flathub][19]. - -[Download LMMS][15] - -### My Thoughts On LMMS - -![][20] - -Even though this is a feature-rich free and open-source DAW – personally, I found the UX a little dull. - -Of course, technically, it offers quite a lot of features and this could be useful for anyone who does not want to break their wallet to produce music. And, after all, it is an open-source solution. - -If you want a full-fledged professional DAW using the VST plugins, you might just hold on to Windows/Mac (if you’re used to it) because you still need to utilize Wine on Linux in order to make sure that the 64-bit VSTs work. - -**Wrapping Up** - -That being said, I’m not a professional music producer – so feel free to explore LMMS on Linux and make the most out of it without spending a penny. - -If you’ve used LMMS (or any similar DAW), let me know your thoughts in the comments below. - --------------------------------------------------------------------------------- - -via: https://itsfoss.com/lmms/ - -作者:[Ankush Das][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://itsfoss.com/author/ankush/ -[b]: https://github.com/lujun9972 -[1]: https://lmms.io/ -[2]: https://en.wikipedia.org/wiki/Digital_audio_workstation -[3]: https://github.com/LMMS/lmms -[4]: https://lmms.io/forum/viewtopic.php?t=5908 -[5]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/01/lmms-screenshot.png?ssl=1 -[6]: https://www.presonus.com/products/studio-one/ -[7]: https://acoustica.com/mixcraft -[8]: https://docs.lmms.io/user-manual/ -[9]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2019/01/linux-audio-editors.jpeg?fit=800%2C450&ssl=1 -[10]: https://itsfoss.com/best-audio-editors-linux/ -[11]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/01/lmms-project.png?ssl=1 -[12]: https://www.ladspa.org/ -[13]: https://lmms.io/forum/ -[14]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/01/lmms-setup.jpg?ssl=1 -[15]: https://lmms.io/download#linux -[16]: https://github.com/LMMS/lmms/releases -[17]: https://itsfoss.com/use-appimage-linux/ -[18]: https://itsfoss.com/flatpak-guide/ -[19]: https://flathub.org/apps/details/io.lmms.LMMS -[20]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/01/lmms-midi-editor.png?ssl=1 diff --git a/sources/tech/20200116 Automating Helm deployments with Bash.md b/sources/tech/20200116 Automating Helm deployments with Bash.md deleted file mode 100644 index a8e8567b0b..0000000000 --- a/sources/tech/20200116 Automating Helm deployments with Bash.md +++ /dev/null @@ -1,385 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Automating Helm deployments with Bash) -[#]: via: (https://opensource.com/article/20/1/automating-helm-deployments-bash) -[#]: author: (Darin London https://opensource.com/users/dmlond) - -Automating Helm deployments with Bash -====== -This Bash script enables developers to focus on their code rather than -the deployment logic in each project. -![Person using a laptop][1] - -Some of our applications are hosted in a [Kubernetes][2] cluster, and we use GitLab Continuous Integration (CI) to automate deployments and Helm 2 to deploy our applications. Helm charts enable the storage of templates of Kubernetes object YAML files with variables that can be programmatically set from command-line arguments passed when the chart is used during deployments. This allows us to store critical secrets in GitLab-protected environment variables or in Hashicorp Vault and use them within the CI deployment job. - -Our deployment job uses a [Bash script to run the deployment process][3]. This Bash script presents a number of features that are valuable for use within a CI/CD environment: - - 1. It facilitates use outside of the CI/CD environment. GitLab CI and other CI systems store job steps as lines of executable shell code in a "script" section of a CI text file (.gitlab-ci.yml, for example). While this is useful to ensure basic executable steps can be stored without external dependencies, it prevents developers from using the same code in testing or manual deployment scenarios. In addition, many advanced features of the Bash system cannot be easily used in these script sections. - 2. It facilitates unit testing of important deployment processes. None of the CI systems provide a way of testing whether deployment logic performs as expected. Carefully constructed [Bash scripts can be unit tested with BATS][4]. - 3. It facilitates reuse of individual functions within the script. The last section uses a guard clause, **if [[ "${BASH_SOURCE[0]}" == "${0}" ]]**, which prevents the **run_main** function from being called when the script is not being executed. This allows the script to be sourced, which then allows users to make use of the many useful individual functions within it. This is crucial for proper BATS testing. - 4. It uses environment variables to protect sensitive information and make the script reusable across many projects and project application environments. GitLab CI makes many of these environment variables available when run by a GitLab CI runner. These must be manually set before using the script outside GitLab CI. - - - -The script performs all tasks required to deploy a Helm chart for an application to Kubernetes and waits for the deployment to be ready using kubectl and Helm. Helm runs with a local Tiller installation instead of running Tiller in the Kubernetes cluster. The Kubernetes **HELM_USER** and **HELM_PASSWORD** are used to log into the Kubernetes **CLUSTER_SERVER** and **PROJECT_NAMESPACE**. Tiller is started, Helm is initialized in client-only mode, and its repo is updated. The template is linted with Helm to ensure that syntax errors have not been accidentally committed. The template is then deployed in declarative mode, using **helm upgrade --install**. Helm waits for the deployment to be ready using the **\--wait flag**. - -The script ensures that certain template variables are set during the deployment and allows special project-specific variables to be specified in the GitLab CI **PROJECT_SPECIFIC_DEPLOY_ARGS** environment variable. All environment variables required in the deployment are checked early in the script execution, and the script exits with a non-zero exit status if any are missing. - -This script has been used in multiple GitLab CI-hosted projects. It has helped us focus on our code rather than the deployment logic in each project. - -### The script - - -``` -#!/bin/bash - -# MIT License -# -# Copyright (c) 2019 Darin London -# -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice shall be included in all -# copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. - -log_level_for() -{ -  case "${1}" in -    "error") -      echo 1 -      ;; - -    "warn") -      echo 2 -      ;; - -    "debug") -      echo 3 -      ;; - -    "info") -      echo 4 -      ;; -    *) -      echo -1 -      ;; -  esac -} - -current_log_level() -{ -  log_level_for "${LOG_LEVEL}" -} - -error() -{ -  [ $(log_level_for "error") -le $(current_log_level) ] &&  echo "${1}" >&2 -} - -warn() -{ -  [ $(log_level_for "warn") -le $(current_log_level) ] &&  echo "${1}" >&2 -} - -debug() -{ -  [ $(log_level_for "debug") -le $(current_log_level) ] &&  echo "${1}" >&2 -} - -info() -{ -  [ $(log_level_for "info") -le $(current_log_level) ] &&  echo "${1}" >&2 -} - -check_required_environment() { -  local required_env="${1}" - -  for reqvar in $required_env -  do -    if [ -z "${!reqvar}" ] -    then -      error "missing ENVIRONMENT ${reqvar}!" -      return 1 -    fi -  done -} - -check_default_environment() { -  local required_env="${1}" - -  for varpair in $required_env -  do -    local manual_environment=$(echo "${varpair}" | cut -d':' -f1) -    local default_if_not_set=$(echo "${varpair}" | cut -d':' -f2) -    if [ -z "${!manual_environment}" ] && [ -z "${!default_if_not_set}" ] -    then -      error "missing default ENVIRONMENT, set ${manual_environment} or ${default_if_not_set}!" -      return 1 -    fi -  done -} - -dry_run() { -  [ ${DRY_RUN} ] && info "skipping for dry run" && return -  return 1 -} - -init_tiller() { -  info "initializing local tiller" -  dry_run && return - -  export TILLER_NAMESPACE=$PROJECT_NAMESPACE -  export HELM_HOST=localhost:44134 -  # -  # run tiller locally instead of in the cluster -  tiller --storage=secret & -  export TILLER_PID=$! -  sleep 1 -  kill -0 ${TILLER_PID} -  if [ $? -gt 0 ] -  then -    error "tiller not running!" -    return 1 -  fi -} - -init_helm() { -  info "initializing helm" -  dry_run && return - -  helm init --client-only -  if [ $? -gt 0 ] -  then -    error "could not initialize helm" -    return 1 -  fi -} - -init_helm_with_tiller() { -  init_tiller || return 1 -  init_helm || return 1 -  info "updating helm client repository information" -  dry_run && return -  helm repo update -  if [ $? -gt 0 ] -  then -    error "could not update helm repository information" -    return 1 -  fi -} - -decommission_tiller() { -  if [ -n "${TILLER_PID}" ] -  then -    kill ${TILLER_PID} -    if [ $? -gt 0 ] -    then -     return -    fi -  fi -} - -check_required_deploy_arg_environment() { -  [ -z "${PROJECT_SPECIFIC_DEPLOY_ARGS}" ] && return -  for reqvar in ${PROJECT_SPECIFIC_DEPLOY_ARGS} -  do -    if [ -z ${!reqvar} ] -    then -      error "missing Deployment ENVIRONMENT ${reqvar} required!" -      return 1 -    fi -  done -} - -project_specific_deploy_args() { -  [ -z "${PROJECT_SPECIFIC_DEPLOY_ARGS}" ] && echo "" && return - -  extraArgs='' -  for deploy_arg_key in ${PROJECT_SPECIFIC_DEPLOY_ARGS} -  do -    extraArgs="${extraArgs} --set $(echo "${deploy_arg_key}" | sed 's/__/\\./g' | tr '[:upper:]' '[:lower:]')=${!deploy_arg_key}" -  done - -  echo "${extraArgs}" -} - -check_required_cluster_login_environment() { -  check_required_environment "HELM_TOKEN HELM_USER PROJECT_NAMESPACE CLUSTER_SERVER" || return 1 -} - -cluster_login() { -  info "authenticating ${HELM_USER} in ${PROJECT_NAMESPACE}" -  dry_run && return - -  kubectl config set-cluster ci_kube --server="${CLUSTER_SERVER}" || return 1 -  kubectl config set-credentials "${HELM_USER}" --token="${HELM_TOKEN}" || return 1 -  kubectl config set-context ${PROJECT_NAMESPACE}-deploy  --cluster=ci_kube --namespace=${PROJECT_NAMESPACE} --user=${HELM_USER} || return 1 -  kubectl config use-context ${PROJECT_NAMESPACE}-deploy || return 1 -} - -lint_template() { -  info "linting template" -  dry_run && return - -  helm lint ${CI_PROJECT_DIR}/helm-chart/${CI_PROJECT_NAME} -} - -check_required_image_pull_environment() { -  if [ "${CI_PROJECT_VISIBILITY}" == "public" ] -  then -    check_required_environment "CI_REGISTRY CI_DEPLOY_USER CI_DEPLOY_PASSWORD" || return 1 -  fi -} - -image_pull_settings() { -  if [ "${CI_PROJECT_VISIBILITY}" == "public" ] -  then -    echo "" -  else -    echo "--set registry.root=${CI_REGISTRY} --set registry.secret.username=${CI_DEPLOY_USER} --set registry.secret.password=${CI_DEPLOY_PASSWORD}" -  fi -} - -deployment_name() { -  if [ -n "${DEPLOYMENT_NAME}" ] -  then -    echo "${DEPLOYMENT_NAME}" -  else -    echo "${CI_ENVIRONMENT_SLUG}-${CI_PROJECT_NAME}" -  fi -} - -deploy_template() { -  info "deploying $(deployment_name) from template" -  if dry_run -  then -    info "helm upgrade --force --recreate-pods --debug --set image.repository=${CI_REGISTRY_IMAGE}/${CI_PROJECT_NAME} --set image.tag=${CI_COMMIT_SHORT_SHA} --set environment=${CI_ENVIRONMENT_NAME} --set-string git_commit=${CI_COMMIT_SHORT_SHA} --set git_ref=${CI_COMMIT_REF_SLUG} --set ci_job_id=${CI_JOB_ID} $(environment_url_settings) $(image_pull_settings) $(project_specific_deploy_args) --wait --install $(deployment_name) ${CI_PROJECT_DIR}/helm-chart/${CI_PROJECT_NAME}" -  else -    helm upgrade --force --recreate-pods --debug \ -    --set image.repository="${CI_REGISTRY_IMAGE}/${CI_PROJECT_NAME}" \ -    --set image.tag="${CI_COMMIT_SHORT_SHA}" \ -    --set environment="${CI_ENVIRONMENT_NAME}" \ -    --set-string git_commit="${CI_COMMIT_SHORT_SHA}" \ -    --set git_ref="${CI_COMMIT_REF_SLUG}" \ -    --set ci_job_id="${CI_JOB_ID}" \ -    $(image_pull_settings) \ -    $(project_specific_deploy_args) \ -    --wait \ -    --install $(deployment_name) ${CI_PROJECT_DIR}/helm-chart/${CI_PROJECT_NAME} -  fi -} - -get_pods() { -  kubectl get pods -l ci_job_id="${CI_JOB_ID}" -} - -watch_deployment() { -  local watch_deployment=$(deployment_name) -  if [ -n "${WATCH_DEPLOYMENT}" ] -  then -    watch_deployment="${WATCH_DEPLOYMENT}" -  fi -  info "waiting until deployment ${watch_deployment} is ready" -  dry_run && return - -  kubectl rollout status deployment/${watch_deployment} -w || return 1 -  sleep 5 -  get_pods || return 1 -  # see what has been deployed -  kubectl describe deployment -l app=${CI_PROJECT_NAME},environment=${CI_ENVIRONMENT_NAME},git_commit=${CI_COMMIT_SHORT_SHA} || return 1 -  if [ -n "${CI_ENVIRONMENT_URL}" ] -  then -    kubectl describe service -l app=${CI_PROJECT_NAME},environment=${CI_ENVIRONMENT_NAME} || return 1 -    kubectl describe route -l app=${CI_PROJECT_NAME},environment=${CI_ENVIRONMENT_NAME} || return 1 -  fi -} - -run_main() { -  check_required_environment "CI_PROJECT_NAME CI_PROJECT_DIR CI_COMMIT_REF_SLUG CI_REGISTRY_IMAGE CI_ENVIRONMENT_NAME CI_JOB_ID CI_COMMIT_SHORT_SHA" || return 1 -  check_default_environment "WATCH_DEPLOYMENT:CI_ENVIRONMENT_SLUG" || return 1 -  check_required_deploy_arg_environment || return 1 -  check_required_cluster_login_environment || return 1 -  check_required_image_pull_environment || return 1 -  cluster_login -  if [ $? -gt 0 ] -  then -    error "could not login kubectl" -    return 1 -  fi - -  init_helm_with_tiller -  if [ $? -gt 0 ] -  then -    error "could not initialize helm" -    return 1 -  fi - -  lint_template -  if [ $? -gt 0 ] -  then -    error "linting failed" -    return 1 -  fi - -  deploy_template -  if [ $? -gt 0 ] -  then -    error "could not deploy template" -    return 1 -  fi - -  watch_deployment -  if [ $? -gt 0 ] -  then -    error "could not watch deployment" -    return 1 -  fi - -  decommission_tiller -  info "ALL Complete!" -  return -} - -if [[ "${BASH_SOURCE[0]}" == "${0}" ]] -then -  run_main -  if [ $? -gt 0 ] -  then -    exit 1 -  fi -fi -``` - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/1/automating-helm-deployments-bash - -作者:[Darin London][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/dmlond -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/laptop_screen_desk_work_chat_text.png?itok=UXqIDRDD (Person using a laptop) -[2]: https://opensource.com/resources/what-is-kubernetes -[3]: https://gist.github.com/dmlond/016ff7c3757fee00f9d02e36e6c0c298 -[4]: https://opensource.com/article/19/2/testing-bash-bats diff --git a/sources/tech/20200118 Zorin Grid Lets You Remotely Manage Multiple Zorin OS Computers.md b/sources/tech/20200118 Zorin Grid Lets You Remotely Manage Multiple Zorin OS Computers.md deleted file mode 100644 index 184b68d84e..0000000000 --- a/sources/tech/20200118 Zorin Grid Lets You Remotely Manage Multiple Zorin OS Computers.md +++ /dev/null @@ -1,108 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Zorin Grid Lets You Remotely Manage Multiple Zorin OS Computers) -[#]: via: (https://itsfoss.com/zorin-grid/) -[#]: author: (Ankush Das https://itsfoss.com/author/ankush/) - -Zorin Grid Lets You Remotely Manage Multiple Zorin OS Computers -====== - -One of the major hurdles institutes face is in managing and updating multiple Linux systems from a central point. - -Well, Zorin OS has come up with a new cloud-based tool that will help you manage multiple computers running Zorin OS from one single interface. You can update the systems, install apps and configuration all systems remotely using this tool called [Zorin Grid][1]. - -### Zorin Grid: Manage a fleet of Zorin OS computers remotely - -![][2] - -**Zorin Grid is a tool that makes it simple to set up, manage, and secure a fleet of Zorin OS-powered computers in businesses, schools, and organizations.** - -When it comes to managing Linux distributions (here, Zorin OS) on a multitude of systems for an organization – it is quite time-consuming. - -If it will be easier to manage Linux systems, more organizations will be interested to switch using Linux just like the [Italian city Vicenza replaced Windows by Zorin OS][3]. - -For the very same reason, the Zorin team decided to create ‘**Zorin Grid**‘ with the help of which every school, enterprises, organizations, and businesses will be able to easily manage their Zorin OS-powered machines. - -### Zorin Grid features - -![Zorin Grid Features][4] - -You might have guessed what it is capable of – but let me highlight the key features of Zorin Grid as per its official webpage: - - * Install and Remove Apps - * Set software update and security patch policies - * Monitor computer status - * Enforce security policies - * Keep track of software and hardware inventory - * Set desktop settings - * Organize computers into groups (for teams and departments) - * Role-based access control and audit logging - - - -In addition to these, you will be able to do a couple more things using the Zorin Grid service. But, it looks like most of the essential tasks will be covered by Zorin Grid. - -### How does Zorin Grid work? - -![][5] - -Zorin Grid is a cloud based software as a service. Zorin will be charging a monthly subscription fee for each computer managed by Zorin Grid in an organization. - -You’ll have to install the Zorin Grid client on all the systems that you want to manage. Since it is cloud-based, you can manage all the Zorin systems on your grid from a web browser by logging into you Zorin Grid account. - -You choose how to configure the computers once and the Zorin Grid applies the same configuration to all or specific computers in your organization. - -The price has not been finalized. [Artyom Zorin][6], **CEO of Zorin Group, told It’s FOSS** that schools and non-profit organizations will get Zorin Grid for a reduced pricing. - -While client-side software for Zorin Grid will be open source, the Zorin Grid server won’t be open source initially. Releasing it under an open source license is _tentatively_ on their roadmap. - -Artyom also told that they **plan to support other Linux distributions starting with Ubuntu and Ubuntu-based distros** after launching Zorin Grid for Zorin OS systems this summer. - -In case you decide to migrate from Windows to Zorin OS for your organization or business, you will find a [useful migration guide][7] by the Zorin OS team to help you switch to Linux. - -[Zorin Grid][1] - -**Wrapping Up** - -Let me summarize all the important points about Zorin Grid: - - * Zorin Grid is an upcoming cloud based service that lets you manage multiple Zorin OS systems. - * It’s a premium service that charges for each computer used. The pricing is not determined yet. - * Educational institutes and non-profit organizations can get Zorin Grid for a reduced pricing. - * Initially it can only handle Zorin OS. Other Ubuntu-based distributions are on the road-map but there is no definite timeline for that. - * The service should be available in the summer 2020. - * Zorin Grid server won’t be open source initially. - - - -Zorin Grid looks to be an impressive premium tool for organizations or businesses that want to use Linux while also being able to maintain their systems easily. - -Personally, I wouldn’t mind paying for the service if it makes deploying and using Linux easier, in general. - -Of course, it does not support every Linux distro as of yet – but it is indeed a promising service to keep an eye out for. - -What do you think about it? Do you know of a better alternative to Zorin Grid? Do share your views in the comments. - --------------------------------------------------------------------------------- - -via: https://itsfoss.com/zorin-grid/ - -作者:[Ankush Das][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://itsfoss.com/author/ankush/ -[b]: https://github.com/lujun9972 -[1]: https://zorinos.com/grid/ -[2]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/01/zorin-grid-dashboard.png?ssl=1 -[3]: https://itsfoss.com/vicenza-windows-zorin/ -[4]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/01/zorin_grid_features.jpg?ssl=1 -[5]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/01/zorin-os-computers.jpg?ssl=1 -[6]: https://itsfoss.com/zorin-os-interview/ -[7]: https://zorinos.com/help/switch-your-organization-to-zorin-os/ diff --git a/sources/tech/20200120 Learning about Partitions and How to Create Them for Fedora.md b/sources/tech/20200120 Learning about Partitions and How to Create Them for Fedora.md deleted file mode 100644 index 93fa25b3ef..0000000000 --- a/sources/tech/20200120 Learning about Partitions and How to Create Them for Fedora.md +++ /dev/null @@ -1,141 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Learning about Partitions and How to Create Them for Fedora) -[#]: via: (https://fedoramagazine.org/learning-about-partitions-and-how-to-create-them-for-fedora/) -[#]: author: (Gregory Bartholomew https://fedoramagazine.org/author/glb/) - -Learning about Partitions and How to Create Them for Fedora -====== - -![][1] - -Operating system distributions try to craft a one size fits all partition layout for their file systems. Distributions cannot know the details about how your hardware is configured or how you use your system though. Do you have more than one storage drive? If so, you might be able to get a performance benefit by putting the write-heavy partitions (_var_ and _swap_ for example) on a separate drive from the others that tend to be more read-intensive since most drives cannot read and write at the same time. Or maybe you are running a database and have a small solid-state drive that would improve the database’s performance if its files are stored on the SSD. - -The following sections attempt to describe in brief some of the historical reasons for separating some parts of the file system out into separate partitions so that you can make a more informed decision when you install your Linux operating system. - -If you know more (or contradictory) historical details about the partitioning decisions that shaped the Linux operating systems used today, contribute what you know below in the comments section! - -### Common partitions and why or why not to create them - -#### The boot partition - -One of the reasons for putting the ***/*_boot_ directory on a separate partition was to ensure that the boot loader and kernel were located within [the first 1024 cylinders of the disk][2]. Most modern computers do not have the 1024 cylinder restriction. So for most people, this concern is no longer relevant. However, modern UEFI-based computers have [a different restriction][3] that makes it necessary to have a separate partition for the boot loader. UEFI-based computers require that the boot loader ([which can be the Linux kernel directly][4]) be on a FAT-formatted file system. The Linux operating system, however, requires a POSIX-compliant file system that can designate access permissions to individual files. Since [FAT file systems do not support access permissions][5], the boot loader must be on a separate file system than the rest of the operating system on modern UEFI-based computers. A single partition cannot be [formatted][6] with more than one type of file system. - -#### The var partition - -One of the historical reasons for [putting the /var directory on a separate partition][7] was to prevent files that were frequently written to (_/var/log/*_ for example) from filling up the entire drive. Since modern drives tend to be much larger and since other means like [log rotation][8] and [disk quotas][9] are available to manage storage utilization, putting _/var_ on a separate partition may not be necessary. It is much easier to change a disk quota than it is to re-partition a drive. - -Another reason for isolating _/var_ was that file system corruption was much more common in the original version of the Linux [Extended File System (EXT)][10]. The file systems that had more write activity were much more likely to be irreversibly corrupted by a power outage than those that did not. By partitioning the disk into separate file systems, one could limit the scope of the damage in the event of file system corruption. This concern is no longer as significant because modern file systems support [journaling][11]. - -#### The home partition - -Having ***/*_home_ on a separate partition makes it possible to re-format the other partitions without overwriting your home directories. However, because modern Linux distributions are much better at doing in-place operating system upgrades, re-formatting shouldn’t be needed as frequently as it might have been in the past. - -It can still be useful to have _/home_ on a separate partition if you have a dual-boot setup and want both operating systems to share the same home directories. Or if your operating system is installed on a file system that supports snapshots and rollbacks and you want to be able to rollback your operating system to an older snapshot without reverting the content in your user profiles. Even then, some file systems allow their descendant file systems to be rolled back independently, so it still may not be necessary to have a separate partition for _/home_. On ZFS, for example, one pool/partition can have multiple descendant file systems. - -#### The swap partition - -The _swap_ partition reserves space for the contents of RAM to be written to permanent storage. There are pros and cons to having a swap partition. A pro of having swap memory is that it theoretically gives you time to gracefully shutdown unneeded applications before [the OOM killer][12] takes matters into its own hands. This might be important if the system is running mission-critical software that you don’t want abruptly terminated. A con might be that your system runs so slow when it starts swapping memory to disk that you’d rather the OOM killer take care of the problem for you. - -Another use for swap memory is [hibernation mode][13]. This might be where the rule that the swap partition should be twice the size of your computer’s RAM originated. Ideally, you should be able to put a system into hibernation even if nearly all of its RAM is in use. Beware that Linux’s support for hibernation is not perfect. It is not uncommon that after a Linux system is resumed from hibernation some hardware devices are left in an inoperable state (for example, no video from the video card or no internet from the WiFi card). - -In any case, having a swap partition is more a matter of taste. It is not required. - -#### The root partition - -The _root_ partition (/) is the catch-all for all directories that have not been assigned to a separate partition. There is always at least one root partition. BIOS-based systems that are new enough to not have the 1024 cylinder limit can be configured with only a root partition and no others so that there is never a need to resize a partition or file system if space requirements change. - -#### The EFI system partition - -The [EFI System Partition (ESP)][14] serves the same purpose on UEFI-based computers as the _boot_ partition did on the older BIOS-based computers. It contains the boot loader and kernel. Because the files on the ESP need to be accessible by the computer’s firmware, the ESP has a few restrictions that the older boot partition did not have. The restrictions are: - - 1. The ESP must be formatted with a FAT file system (_vfat_ in Anaconda) - 2. The ESP must have a special [type-code][15] (_EF00_ when using [gdisk][16]) - - - -Because the older boot partition did not have file system or type-code restrictions, it is permissible to apply the above properties to the _boot_ partition and use it as your ESP. Note, however, that the GRUB boot loader does not support combining the boot and ESP partitions. If you use GRUB, you will have to create a separate partition and mount it beneath the _/boot_ directory. - -The [Boot Loader Specification (BLS)][17] lists several reasons why it is ideal to use the legacy boot partition as your ESP. The reasons include: - - 1. The UEFI firmware should be able to load the kernel directly. Having a separate, non-ESP compliant boot partition for the kernel prevents the UEFI firmware from being able to directly load the kernel. - 2. Nesting the ESP mount point three mount levels deep increases the likelihood that an intermediate mount could fail or otherwise be unavailable when needed. That is, requiring _root_ (/), then _boot_ (/boot), then _efi_ (/efi) to be consecutively mounted is unnecessarily complex and prone to error. - 3. Requiring the boot loader to be able to read other partitions/disks which may be formatted with arbitrary file systems is non-trivial. Even when the boot loader does contain such code, the code that works at installation time can become outdated and fail to access the kernel/initrd after a file system update. This is currently true of GRUB’s _ZFS_ file system driver, for example. You must be careful not to update your _ZFS_ file system if you use the GRUB boot loader or else your system may not come back up the next time you reboot. - - - -Besides the concerns listed above, it is a good idea to have your startup environment — up to and including your [initramfs][18] — on a single self-contained file system for recovery purposes. Suppose, for example, that you need to rollback your root file system because it has become corrupted or it has become infected with malware. If your _kernel_ and _initramfs_ are on the _root_ file system, you may be unable to perform the recovery. By having the _boot loader_, _kernel_, and _initramfs_ all on a single file system that is rarely accessed or updated, you can increase your chances of being able to recover the rest of your system. - -In summary, there are many ways that you can layout your partitions and the type of hardware (BIOS or UEFI) and the brand of boot loader (GRUB, Syslinux or [systemd-boot][19]) are among the factors that will influence which layouts will work. - -### Other considerations - -#### MBR vs. GPT - -[GUID Partition Table (GPT)][20] is the newer partition format that supports larger disks. GPT was designed to work with the newer UEFI firmware. It is backward-compatible with the older [Master Boot Record (MBR)][21] partition format but not all boot loaders support the [MBR boot method][21]. _GRUB_ and _Syslinux_ support both MBR and UEFI, but _systemd-boot_ only supports the newer [UEFI boot method][22]. - -By using GPT now, you can increase the likelihood that your storage device, or an image of it, can be transferred over to a newer computer in the future should you wish to do so. If you have an older computer that natively supports only MBR-partitioned drives, you may need to add the _inst.gpt_ parameter to **Anaconda** when starting the installer to get it to use the newer format. How to add the _inst.gpt_ parameter is shown in the below video titled **“Partitioning a BIOS Computer”**. - -If you use the _GPT_ partition format on a BIOS-based computer, and you use the _GRUB_ boot loader, you must additionally create a one megabyte _biosboot_ partition at the start of your storage device. The _biosboot_ partition is not needed by any other brand of boot loader. How to create the _biosboot_ partition is demonstrated in the below video titled **“Partitioning a BIOS Computer”**. - -#### LVM - -One last thing to consider when manually partitioning your Linux system is whether to use standard partitions or logical volumes. Logical volumes are managed by the [Logical Volume Manager (LVM)][23]. You can setup LVM volumes directly on your disk without first creating standard partitions to hold them. However, most computers still require that the boot partition be a standard partition and not an LVM volume. Consequently, having LVM volumes only increases the complexity of the system because the LVM volumes must be created within standard partitions. - -The main features of LVM — online storage resizing and clustering — are not really applicable to the typical end user. Most laptops do not have hot-swappable drive bays for adding or reconfiguring storage while the system is running. And not many laptop or desktop users have [clvmd][24] configured so they can access a centralized storage device concurrently from multiple client computers. - -LVM is great for servers and clusters. But it adds extra complexity for the typical end user. Go with standard partitions unless you are a server admin who needs the more advanced features. - -### Video demonstrations - -Now that you know which partitions you need, you can watch the sort video demonstrations below to see how to manually partition a Fedora Linux computer from the Anaconda installer. - -These videos demonstrate creating only the minimally required partitions. You can add more if you choose. - -Because the _GRUB_ boot loader requires a more complex partition layout on UEFI systems, the below video titled **“Partitioning a UEFI Computer”** additionally demonstrates how to install the _systemd-boot_ boot loader. By using the _systemd-boot_ boot loader, you can reduce the number of needed partitions to just two — _boot_ and _root_. How to use a boot loader other than the default (GRUB) with Fedora’s Anaconda installer is officially documented [here][25]. - -**Partitioning a UEFI Computer** - -**Partitioning a BIOS Computer** - --------------------------------------------------------------------------------- - -via: https://fedoramagazine.org/learning-about-partitions-and-how-to-create-them-for-fedora/ - -作者:[Gregory Bartholomew][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://fedoramagazine.org/author/glb/ -[b]: https://github.com/lujun9972 -[1]: https://fedoramagazine.org/wp-content/uploads/2020/01/partitions-fedora-816x346.png -[2]: https://en.wikipedia.org/wiki/Cylinder_1024 -[3]: https://en.wikipedia.org/wiki/Unified_Extensible_Firmware_Interface#EFI_system_partition -[4]: https://www.kernel.org/doc/Documentation/efi-stub.txt -[5]: https://en.wikipedia.org/wiki/File_system_permissions#Operating_system_variations -[6]: https://en.wikipedia.org/wiki/Disk_formatting#Formatting -[7]: https://access.redhat.com/discussions/641923 -[8]: https://linuxconfig.org/setting-up-logrotate-on-redhat-linux -[9]: https://docs.oracle.com/cd/E19253-01/819-5461/gazud/index.html -[10]: https://en.wikipedia.org/wiki/Extended_file_system -[11]: https://en.wikipedia.org/wiki/Journaling_file_system -[12]: https://lwn.net/Articles/317814/ -[13]: https://www.fosslinux.com/184/what-is-difference-between-suspend-and-hibernate-in-linux.htm -[14]: https://en.wikipedia.org/wiki/EFI_system_partition -[15]: https://en.wikipedia.org/wiki/GUID_Partition_Table#Partition_type_GUIDs -[16]: https://fedoramagazine.org/managing-partitions-with-sgdisk/ -[17]: https://systemd.io/BOOT_LOADER_SPECIFICATION/ -[18]: https://fedoramagazine.org/initramfs-dracut-and-the-dracut-emergency-shell/ -[19]: https://www.freedesktop.org/wiki/Software/systemd/systemd-boot/ -[20]: https://en.wikipedia.org/wiki/GUID_Partition_Table -[21]: https://en.wikipedia.org/wiki/Master_boot_record -[22]: https://en.wikipedia.org/wiki/Unified_Extensible_Firmware_Interface#UEFIBOOT -[23]: https://en.wikipedia.org/wiki/Logical_Volume_Manager_(Linux) -[24]: https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/5/html/logical_volume_manager_administration/lvm_cluster_overview -[25]: https://docs.fedoraproject.org/en-US/fedora/rawhide/install-guide/install/Installing_Using_Anaconda/#sect-installation-gui-storage-partitioning-bootloader diff --git a/sources/tech/20200124 Thunderbolt - how to use keyboard during boot time.md b/sources/tech/20200124 Thunderbolt - how to use keyboard during boot time.md deleted file mode 100644 index d8fc2ae581..0000000000 --- a/sources/tech/20200124 Thunderbolt - how to use keyboard during boot time.md +++ /dev/null @@ -1,96 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Thunderbolt – how to use keyboard during boot time) -[#]: via: (https://fedoramagazine.org/thunderbolt-how-to-use-keyboard-during-boot-time/) -[#]: author: (Martin Sehnoutka https://fedoramagazine.org/author/msehnout/) - -Thunderbolt – how to use keyboard during boot time -====== - -![][1] - -### Problem statement - -Imagine you bought a new laptop with a shiny new USB-C docking station. You install fresh Fedora, encrypt your hard drive because laptop is a travel equipment and you do not want to travel around with non-ecrypted hard drive. You finish the installation, close the lid because you have external monitor, reboot the machine, and finally you would like to enter the LUKS password using the external keyboard attached using USB 2.0 to the USB-C docking station but it does not work! - -The keyboard does not respond at all. So you open the lid, try the built-in keyboard which works just fine and once the machine boots the external keyboard works just fine as well. What is the problem? - -### What is this Thunderbolt anyway and why would anyone want it? - -Thunderbolt is a hardware interface to connect peripherals such as monitors, external network cards [1] or even graphic cards [1]. The physical connector is the same as USB-C, but there is usually a label with a little lightning right next to the port to differentiate “plain” USB-C from Thunderbolt ports. - -![][2] - -Of course it comes with very high transmission speed to support such demanding peripherals, but it also comes with a certain security risks. To achieve transmission speed like this, Thunderbolt uses Direct Memory Access (DMA) for the peripheral devices. As the name suggests, this method allows the external device to read and write memory directly without talking to the running operating system. - -I guess you can already spot the problem here. If some stranger is walking around my laptop (even with the screen locked), is it really possible to just attach a device and read content of my computer memory? Let’s discuss it in more detail. - -### User facing solution for Thunderbolt security - -In the recent versions, Gnome settings include a tab for Thunderbolt device configuration. You can enable and disable DMA access for external devices and you can also verify identity of the devices. - -![][3] - -_bolt_ is the component responsible for managing thunderbolt devices. See _man 8 boltd_ for more information. - -### CLI tools - -Of course it is possible to control the same via command line. I suggest you to read _man boltctl_ or check the upstream repository directly: - -### Pre-boot support – solution to the keyboard problem - -In pre-boot environment, the situation is slightly different. The userspace service responsible for device verification is not yet running so if a device is to be allowed, the firmware must to it. In order to enable this feature go to your BIOS and look for “support in pre boot environment”. For example this is how it looks on a Lenovo laptop: - -![][4] - -Once you enable this feature, bolt will add any verified device to a list of allowed devices. The next time you boot your machine, you should be able to use your external keyboard. - -Run _boltctl_ a look for “bootacl”. Make sure that the list of allowed devices contains the one you wish to use. - -![][5] - -Also note the “security: secure” line. If you see anything else, for instance “security: user” I recommend to reconfigure BIOS. - -### Technical details of the pre-boot support - -There is one unfortunate technical detail about this solution. Thunderbolt support different security levels. For running Fedora, I recommend you to use “secure” level to verify that the device is indeed the one that it claims to be by using a per-device key generated by the host and stored in the device. Firmware, on the other hand, will only use “user” level which uses simple UUID that is provided by the device. The difference is that a malicious device could claim to be a different one by providing the same UUID as a legitimate one. Anyway this should not be a problem as the memory does not contain any sensitive data yet. - -You can find more technical details in this blog post: - -### Conclusion - -As you can see, in recent enough Fedora version the solution is a simple switch in BIOS. So if you are still opening your laptop during boot, go ahead and configure it so you don’t have to do it next time. Meanwhile **check that the default security level is “secure”** instead of “user” [5]. - -### Sources: - -[1] - -[2] - -[3] - -[4] - -[5] - --------------------------------------------------------------------------------- - -via: https://fedoramagazine.org/thunderbolt-how-to-use-keyboard-during-boot-time/ - -作者:[Martin Sehnoutka][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://fedoramagazine.org/author/msehnout/ -[b]: https://github.com/lujun9972 -[1]: https://fedoramagazine.org/wp-content/uploads/2020/01/header-816x345.png -[2]: https://fedoramagazine.org/wp-content/uploads/2020/01/port-1024x165.jpg -[3]: https://fedoramagazine.org/wp-content/uploads/2020/01/Screenshot-from-2020-01-17-12-47-30.png -[4]: https://fedoramagazine.org/wp-content/uploads/2020/01/bios-1024x389.jpg -[5]: https://fedoramagazine.org/wp-content/uploads/2020/01/Screenshot-from-2020-01-17-13-18-21.png diff --git a/sources/tech/20200125 Oh, Bummer- Rocket League is Ending Support For Linux.md b/sources/tech/20200125 Oh, Bummer- Rocket League is Ending Support For Linux.md deleted file mode 100644 index ab18ff6d7a..0000000000 --- a/sources/tech/20200125 Oh, Bummer- Rocket League is Ending Support For Linux.md +++ /dev/null @@ -1,80 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Oh, Bummer! Rocket League is Ending Support For Linux) -[#]: via: (https://itsfoss.com/rocket-league-ending-support-for-linux/) -[#]: author: (Ankush Das https://itsfoss.com/author/ankush/) - -Oh, Bummer! Rocket League is Ending Support For Linux -====== - -If you’ve enjoyed playing Rocket League on Linux, you will be disappointed to know that [Pysonix][1], the developer team behind Rocket League [announced][2] that they will be dropping support for Linux and Mac in March, 2020. - -If it was just another casual game on [Steam][3], I wouldn’t mind- but Rocket League is a quite popular online multiplayer game across every platform. - -![][4] - -In fact, Rocket League was one of my [favorite games to play on Linux][5] (in addition to CS: GO). Even though I haven’t played it for a while – it is a bummer that I won’t be able to play it either. - -So, this is definitely sad for Linux gamers who were looking forward to having fun in a popular online multiplayer game that required a decent hardware configuration to work flawlessly. - -### Why are they ending support? - -![][6] - -In their [announcement][2], they mentioned: - -> As we continue to upgrade _**Rocket League**_ with new technologies, it is no longer viable for us to maintain support for the macOS and Linux (SteamOS) platforms. As a result, the final patch for the macOS and Linux versions of the game will be in March. This update will disable online functionality (such as in-game purchases) for players on macOS and Linux, but offline features including Local Matches, and splitscreen play will still be accessible. - -Well, this certainly does not explain why they’re dropping support for Linux/Mac. But, it looks like the game will get its final patches in March. - -**After that, you will not be able to play multiplayer sessions – but will be restricted to the local multiplayer sessions (or split-screen)**. - -Maybe you can try using [Wine][7] or [Steam Play][8] to play it on Linux? Doesn’t sound good though. - -Some furious users/gamers on [Reddit][9] mentioned that this is a result of Epic Games acquiring Rocket League developer **Psyonix**. I wouldn’t comment on that one – feel free to share your thoughts in the comments though. - -### How to get a refund for your Rocket League purchase - -![][10] - -To get a refund for your purchase of the Rocket League, you need to open a ticket on the [Psyonix Support][11] page. - -If you’ve purchased it recently in the ongoing Steam sale – you might just get an instant refund from Steam if you initiate a refund. - -If you have no plans to play it on a Windows machine (or trying Proton/Wine) on Linux – you should apply for a refund. - -**Wrapping Up** - -While this may not be a big-shot game for the platform but dropping support for Linux is not helping to improve the gaming scene on Linux. - -If a game that worked quite well on Linux drops support for it – how can we expect newer games to consider adding support for Linux? - -Feel free to share your thoughts in the comments down below. - --------------------------------------------------------------------------------- - -via: https://itsfoss.com/rocket-league-ending-support-for-linux/ - -作者:[Ankush Das][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://itsfoss.com/author/ankush/ -[b]: https://github.com/lujun9972 -[1]: https://www.psyonix.com/ -[2]: https://www.rocketleague.com/news/ending-support-for-mac-and-linux/ -[3]: https://store.steampowered.com/app/252950/Rocket_League/ -[4]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/01/rocket-league.jpg?ssl=1 -[5]: https://itsfoss.com/free-linux-games/ -[6]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/01/rocket-league-shot.jpg?ssl=1 -[7]: https://itsfoss.com/use-windows-applications-linux/ -[8]: https://itsfoss.com/steam-play/ -[9]: https://www.reddit.com/r/linux/comments/esxil2/support_for_rocket_league_on_linux_is_ending/ -[10]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/01/rocket-league-refund.jpg?ssl=1 -[11]: https://support.rocketleague.com/hc/en-us diff --git a/sources/tech/20200127 Building Zero Trust authentication for multi-cloud application services.md b/sources/tech/20200127 Building Zero Trust authentication for multi-cloud application services.md deleted file mode 100644 index 009b39108f..0000000000 --- a/sources/tech/20200127 Building Zero Trust authentication for multi-cloud application services.md +++ /dev/null @@ -1,69 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Building Zero Trust authentication for multi-cloud application services) -[#]: via: (https://www.linux.com/articles/building-zero-trust-authentication-for-multi-cloud-application-services/) -[#]: author: (Swapnil Bhartiya https://www.linux.com/author/swapnil/) - -Building Zero Trust authentication for multi-cloud application services -====== - -[![][1]][2] - -[![][1]][2] - -One of the fundamental challenges organizations have about multi-cloud and hybrid cloud environments, is how to easily establish secure communication across different clouds and environments. Cloud providers have their own identity and access management solutions, such as AWS IAM, to manage what access an instance should and should not have. But as soon as the applications or services  need to communicate from AWS to GCP or from AWS to their on-prem infrastructure, it becomes a challenge because it’s AWS-specific and not interoperable. Engineering and operations teams need something secure that could work across environments and at the same time should not add any friction to the deployment cycles - -This is the problem [Scytale][3], a is trying to address with Secure Production Identity Framework for Everyone ([SPIFFE][4]) and SPIFFE Runtime Environment ([SPIRE][5]). Both of these open-source  projects originated at Scytale but now are part of  the Cloud Native Computing Foundation (CNCF). These projects have grown in popularity within the cloud native community and have seen contributions from organizations such as Amazon, Bloomberg, Google, Pinterest, Square , Uber and more. - -“Scytale is the primary driver of these projects that offer ‘interoperable identity’ between different cloud providers and different platforms,” Evan Gilman, Senior Engineer at Scytale.io and co-author of _[Zero Trust Networks][6]_. “From the commercial angle, we have built solutions to help organizations adopt these projects faster and  extend their functionalities to address the needs of enterprise customers .” - -**Vendor and technology neutral identity solution** -The passport analogy best explains interoperable identity. Passports from different countries all look different, but they all have the same size and meet the same specifications. They all have a picture of the passport holder at the same spot, they all have a barcode at the bottom. Regardless of what country issued the passport, it works across the globe. - -A “country” can be a particular software stack, platform, or a cloud provider. Regardless of the environment, the identities that exist within and between those silos can communicate. - -Interoperable identity becomes even more critical in the multi-cloud and hybrid cloud deployments, as they raise this fundamental challenge of how users secure communication across those boundaries. - -“We are bringing in a platform-agnostic service identity that is not specific to a cloud provider, platform, and technology,” said Gilman. It levels the playing field and allows users to talk across boundaries. Users won’t talk in AWS or GCP specifics; they communicate on the SPIFFE level. “SPIFFE provides users with what is sometimes referred to as a secure dial tone: you pick up the phone, it rings the other side irrespective of where it’s running and what platform it’s running on,” added Gilman. - -**SPIFFE based service** authentication **foundational for zero trust networks** -SPIFFE is a standard, a set of documents whereas SPIRE is the software implementation of that standard. SPIRE implements the SPIFFE specifications and enables workloads or services to get these “passports” as soon as they boot, in a way that is very reliable, scalable, and highly automated. This identity centric authentication is also critical for building a zero trust-based security model  , which removes reliance on networks to deliver trustworthy information. - -“Networks have been historically fairly manipulable. So instead we build systems in such a way that it doesn’t rely on that network to deliver trustworthy information,” said Gilman, “We use protocols and strong authentication and authorization to try to mitigate any kind of business that might happen on the wire. It also mitigates what we call lateral movement. So if a neighbor is compromised, just because you’re attached to the same network, that should not mean that you should gain access that you would not have otherwise.” - -Gilman explains, “Part of the SPIFFE specification set deals with what we call ‘federation’. There is usually a centralized authority that issues these identities. In reality, there are different companies that have their own authorities. Even different software stacks have their own authorities. There is a need to bridge these gaps.” - -That’s where the SPIFFE Federation enters the picture. It swaps these cryptographic keys between different domains. It allows users with different identity providers to communicate effortlessly. - -One key design principle of the SPIFFE Federation is that it is compatible with OIDC, which is a similar identity federation spec, but is more focused around users. It allows for server-to-server and service-to-service communication. Any existing OIDC can take advantage of it and pass one of its SPIFFE identity documents to a public cloud like AWS, which will be able to validate it using this OIDC SPIFFE Federation mechanism. - -While SPIFFE as a specification doesn’t change, SPIRE has a monthly release cadence. It continues to add new features on a regular basis. - -The latest release introduced integration with the AWS Private CA Manager, which means that SPIRE deployments living inside AWS can use it to protect the sign-in keys for identities. These identities are cryptographically backed so there is a key that is used to sign these identities. One of the biggest challenges is to secure these sign-in keys. Being able to bury that key inside the AWS service, which is backed by hardware protection, is an incredible feature. - -The community is also working on a feature called Nested SPIRE, which allows users to have multiple SPIRE server clusters that form a tree and chain up to each other. - -Together, these new features give a lot of flexibility in terms of architecting for failure modes and failure domains, and architecting around different security domains. - --------------------------------------------------------------------------------- - -via: https://www.linux.com/articles/building-zero-trust-authentication-for-multi-cloud-application-services/ - -作者:[Swapnil Bhartiya][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://www.linux.com/author/swapnil/ -[b]: https://github.com/lujun9972 -[1]: https://www.linux.com/wp-content/uploads/2020/01/buffer-1143485_1920-1068x638.jpg (passport) -[2]: https://www.linux.com/wp-content/uploads/2020/01/buffer-1143485_1920.jpg -[3]: https://scytale.io/ -[4]: https://spiffe.io/ -[5]: https://spiffe.io/spire/ -[6]: https://www.amazon.com/Zero-Trust-Networks-Building-Untrusted/dp/1491962194 diff --git a/sources/tech/20200127 How to get started with test-driven development.md b/sources/tech/20200127 How to get started with test-driven development.md deleted file mode 100644 index 2986deee9a..0000000000 --- a/sources/tech/20200127 How to get started with test-driven development.md +++ /dev/null @@ -1,77 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (How to get started with test-driven development) -[#]: via: (https://opensource.com/article/20/1/test-driven-development) -[#]: author: (Alex Bunardzic https://opensource.com/users/alex-bunardzic) - -How to get started with test-driven development -====== -Learn when, what, and how to test in a TDD system. -![Penguin driving a car with a yellow background][1] - -I am often approached by software developers who are on board with the switch to test-driven development (TDD). They understand that describing expectations first and then writing code to meet those expectations is the best way to write software. And they agree that writing tests first does not introduce any overhead since they must write tests anyway. Still, they find themselves stuck, not being clear on what to test, when to test it, and how to test it. This article will answer those questions. - -### First, an analogy - -Imagine you're working on a team that has been asked to build a race car. The goal is to deliver a product that will enable a crew to drive the car from one city (say, Portland, Oregon) to another city (say, Seattle, Washington). - -Your team could go about designing and building that car in several different ways. One way would be to handcraft a unique, monolithic vehicle where all parts are home-grown and tightly coupled. Another way would be to use only prefabricated parts and stitch them together. And there are many other permutations of these two extreme approaches. - -Suppose your team goes with hand-building the constituent components of the race car. A car needs a battery to run. For the purposes of this analogy, focus on the custom-made car battery. How would you go about testing it? - -### Testing strategies - -One way to the test custom-made car battery would be to hire a testing crew, ship the car with the battery to Portland, and then get the testing crew to drive the car from Portland to Seattle. If the car arrives in Seattle, you can confirm that, yes, the car battery functions as expected. - -Another way to test the custom-made car battery would be to install it in the car and see if the engine turns over. If the engine starts, you can confirm that, yes, the car battery functions as expected. - -Still another way would be to use a voltmeter and connect the positive (+) and the negative (-) terminals to see if the voltmeter registers voltage output in the range of 12.6 to 14.7 volts. If it does, you can confirm that, yes, the car battery functions as expected. - -The above three hypothetical examples illustrate how different ways of testing the car battery align with three categories of testing strategies: - - 1. Employing the testing crew to drive the car from Portland to Seattle aligns with the **system or end-to-end testing strategy**. - 2. Installing the battery in the car and verifying if the engine starts aligns with the **integration testing strategy**. - 3. Measuring the voltage output of the car battery to verify if it falls within the expected range aligns with the **unit testing strategy**. - - - -### TDD is all about unit testing - -I hope these examples provide simple guiding principles for discerning between unit, integration, and system end-to-end testing. - -Keeping those guidelines in mind, it is very important _never_ to include integration nor system tests in your TDD practice. In TDD, the expected outcomes are always micro-outcomes. Measuring the voltage output of a car battery is a good example of a micro-outcome. A car battery is a unit of functionality that cannot easily be broken down into a few smaller units of functionality. As such, it is a perfect candidate for writing a unit test (i.e., describing the expected measurable output). - -You could also write a description of your expectations in the form of: "I expect the car engine to start on the event of turning the key." However, that description wouldn't qualify as a unit test. Why? Because the car is not at a sufficiently low level of granularity. In software engineering parlance, the car does not embody the [single responsibility principle][2] (SRP). - -And of course, while you could also write a description of your expectation in the form of: "I expect the car, which begins its journey in Portland, to arrive in Seattle after x number of hours," that description wouldn't qualify as a unit test. Many aspects of the car's journey from Portland to Seattle could be measured, so such end-to-end descriptions should never be part of TDD. - -### Simulating real conditions - -In the case of a car battery, just by using a simple voltmeter, you can simulate the operational environment of a car battery. You don't have to go into the expense of providing a full-blown experience (e.g., a fully functional car, a long and treacherous trip from Portland to Seattle) to be convinced that, indeed, your car battery functions as expected. - -That's the beauty of unit testing's simplicity. It's easy to simulate, easy to measure, easy to leave the exercise being convinced that everything works as expected. - -So what is it that enables this magic? The answer is simple—the _absence of dependencies_. A car battery does not depend on anything related to the automobile. Nor does it depend on anything related to the road trip from Portland to Seattle. Keep in mind that as your decomposed system components become less and less dependent on other components, your solution gets more and more reliable. - -### Conclusion - -The art of software engineering consists of the ability to decompose complex systems into small constituent elements. Each individual element must be reduced to the smallest possible surface. Once you reach that point in your process of decomposing a system, you can quite easily focus your attention on describing your expectations about the output of each unit. You can do that by following a formalized pattern, in which you first describe the _preconditions_ (i.e., given that such-and-such values are present), the _action_ (i.e., given that such-and-such _event_ arrives), and the _outcome_ or the _post-condition_ (i.e., you expect such-and-such values to be measurable). - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/1/test-driven-development - -作者:[Alex Bunardzic][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/alex-bunardzic -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/car-penguin-drive-linux-yellow.png?itok=twWGlYAc (Penguin driving a car with a yellow background) -[2]: https://en.wikipedia.org/wiki/Single_responsibility_principle diff --git a/sources/tech/20200128 How I had a nerdy date night with StreetComplete quests.md b/sources/tech/20200128 How I had a nerdy date night with StreetComplete quests.md deleted file mode 100644 index 73f163fc01..0000000000 --- a/sources/tech/20200128 How I had a nerdy date night with StreetComplete quests.md +++ /dev/null @@ -1,68 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (How I had a nerdy date night with StreetComplete quests) -[#]: via: (https://opensource.com/article/20/1/streetcomplete-crowdsource-maps) -[#]: author: (Jess Weichler https://opensource.com/users/cyanide-cupcake) - -How I had a nerdy date night with StreetComplete quests -====== -Find an adventure in your own backyard with this fun app. -![A map with a route highlighted][1] - -StreetComplete is an Android app that makes it fun and easy to contribute to open data by completing quests. - -Quests are used to fill in incomplete or inaccurate information on [OpenStreetMap][2], an open data project dedicated to mapping the world through crowdsourcing. Anyone can contribute to the map and, thanks to free culture and open source licenses, that data can then be used by anyone for anything, from video games to custom map applications and artwork. - -![hands holding phone][3] - -My first intro to StreetComplete was on a charmingly unique date night with my partner. Instead of dinner and a movie, we explored the streets of our town, both the familiar and unfamiliar, answering questions about features of topography, shopfronts, pedestrian crossing, and more. We got to see our town in a new light, and we felt we were ultimately helping others discover it along with us. - -If this sounds like something you’d like to get involved with, it’s super simple to get started. Just follow the steps below: - - 1. [Download the app][4] to your phone from F-Droid or Google Play. It’s licensed under GPLv3. - 2. Allow StreetComplete to access your device’s location. - 3. Click the menu in the upper right corner, and select Settings. - 4. In the Settings menu, select Authorize OSM access. This will open OpenStreetMap in your browser, where you can register for an account or login if you already have one. - 5. Authorize access to your account. - - - -Now you’re ready to go! - -### Completing quests - -To complete quests, walk around the area of your choosing. Quests appear as pins on the map. Symbols inside pins denote the type of task, such as a wheelchair for an accessibility quest or leaf for a plant-based quest. Quests involve simple questions about various features, with clear multiple choice answers and visuals when necessary. - -Quests can be chosen at random, though the app will question your response if you try to complete a quest when you are not nearby. I live in a small town, so I especially enjoyed quests that required us to ask questions of shop owners because it allowed us to connect with the community in real life while contributing to the global community online. - -![StreetComplete map image][5] - -If you live in a mobile deadzone or have a limited mobile plan, you can still have fun questing for map data; StreetComplete has an offline mode. To use it, activate the offline download option in the app settings menu. Once your region has downloaded, perform a search for nearby quests, then go out and explore. - -When you are back online, the data you’ve input as quest responses are uploaded to the OpenStreetMap servers. - -StreetComplete is a great way to investigate new areas or even locations you may already be somewhat familiar with. With its graphical, flat design and simple quests, it makes a perfect activity for couples, friends, and families to complete together. - -Maps touch our lives daily. Whether you are trying to find a nearby point of interest or directions... - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/1/streetcomplete-crowdsource-maps - -作者:[Jess Weichler][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/cyanide-cupcake -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/map_route_location_gps_path.png?itok=RwtS4DsU (A map with a route highlighted) -[2]: https://www.openstreetmap.org -[3]: https://opensource.com/sites/default/files/uploads/image1_street.png (hands holding phone) -[4]: https://github.com/westnordost/StreetComplete -[5]: https://opensource.com/sites/default/files/uploads/image2_street.jpeg (StreetComplete map image) diff --git a/sources/tech/20200128 How I teach physics using open source tools.md b/sources/tech/20200128 How I teach physics using open source tools.md deleted file mode 100644 index a1e695781d..0000000000 --- a/sources/tech/20200128 How I teach physics using open source tools.md +++ /dev/null @@ -1,175 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (How I teach physics using open source tools) -[#]: via: (https://opensource.com/article/20/1/teach-physics-open-source) -[#]: author: (Cristiano L. Fontana https://opensource.com/users/cristianofontana) - -How I teach physics using open source tools -====== -A roundup of open source tools ideal for teaching physics (and other -subjects). -![Person reading a book and digital copy][1] - -The nice aspect of being a physicist and a researcher is the openness of our community. There is a lot of collaboration and sharing of ideas (especially during coffee breaks). We also tend to share the software we write. Since we are very picky about algorithms, we want to modify other people’s code to fix the obvious errors that we find. It feels frustrating when I have to use proprietary tools since I cannot understand their inner workings. Having grown up professionally in such an environment, open source has been my go-to solution for all the software I use. - -When I became the regular teacher of the Physics and Biophysics course at the [medical school][2] at my [university][3], I decided to use only open source software to prepare my lectures. Here is my experience so far and the solutions I found. - -### Study material - -Teaching is not easy. You should first understand the subject and then figure out how to communicate with somebody that knows nothing about the subject; therefore, it is of paramount importance to study the subject in depth and prepare the lectures well in advance. There are countless books about physics, but there are also some interesting, freely available resources. Most of these do not count as open source, as they cannot be modified, but they are useful anyways. - - * [HyperPhysics][4] may have an outdated look, but it is a treasure trove of interesting concepts and insights by Carl R. Nave, Department of Physics and Astronomy Georgia State University. - * [Open Source Physics][5] has a fabulous collection of applets and support material. I met some of the maintainers at various conferences, and they are remarkable people. - * [OpenStax][6] is a nonprofit educational initiative based at Rice University that publishes textbooks that are free online. They have a good library and several works about physics in their [scientific section][7]. - * [Open Textbook Library][8] provides a catalog of free textbooks with a [physics section][9] as well. Some of the titles have reviews by users. - * [Motion Mountain][10] is a collection of books about physics in general by C. Schiller that has also been translated into several languages. - * [Light and Matter][11] is another collection of writings about different aspects of physics, all authored by B. Crowell of Fullerton College, CA. - * [Wikipedia][12], what more can I say? - - - -### Lecturing style - -Before preparing my support material, I had to decide whether I preferred to use the blackboard or slideshows during the lectures. I opted to use both with the idea of showing hard-to-draw graphics in the slideshows and writing down equations on the blackboard. Eventually, the slideshows became much more prevalent. I use them as the draft of my lecture, helping me to keep track of what I want to say. I also added the mathematical proofs that I want to show to have a correct reference during the lecture. - -Instead of using a blackboard, I ended up using a [graphics tablet][13] for all the notes I write during the lectures. I use the tablet for three main purposes: to draw additional drawings to explain myself better, to write down equations and proofs, and to write down the key messages that I want my students to remember. Even if what I write is already on the slideshows, actually writing it by hand during the lectures gives the students the time to write it down in their notes. After the lectures, I share, on my website, both the slideshows and my notes. - -![Figure: Example of notes taken during class with the graphics tablet and Krita][14] - -Figure: Example of notes taken during class with the graphics tablet and Krita - -### Material preparation - -#### Slideshows - -Since math is the language of physics, I needed a practical way to write down equations in my slideshows. Probably, the best tool for that is [LaTeX][15], but it was designed to typeset books and not slides. Luckily, there is the [Beamer class][16] that allows you to typeset slideshows with LaTeX. The resulting file is a very portable PDF. The layout is nice and clean and forces me not to overstuff each slide. From the same source code, I can prepare two versions of the file. The lecture version follows the guidelines of the university’s [corporate identity][17] (_i.e.,_ with a thick red border), while the handout version has a cleaner layout (_e.g.,_ without the thick borders), thus allowing it to be printed without wasting printer toner. I have also seen students taking notes directly on the PDFs of the handouts on their tablets and computers. - -The only drawback of using LaTeX and Beamer is the impossibility of embedding videos in the produced presentation. I, therefore, have to keep as a separate file the occasional videos that I show during class. - -![Figure: Examples of slides created with LaTeX and Beamer][18] - -Figure: Examples of slides created with LaTeX and Beamer - -![Figure: Examples of slides created with LaTeX and Beamer][19] - -Figure: Examples of slides created with LaTeX and Beamer - -#### Images and diagrams - -Something that I am careful about is the licensing of the graphics I use. As such, I never use graphics that do not allow me to redistribute my modifications. I drew most of the images in my slideshows. If I use other people’s work, I always reference it in my slide. - -I prefer to use [vector graphics][20] whenever practicable because they can be easily modified and adjusted afterward. I use the exceptional [Inkscape][21] for my vector graphics. On the other hand, for my [raster graphics][22], I use [GIMP][23]. When I need a 3D looking diagram, I use [Blender][24] to draw the scene; then I trace the rendered image with Inkscape to convert it to vectorial. I recently discovered [FreeCAD][25], which has the striking feature that it can directly export the 3D scene to some vectorial format. I can then adjust the image with Inkscape without having to trace the raster image. - -In all my diagrams, I am trying to keep a consistent look, and therefore I limit myself to a 10-[color palette][26], both from [d3][27] and [matplotlib][28]. I also use the same palette in my slides to highlight quantities in reference to the illustrations. To produce [plots][29] and [graphs][30], I write Python scripts and employ the matplotlib graphical library. - -![Figure: Diagram example created with Inkscape by tracing a Blender 3D diagram][31] - -Figure: Diagram example created with Inkscape by tracing a Blender 3D diagram - -#### Multimedia support - -I have prepared a few pages with applets that demonstrate some phenomena that I describe during my lectures (e.g., [modeling radioactive decay with dice][32]). I opted to offer these applets on my institutional webpage to easily reach all the students instead of requiring them to install software to run them. The necessary choice was to employ [JavaScript][33] and some supporting libraries, such as [jQuery][34] for compatibility between browsers, [MathJax][35] for typesetting math in the webpages, or [d3][27] for graphics display. Since my institution does not provide the capability of writing dynamic webpages, I am using [Jekyll][36], which is a static site generator. Jekyll allows me to have a consistent look and feel across all the pages without having to write HTML code. - -![Figure: Dice modeling radioactive decay, image of the interactive simulation][37] - -Figure: Dice modeling radioactive decay, image of the [interactive simulation][32] - -### Lecturing software - -Since my slideshows are PDF files, to show them during the lecture, I use the [default document viewer][38] of my [GNOME 3][39] desktop environment. There is also the alternative of using [Okular][40], which allows annotating the PDFs, but I prefer not to use it, as the annotations would not be carried over to the handouts. In conjunction with the graphical tablet, I use the excellent painting program [Krita][41]. I use the image layers as new pages of my notes. This approach is more practical during the lecture than creating a series of new files. I can also duplicate layers and edit them or load vectorial images and draw over them. Krita has the possibility of writing custom [Python plugins][42], so I prepared a script that exports a PDF file with a new page for each layer. - -![Figure: Screenshot of Krita used in class to write notes][43] - -Figure: Screenshot of Krita used in class to write notes - -When we go through exercises in class, I use the calculator [Qalculate][44] to obtain numerical results. Its particular feature is that it can perform calculations with units associated with the numbers. I can focus more on the exercise resolution than on the units’ conversions. This is a double-edged sword, though, as the students would not learn how to do the conversions themselves. Therefore, I normally start to use Qalculate halfway through the course. [wxMaxima][45] can also support exercise resolution, symbolically solving some difficult equations. - -![Figure: Screenshot of Qalculate][46] - -Figure: Screenshot of Qalculate - -### Video lectures - -Sometimes I offer streaming lectures on YouTube, or I upload a video with additional mini-lectures. It has happened that the students have wanted a more in-depth explanation of some subjects. Offering these as a video allows them to take their time to listen and understand the subjects. For these videos, I use [OBS studio][47], which can record or directly stream videos to YouTube. OBS can put on the video scene the screen image and some additional video sources, such as a web camera. To edit the videos, I have been using [OpenShot][48]. - -![Figure: Screenshot of OBS studio recording the screen][49] - -Figure: Screenshot of OBS studio recording the screen - -### Conclusions - -This is the set of open source tools that I have been using to prepare and support my lectures. Over the years, I changed some of them whenever I discovered some better fitting tools or if I changed my lecturing style. To be frank, due to laziness, one of the requirements for all the tools is that they have to be easily installable. I use [Fedora][50] on my laptop, and its repository has packages for all this software. On the [CentOS][51] installation of my desktop computer, I had worse luck. For instance, Krita and OBS are available only through [Flatpak][52]. - -Writing this article just made me realize how many tools I am actively using for my lectures. Maybe there are some all-in-one solutions, such as [LibreOffice Impress][53], but I am very satisfied with the results I am getting. Besides, all this software has other useful applications. - -Leave comments if you have questions. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/1/teach-physics-open-source - -作者:[Cristiano L. Fontana][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/cristianofontana -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/read_book_guide_tutorial_teacher_student_apaper.png?itok=_GOufk6N (Person reading a book and digital copy) -[2]: https://www.medicinachirurgia.unipd.it/ -[3]: https://www.unipd.it/ -[4]: http://hyperphysics.phy-astr.gsu.edu/ -[5]: https://www.compadre.org/osp/ -[6]: https://openstax.org/ -[7]: https://openstax.org/subjects/science -[8]: https://open.umn.edu/opentextbooks -[9]: https://open.umn.edu/opentextbooks/subjects/physics -[10]: http://www.motionmountain.net/ -[11]: http://www.lightandmatter.com/ -[12]: https://en.wikipedia.org/wiki/Main_Page -[13]: https://en.wikipedia.org/wiki/Graphics_tablet -[14]: https://opensource.com/sites/default/files/uploads/circuit_notes_0.jpg (Figure: Example of notes taken during class with the graphics tablet and Krita) -[15]: https://www.latex-project.org/ -[16]: https://github.com/josephwright/beamer -[17]: https://en.wikipedia.org/wiki/Corporate_identity -[18]: https://opensource.com/sites/default/files/uploads/slide_laplace.png (Figure: Examples of slides created with LaTeX and Beamer) -[19]: https://opensource.com/sites/default/files/uploads/slide_faraday.png (Figure: Examples of slides created with LaTeX and Beamer) -[20]: https://en.wikipedia.org/wiki/Vector_graphics -[21]: https://inkscape.org/ -[22]: https://en.wikipedia.org/wiki/Raster_graphics -[23]: https://www.gimp.org/ -[24]: https://www.blender.org/ -[25]: https://www.freecadweb.org/ -[26]: https://github.com/d3/d3-3.x-api-reference/blob/master/Ordinal-Scales.md#category10 -[27]: https://d3js.org/ -[28]: https://matplotlib.org/ -[29]: https://en.wikipedia.org/wiki/Plot_(graphics) -[30]: https://en.wikipedia.org/wiki/Graph_of_a_function -[31]: https://opensource.com/sites/default/files/uploads/electromagnetic_wave.png (Figure: Diagram example created with Inkscape by tracing a Blender 3D diagram) -[32]: http://www2.pd.infn.it/~fontana/project/teaching/2018/01/02/dice-decay.html -[33]: https://en.wikipedia.org/wiki/JavaScript -[34]: https://jquery.com/ -[35]: https://www.mathjax.org/ -[36]: https://jekyllrb.com/ -[37]: https://opensource.com/sites/default/files/uploads/dice_decay.png (Figure: Dice modeling radioactive decay, image of the interactive simulation) -[38]: https://wiki.gnome.org/Apps/Evince -[39]: https://www.gnome.org/gnome-3/ -[40]: https://okular.kde.org/ -[41]: https://krita.org/en/ -[42]: https://docs.krita.org/en/user_manual/python_scripting.html -[43]: https://opensource.com/sites/default/files/uploads/krita_screenshot_0.png (Figure: Screenshot of Krita used in class to write notes) -[44]: https://qalculate.github.io/ -[45]: https://wxmaxima-developers.github.io/wxmaxima/ -[46]: https://opensource.com/sites/default/files/uploads/qalculate_screenshot.png (Figure: Screenshot of Qalculate) -[47]: https://obsproject.com/ -[48]: https://www.openshot.org/ -[49]: https://opensource.com/sites/default/files/uploads/obs_screenshot.png (Figure: Screenshot of OBS studio recording the screen) -[50]: https://getfedora.org/ -[51]: https://www.centos.org/ -[52]: https://flatpak.org/ -[53]: https://www.libreoffice.org/discover/impress/ diff --git a/sources/tech/20200129 3 lessons I-ve learned writing Ansible playbooks.md b/sources/tech/20200129 3 lessons I-ve learned writing Ansible playbooks.md deleted file mode 100644 index a2cfe25265..0000000000 --- a/sources/tech/20200129 3 lessons I-ve learned writing Ansible playbooks.md +++ /dev/null @@ -1,221 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (3 lessons I've learned writing Ansible playbooks) -[#]: via: (https://opensource.com/article/20/1/ansible-playbooks-lessons) -[#]: author: (Jeff Geerling https://opensource.com/users/geerlingguy) - -3 lessons I've learned writing Ansible playbooks -====== -Avoid common pitfalls and supercharge your Ansible playbook maintenance -by following these best practices. -![plastic game pieces on a board][1] - -I've used Ansible since 2013 and maintain some of my original playbooks to this day. They have evolved with Ansible from version 1.4 to the current version (as of this writing, 2.9). - -Along the way, as Ansible grew from having dozens to hundreds and now thousands of modules, I've learned a lot about how to make sure my playbooks are maintainable and scalable as my systems grow. Even for simple projects (like the [playbook I use to manage my own laptop][2]), it pays dividends to avoid common pitfalls and make decisions that will make the future you thankful instead of regretful. - -The three main takeaways from this experience are: - - 1. Stay organized - 2. Test early and often - 3. Simplify, optimize - - - -The importance of each lesson I've learned follows in that order, too; it's no use trying to optimize something (point 3) that's already poorly assembled (point 1). Each step builds on the one above, so I'll guide you through each step. - -### Stay organized - -![Organized bins of equipment][3] - -At a bare minimum, you should **store your Ansible playbooks in a Git repository**. This helps with so many things: - - 1. Once you have a known working state, you can commit the work (ideally, with tags marking major versions, like 1.0.0 for the first stable version and 2.0.0 for an upgrade or rewrite). - 2. You can always walk back changes if necessary to a previous known-working state (e.g., by using `git reset` or `git checkout `). - 3. Large-scale changes (e.g., feature additions or a major upgrade) can be worked on in a branch, so you can still maintain the existing playbook and have adequate time to work on major changes. - - - -Storing playbooks in Git also helps with the second important organization technique: **run your playbooks from a build server**. - -Whether you use [Ansible Tower][4], [Jenkins][5], or some other build system, using a central interface for playbook runs gives you consistency and stability—you don't risk having one admin run a playbook one way (e.g., with the wrong version of roles or an old checkout) and someone else running it another way, breaking your servers. - -It also helps because it forces you to ensure all your playbook's resources are encapsulated in the playbook's repository and build configuration. Ideally, the entire build (including the job configuration) would be captured in the repository (e.g., through the use of a `Jenkinsfile` or its equivalent). - -Another important aspect to organization is **documentation**; at a bare minimum, I have a README in every playbook repository with the following contents: - - * The playbook's purpose - * Links to relevant resources (CI build status, external documentation, issue tracking, primary contacts) - * Instructions for local testing and development - - - -Even if you have the playbook automated through a build server, it is important to have thorough and correct documentation for how to run the playbook otherwise (e.g., locally in a test environment). I like to make sure my projects are easily approachable—not only for others who might eventually need to work with them but also myself! I often forget a nuance or dependency when running a playbook, and the README is the perfect place to outline any peculiarities. - -Finally, the _structure_ of the Ansible tasks themselves are important, and I like to ensure I have a maintainable structure by having **small, readable task files** and by extracting related sets of tasks into **Ansible roles**. - -Generally, if an individual playbook reaches around 100 lines of YAML, I'll start breaking it up into separate task files and using `include_tasks` to include those files. If I find a set of tasks that operates independently and could be broken out into its own [Ansible role][6], I'll work on extracting those tasks and related handlers, variables, and templates. - -Using roles is the best way to supercharge Ansible playbook maintenance; I often have to do similar tasks in many (if not most) playbooks, like managing user accounts or installing and configuring a web server or database. Abstracting these tasks into Ansible roles means I can maintain one set of tasks to be used among many playbooks, with variables to give flexibility where needed. - -Ansible roles can also be contributed back to the community via [Ansible Galaxy][7] if you're able to make them generic and provide the code with an open source license. I have contributed over a hundred roles to Galaxy, and they are made better by the fact that thousands of other playbooks (besides my own) rely on them and break if there is a bug in the role. - -One final note on roles: If you choose to use external roles (either from Galaxy or a private Git repository), I recommend committing the role to your repository (instead of adding it to a `.gitignore` file and downloading the role every time you run your playbook) because I like to avoid relying on downloads from Ansible Galaxy for every playbook run. You should still use a `requirements.yml` file to define role dependencies and define specific versions for the roles so you can choose when to upgrade your dependencies. - -### Test early and often - -![A stack of computer boards][8] - -Ansible allows you to define infrastructure as code. And like any software, it is essential to be able to verify that the code you write does what you expect. - -Like any software, it's best to _test_ your Ansible playbooks. And when I consider testing for any individual Ansible project I build, I think of a spectrum of CI testing options I can use, going in order from the easiest to hardest to implement: - - 1. `yamllint` - 2. `ansible-playbook --syntax-check` - 3. `ansible-lint` - 4. [Molecule test][9] (integration tests) - 5. `ansible-playbook --check` (testing against production) - 6. Building parallel infrastructure - - - -The first three options (linting and running a syntax check on your playbook) are essentially free; they run very fast and can help you avoid the most common problems with your playbook's task structure and formatting. - -They provide some value, but unless the playbook is extremely simple, I like to go beyond basic linting and run tests using [Molecule][9]. I usually use Molecule's built-in Docker integration to run my playbook against a local Docker instance running the same base OS as my production server. For some of my roles, which I run on different Linux distributions (e.g., CentOS and Debian), I run the Molecule test playbook once for each distro—and sometimes with extra test scenarios for more complex roles. - -If you're interested in learning how to test roles with Molecule, I wrote a blog post on the topic a couple of years ago called [Testing your Ansible roles with Molecule][10]. The process for testing full playbooks is similar, and in both cases, the tests can be run inside most CI environments (for example, my [geerlingguy.apache][11] role runs a suite of [Molecule tests via Travis CI][12]). - -The final two test options, running the playbook in `--check` mode or building parallel production infrastructure, require more setup work and often go beyond what's necessary for efficient testing processes. But in cases where playbooks manage servers critical to business revenue, they can be necessary. - -There are a few other things that are important to watch for when running tests and periodically checking or updating your playbooks: - - * Make sure you track (and fix) any `DEPRECATION WARNING`s you see in Ansible's output. Usually, you'll have a year or two before the warning leads to a failure in the latest Ansible version, so the earlier you can update your playbook code, the better. - * Every Ansible version has a [porting guide][13]) that is extremely helpful when you're updating from one version to the next. - * If you see annoying `WARN` messages in playbook output when you're using a module like `command`, and you know you can safely ignore them, you can add a `warn: no` under the `args` in a task. It's better to squelch these warnings so that more actionable warnings (like deprecation warnings) will be noticed at a glance. - - - -Finally, I like to make sure my CI environments are always running the latest Ansible release (and not locked into a specific version that I know works with my playbooks), because I know if a playbook will break right after the new release comes out. My build server is locked into a specific Ansible version, which may be one or two versions behind the latest version, so this gives me the time to ensure I fix any new issues discovered in CI tests before I upgrade my build server to the latest version. - -### Simplify, optimize - -![Charging AirPods][14] - -> "YAML is not a programming language." -> — Jeff Geerling - -Simplicity in your playbooks makes maintenance and future changes a lot easier. Sometimes I'll look at a playbook and be puzzled as to what's happening because there are multiple `when` and `until` conditions with a bunch of Python mixed in with Jinja filters. - -If I start to see more than one or two chained filters or Python method calls (especially anything having to do with regular expressions), I see that as a prime candidate for rewriting the required functionality as an Ansible module. The module could be maintained in Python and tested independently and would be easier to maintain as strictly Python code rather than mixing in all the Python inline with your YAML task definitions. - -So my first point is: Stick to Ansible's modules and simple task definitions as much as possible. Try to use Jinja filters wherever possible, and avoid chaining more than one or two filters on a variable at a time. If you have a lot of complex inline Python or Jinja, it's time to consider refactoring it into a custom Ansible module. - -Another common thing I see people do, especially when building out roles the first time, is using complex dict variables where separate "flat" variables may be more flexible. - -For example, instead of having an **apache** role with many options in one giant dict, like this: - - -``` -apache: -  startservers: 2 -  maxclients: 2 -``` - -And consider using separate flat variables: - - -``` -apache_startservers: 2 -apache_maxclients: 2 -``` - -The reason for this is simple: Using flat variables allows playbooks to override one particular value easily, without having to redefine the entire dictionary. This is especially helpful when you have dozens (or in some rare cases, _hundreds_) of default variables in a role. - -Once the playbook and role code looks good, it's time to start thinking about **optimization**. - -A few of the first things I look at are: - - * Can I disable `gather_facts`? Not every playbook needs all the facts, and it adds a bit of overhead on every run, on every server. - * Can I increase the number of `forks` Ansible uses? The default is five, but if I have 50 servers, can I operate on 20 or 25 at a time to vastly reduce the amount of time Ansible takes to run a playbook on all the servers? - * In CI, can I parallelize test scenarios? Instead of running one test, then the next, if I can start all the tests at once, it will make my CI test cycle much faster. If CI is slow, you'll tend to ignore it or not wait until the test run is complete, so it's important to make sure your test cycle is short. - - - -When I'm looking through tasks in a role or playbook, I also look for a few blatant performance issues that are common with certain modules: - - * When using `package` (or `apt`, `yum`, `dnf`, etc.), if there is more than one package being managed, the list should be passed directly to the `name` parameter and not via `with_items` or a `loop`—this way Ansible can efficiently operate on the whole list in one go instead of doing it package by package. - * When using `copy`, how many files are being copied? If there is a single file or even a few dozen, it might be fine, but the `copy` module is very slow if you have hundreds or thousands of files to be copied (better to use a module like `synchronize` or a different strategy like copying a tarball and expanding it on the server). - * If using `lineinfile` in a loop, it might be more efficient (and sometimes easier to maintain) to use `template` instead and control the entire file in one pass. - - - -Once I've gotten most of the low-hanging fruit out of the way, I like to profile my playbook, and Ansible has some built-in tools for this. You can configure extra callback plugins to measure role and task performance by setting the `callback_whitelist` option under `defaults` in your `ansible.cfg`: - - -``` -[defaults] -callback_whitelist = profile_roles, profile_tasks, timer -``` - -Now, when you run your playbook, you get a summary of the slowest roles and tasks at the end: - - -``` -Monday 10 September       22:31:08 -0500 (0:00:00.851)       0:01:08.824 ****** -=============================================================================== -geerlingguy.docker ------------------------------------------------------ 9.65s -geerlingguy.security ---------------------------------------------------- 9.33s -geerlingguy.nginx ------------------------------------------------------- 6.65s -geerlingguy.firewall ---------------------------------------------------- 5.39s -geerlingguy.munin-node -------------------------------------------------- 4.51s -copy -------------------------------------------------------------------- 4.34s -geerlingguy.backup ------------------------------------------------------ 4.14s -geerlingguy.htpasswd ---------------------------------------------------- 4.13s -geerlingguy.ntp --------------------------------------------------------- 3.94s -geerlingguy.swap -------------------------------------------------------- 2.71s -template ---------------------------------------------------------------- 2.64s -... -``` - -If anything takes more than a few seconds, it might be good to figure out exactly why it's taking so long. - -### Summary - -I hope you learned a few ways you can make your Ansible Playbooks more maintainable; as I said in the beginning, each of the three takeaways (stay organized, test, then simplify and optimize) builds on the previous, so start by making sure you have clean, documented code, then make sure it's well-tested, and finally look at how you can make it even better and faster! - -* * * - -_This article is a follow up to Jeff's presentation, [Make your Ansible playbooks flexible, maintainable, and scalable][15], at AnsibleFest 2018, which you can [watch here][16]._ - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/1/ansible-playbooks-lessons - -作者:[Jeff Geerling][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/geerlingguy -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/team-game-play-inclusive-diversity-collaboration.png?itok=8sUXV7W1 (plastic game pieces on a board) -[2]: https://github.com/geerlingguy/mac-dev-playbook -[3]: https://opensource.com/sites/default/files/uploads/organized.jpg (Organized bins of equipment) -[4]: https://www.ansible.com/products/tower -[5]: https://jenkins.io -[6]: https://docs.ansible.com/ansible/latest/user_guide/playbooks_reuse_roles.html -[7]: https://galaxy.ansible.com -[8]: https://opensource.com/sites/default/files/uploads/test-early-often.jpg (A stack of computer boards) -[9]: https://molecule.readthedocs.io/en/stable/ -[10]: https://www.jeffgeerling.com/blog/2018/testing-your-ansible-roles-molecule -[11]: https://github.com/geerlingguy/ansible-role-apache -[12]: https://travis-ci.org/geerlingguy/ansible-role-apache -[13]: https://docs.ansible.com/ansible/latest/porting_guides/porting_guides.html -[14]: https://opensource.com/sites/default/files/uploads/simplify-optimize.jpg (Charging AirPods) -[15]: https://www.jeffgeerling.com/blog/2019/make-your-ansible-playbooks-flexible-maintainable-and-scalable-ansiblefest-austin-2018 -[16]: https://www.youtube.com/watch?v=kNDL13MJG6Y diff --git a/sources/tech/20200129 7 open source desktop tools- Download our new eBook.md b/sources/tech/20200129 7 open source desktop tools- Download our new eBook.md deleted file mode 100644 index 303f86919c..0000000000 --- a/sources/tech/20200129 7 open source desktop tools- Download our new eBook.md +++ /dev/null @@ -1,52 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (7 open source desktop tools: Download our new eBook) -[#]: via: (https://opensource.com/article/20/1/open-source-desktop-tools-guide) -[#]: author: (Seth Kenlon https://opensource.com/users/seth) - -7 open source desktop tools: Download our new eBook -====== -Choice is more than a feature of Linux; it's a way of life thanks to a -wealth of open source tools. -![Browser of things][1] - -Linux users say that choice is one of the platform's strengths. On the surface, this might sound self-aggrandizing (or self-deprecating, depending on your perspective). Other operating systems offer choice, too, but once you look at the options available for nearly anything you want to do on Linux, it doesn't take long to conclude that a new word ought to be invented for what we mean by "choice." - -User choice isn't a "feature" of Linux; it's a way of life. Whether you're looking for a whole new desktop or just a new system tray, Linux hackers provide you options. You might also be able to hack some simple commands together to create a batch processor for yourself—and you might publish it online for others, thereby contributing to the array of choice. - -With so many options available, it can be a real challenge to find the solutions you prefer. One of the most effective ways to discover cool new things in the Linux world is through personal recommendation. That's one of the many reasons Opensource.com covers what might seem like random applications—through sharing your experiences with software, others can discover new applications to love without the pain of rummaging through piles of choice. - -### Sharing and open source - -Obviously, you can share software _recommendations_ with friends, whether the software is open source or not. However, in the proprietary world, you can't share the software that you're recommending, and in the world of proprietary software as a service (SaaS), part of the act of sharing is the key component to a pyramid scheme for more user data. It's not quite the same as the no-strings-attached gift of open source. - -Sharing is an integral part of free and open source software. It's one of the [four freedoms][2] defined by the Free Software Foundation, and it's the central concern of [Creative Commons][3]. - -While it's easy to fall into the trap of viewing open source sharing as something that applies only to lines of sometimes cryptic-looking code, it goes well beyond that. Sharing is almost endemic to open culture, explicitly allowing and encouraging it on every level, from code, to tutorials and tips, to physical redistribution of a wealth of common goods and services. Part of that is the simple act of telling others about a cool technology that has improved the way we work and live. - -### Download the eBook - -Opensource.com contributor and productivity aficionado Kevin Sonney has shared many of his favorite desktop applications in our latest eBook, [7 open source desktop tools][4]. As is often the case in the open source world, he doesn't just share his knowledge about his favorite desktop tools, he explains how and why he chooses those tools to help you can evaluate them for yourself. Download it today! - -### [Download the 7 open source desktop tools eBook][4] - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/1/open-source-desktop-tools-guide - -作者:[Seth Kenlon][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/seth -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/browser_desktop_website_checklist_metrics.png?itok=OKKbl1UR (Browser of things) -[2]: https://www.gnu.org/philosophy/free-sw.en.html -[3]: https://creativecommons.org -[4]: https://opensource.com/downloads/desktop-tools diff --git a/sources/tech/20200129 What Amazon Kindle- Here-s an Open Source eBook Reader.md b/sources/tech/20200129 What Amazon Kindle- Here-s an Open Source eBook Reader.md deleted file mode 100644 index 7106bb596b..0000000000 --- a/sources/tech/20200129 What Amazon Kindle- Here-s an Open Source eBook Reader.md +++ /dev/null @@ -1,109 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (What Amazon Kindle? Here’s an Open Source eBook Reader) -[#]: via: (https://itsfoss.com/open-book/) -[#]: author: (Abhishek Prakash https://itsfoss.com/author/abhishek/) - -What Amazon Kindle? Here’s an Open Source eBook Reader -====== - -When it comes to an eBook reader, the choices are limited. The market is dominated by [Amazon's proprietary Kindle][1] along with a few other options like Kobo, Nook and Onyx. - -An interesting news for open source enthusiasts is that a developer, [Joey Castillo][2], is working on creating an open source eBook reader appropriately named Open Book. - -### Open Book: An open source eBook reader - -![][3] - -The [Open Book][4] aims to be a simple ‘open’ device that “anyone with a soldering iron can build for themselves”. - -It’s hackable so if you are into DIY stuff and you have some knowledge, you may tweak it to your liking. For example, Joey use [TensorFlow Lite][5] to give voice commands for flipping the pages on Open Book. You can do things like this on your own on this open hardware device. - -> Voice commands on the [#OpenBook][6] with [#TensorFlowLite][7]. When I added a mic amp for voice, I considered this a “someday” feature; I didn’t imagine one could hack it together in an evening! Major credit to [@adafruit][8]; their TFL Arduino port makes this possible. [pic.twitter.com/PfXZx99A9y][9] -> -> — joey castillo (@josecastillo) [December 13, 2019][10] - -If that kind of scares you because you are not really into tinkering with hardware, I have a good news for you. Open Book was named winner of [Hackaday’s Take Flight with Feather contest][11]! - -This means that when the hardware is ready, you should be able to purchase it from [DigiKey][12]. You should be able to fit the device as an eBook reader or experiment with it, if you feel like doing it. - -It kind of reminds me of [Game Shell][13], a single board computer based retro gaming console that could be tinkered into many other things. - -### Open Book specifications - -![][14] - -There are two versions of Open Book: Open Book Feather and E-Book Feather Wing. The eBook wing does less than the Open Book Feather, mainly because it’s limited to using only the pins available via the Feather header. - -You may guess from the name that the project uses [Adafruit’s Feather development boards][15]. - -Here are the main specifications for the Open Book (both versions): - - * 4.2 inch, 400 x 300 pixel ePaper display - * SAMD51 ARM Cortex-M4 32-bit processor - * 7 buttons for navigation (directional pad, select button and page turn buttons) - * status LED lights - * A microSD card reader - * Headphone jack - - - -The display seems a bit small, isn’t it? - -### Open Book release, pricing and availability - -![][16] - -Open Book is the winner of [Take Flight with Feather competition by Hackaday][11]. This means that at least 100 Open Book boards will be manufactured and made available for purchase. - -[Liliputing][17] noted that [Adafruit][18] will be handling the manufacturing, and [Digi-Key][19] will eventually be selling Open Book boards. - -At this point, it’s not clear how much will it cost and exactly when it will be available. - -Remember that it’s an open source project. You can find all the circuit designs, source code on its GitHub page and if you have the skills, get the required hardware components and build an Open Book on your own. - -[Open Book on GitHub][4] - -Otherwise, wait for a couple of months (hopefully) for the release of the Open Book boards and then go about experimenting with the device. - -If you like the project and want to support it, you can help [Joey on Pateron][20]. You can follow the updates on the Open Book on the Patreon page, [Joey’s mailing list][21] or Joey’s [Twitter account][2]. - -_Do you think the project has potential? Would you buy one when it is available? What do you think of it?_ - --------------------------------------------------------------------------------- - -via: https://itsfoss.com/open-book/ - -作者:[Abhishek Prakash][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://itsfoss.com/author/abhishek/ -[b]: https://github.com/lujun9972 -[1]: https://www.amazon.com/dp/B07DLPWYB7?tag=chmod7mediate-20&linkCode=ogi&th=1&psc=1 (Amazon's proprietary Kindle) -[2]: https://twitter.com/josecastillo -[3]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/01/open-book-under-development-feature.jpeg?ssl=1 -[4]: https://github.com/joeycastillo/The-Open-Book -[5]: https://www.tensorflow.org/lite -[6]: https://twitter.com/hashtag/OpenBook?src=hash&ref_src=twsrc%5Etfw -[7]: https://twitter.com/hashtag/TensorFlowLite?src=hash&ref_src=twsrc%5Etfw -[8]: https://twitter.com/adafruit?ref_src=twsrc%5Etfw -[9]: https://t.co/PfXZx99A9y -[10]: https://twitter.com/josecastillo/status/1205549284403355648?ref_src=twsrc%5Etfw -[11]: https://hackaday.io/contest/168107-take-flight-with-feather -[12]: https://www.digikey.com/ -[13]: https://itsfoss.com/gameshell-console/ -[14]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/01/open-book-board.jpg?ssl=1 -[15]: https://www.adafruit.com/feather -[16]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/01/open-book-demo.jpeg?ssl=1 -[17]: https://liliputing.com/2020/01/the-open-book-ereader-will-be-a-real-thing-you-can-buy-eventually.html -[18]: https://www.adafruit.com/ -[19]: https://www.digikey.com/en/resources/beta-1 -[20]: https://www.patreon.com/joeycastillo -[21]: http://eepurl.com/gKOpQ9 diff --git a/sources/tech/20200130 Run your network with open source software.md b/sources/tech/20200130 Run your network with open source software.md deleted file mode 100644 index 13137ce392..0000000000 --- a/sources/tech/20200130 Run your network with open source software.md +++ /dev/null @@ -1,105 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Run your network with open source software) -[#]: via: (https://opensource.com/article/20/1/open-source-networking) -[#]: author: (Seth Kenlon https://opensource.com/users/seth) - -Run your network with open source software -====== -VyOS is an easy-to-install open source router and firewall solution -![Multi-colored and directional network computer cables][1] - -Way back in 2005, a company called Vyatta was founded by Allan Leinwand. It offered the first commercially supported, open source router and firewall solution. Named after the ancient Sanskrit for "open," the company's goal of bringing open source networking products to the market was so successful that it was purchased by competitor Brocade. This effectively killed Vyatta, but because Vyatta's product was open source, it didn't stop it. As it turns out, Vyatta's software-defined networking capabilities have been continued and developed as [VyOS][2]. - -The VyOS distribution is based on Debian Linux, with source code available from a [Git repository][3] and a [rolling release ISO][4]. For mission-critical applications, there are [long-term support releases and support contracts][5]. - -### Building a network - -Networking has changed since 2005, and thanks to the VyOS project, so has the software that drives it. After learning that VyOS was continuing the work of Vyatta, I downloaded the ISO to try it out. The installation process was easier for me than the normal Debian install, which is a simple task. VyOS doesn't boot into a graphical interface, but to a text console. It's just you and a bunch of configuration files, just like you might expect from a serious router. - -The default install of VyOS provides no default configuration. It's entirely up to you to build the network you want to run. Depending on your point of view, that's either refreshing or frustrating, but it gives you an idea of the intended audience: VyOS is built for network engineers who've mapped out their desired topography and are capable of creating it with some subnet calculations and text definitions. - -### The VyOS configure command - -That said, VyOS isn't just a re-branded Debian release. One of its key features is its **configure** command, an interactive tool for defining network definitions that are applied only after you commit them. In addition to feeling familiar to users accustomed to IOS and similar toolchains, this allows you to configure your network even as the router continues its normal operations. Nothing is final until you type **commit**. - -Once you've tested a committed network change, you can use the **save** command to permanently store your configuration files for backup or migration to other VyOS machines. - -You enter configuration mode with the **configure** command. There are too many possible network configurations to go over **configure** or basic networking tasks here, but the syntax is generally intuitive and predictable. For instance, to enable SSH management over port 22212 of your router: - - -``` -`# set service ssh port '22212'` -``` - -To set the network interface card (NIC) **eth1** to an internal IP address and to create a description identifying it as the default gateway: - - -``` -# set interfaces ethernet eth1 address '10.1.0.1/24' -# set interfaces ethernet eth1 description 'INSIDE' -``` - -To set the public IP of NIC **eth0** and describe it as the world-facing interface: - - -``` -# set interfaces ethernet eth0 address dhcp -# set interfaces ethernet eth0 description 'OUTSIDE' -``` - -To activate network address translation (NAT), it's the same structure: - - -``` -set nat source rule 100 outbound-interface 'eth0' -set nat source rule 100 source address '10.1.0.0/24' -set nat source rule 100 translation address masquerade -``` - -Assuming those are the only tasks you have for now, commit and save: - - -``` -# commit -# save && exit -Saving configuration to '/config/config.boot'... -Done -$ -``` - -Although that's probably not everything you need to do in real life, it gives you an idea of the direct simplicity that VyOS provides. You don't have to deal with "reverse engineering" confusing graphical interfaces nor scrubbing through verbose configuration files for a poorly named key. You have a unified interface for every task, whether it's setting up a firewall, implementing DHCP, DNS, quality of service, VPN gateways, IPv6, or whatever else. - -### Professional networking appliance - -VyOS might not be a beginner-level router distribution, but it's a great tool to have on hand even if you're just starting out. There's no better way to learn the basics of networking than to have an open source router available for manipulation and testing. It's the 21st century, after all; you can set up a computer lab consisting of virtual clients networked to one another through a virtual VyOS instance entirely within [GNOME Boxes][6] for $0. You can learn advanced networking concepts and solutions armed with little more than a Linux computer and the excellent [VyOS documentation][7]. - -If you're already a networking professional, then take a look at VyOS. You'll find its philosophy on configuration simple and its configure tool efficient. - -Connecting your Linux computer to a network is pretty straightforward, except when it is not. In... - -Jay Turner gives tips for attracting and maintaining an open source community around networking. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/1/open-source-networking - -作者:[Seth Kenlon][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/seth -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/connections_wires_sysadmin_cable.png?itok=d5WqHmnJ (Multi-colored and directional network computer cables) -[2]: http://vyos.io -[3]: https://github.com/vyos/ -[4]: https://www.vyos.io/rolling-release/ -[5]: https://vyos.io/subscriptions/ -[6]: https://opensource.com/article/19/5/getting-started-gnome-boxes-virtualization -[7]: https://vyos.readthedocs.io/en/latest/index.html diff --git a/sources/tech/20200131 5 ways to use Emacs as your RPG dashboard.md b/sources/tech/20200131 5 ways to use Emacs as your RPG dashboard.md deleted file mode 100644 index b1d7c6923d..0000000000 --- a/sources/tech/20200131 5 ways to use Emacs as your RPG dashboard.md +++ /dev/null @@ -1,182 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (5 ways to use Emacs as your RPG dashboard) -[#]: via: (https://opensource.com/article/20/1/emacs-rpgs) -[#]: author: (Seth Kenlon https://opensource.com/users/seth) - -5 ways to use Emacs as your RPG dashboard -====== -Emacs is a flexible way to organize and manage your tabletop -role-playing games. -![Chess pieces on a chess board][1] - -There are two ways to play a tabletop role-playing game (RPG): You can play an adventure written by the game's publisher or an independent author, or you can play an adventure that is made up as you go. Regardless of which you choose, there's probably prep work to do. One player (generically called the _game master_) must gather monster or enemy stats, loot tables, and references for rules, and the other players must build characters and apportion (pretend) equipment. Nothing's going to eliminate prep work from a complex RPG, but if you're an [Emacs][2] user, you might find that Emacs makes a great dashboard to keep everything all straight. - -### Organize the rules - -Unfortunately, the digital editions of many RPGs are distributed as PDFs because that's what the RPG publisher sent to the printer for the physical edition. PDFs are good at preserving layout, but they're far from an ideal eBook format. If you play RPGs published under an open license, you can often obtain the rules in alternate formats (such as HTML), which gives you more control and flexibility. Even the world's first and most famous RPG, Dungeons & Dragons, provides its rules as a free download in digital format (which has been translated into HTML and Markdown by many a website). - -I open the rules as Markdown in Emacs so that I have a searchable reference at the ready. While opening the rules as a PDF in a PDF reader lets you search for embedded text, using a text file instead provides several benefits. First of all, a text file is much smaller than a PDF, so it's faster to load and to search. Second, text files are easily editable, so if you find a rule that sends you seeking clarification, you can add what you learn (or whatever you make up) directly into your master document. You can also add house rules and additional resources. My aim is to have a single file that contains all of the rules and resources I use in games I run, with everything a quick **Ctrl+s** (**C-s** in Emacs notation) away. - -### Manage initiatives - -Most RPG systems feature a method to determine the order of play during combat. This is commonly called _initiative_, and it comes up a lot since the source of conflict in games often involves combat or some kind of opposed competitive action. It's not that hard to keep track of combat with pencil and paper, but in games where I'm using digital assets anyway, I find it easier to stay digital for everything. Luckily, the venerable [Org mode][3] provides an excellent solution. - -When players roll for initiative, I type their names into Emacs' scratch buffer. Then I type each monster or enemy, along with the hit or health points (HP) of each, followed by two columns of 0: - - -``` -brad -emily -zombie 22 0 0 -zombie 22 0 0 -flesh-golem 93 0 0 -``` - -Then I select the block of player characters (PCs) and monsters and use the **org-table-create-or-convert-from-region** function to create an Org mode table around it. Using **Alt+Down arrow** (**M-down** in Emacs notation), I move each PC or monster into the correct initiative order. - - -``` -| emily       |    |   |   | -| flesh-golem | 93 | 0 | 0 | -| zombie      | 22 | 0 | 0 | -| brad        |    |   |   | -| zombie      | 22 | 0 | 0 | -``` - -During combat, I only need to record damage for monsters, because the players manage their own HP. For the enemies I control in combat, the second column is its HP (its starting number is taken from the RPG system's rules), and the third is the damage dealt during the current round. - -Table formulas in Org mode are defined on a special **TBLFM** line at the end of the table. If you've used any computerized spreadsheet for anything, [Org table][4] will be fairly intuitive. For combat tracking, I want the third column to be subtracted from the second. Columns are indexed from left to right (**$1** for the first, **$2** for the second, and **$3** for the third), so to replace the contents of column $2 with the sum of columns $2 and $3, I add this line to the bottom of the table: - - -``` -`#+TBLFM: $2=vsum($2 - $3)` -``` - -I don't actually type that into Emacs every time the game enters combat mode. Instead, I've defined an auto-completion trigger with Emacs' [abbrev mode][5], a system that allows you to type in a special string of your choosing, which Emacs expands into something more complex. I define my abbreviations in a file called **~/.emacs.d/abbrev_defs**, using **rpgi** followed by a **Space** as the trigger for Emacs to change the line to my initiative table formula: - - -``` -(define-abbrev-table 'global-abbrev-table -  '( -    ("rpgi" "#+TBLFM: $2=vsum($2 - $3)" nil 0) -   )) -``` - -Each time a player deals damage to a monster, I enter the amount of damage in the damage column. To trigger a table recalculation, I press **Ctrl+u Ctrl+c** (i.e., **C-u C-c** in Emacs) or **Ctrl+c Ctrl+c** (i.e., **C-c C-c**) if I happen to be on the formula line:  - - -``` -| brad        |    |    | -| emily       |    |    | -| zombie      | 12 | 10 | -| zombie      | 15 |  7 | -| flesh-golem | 91 |  2 | -#+TBLFM: $2=vsum($2 - $3) -``` - -This system isn't perfect. Character names can't contain any spaces because Org table splits cells by white space. It's relatively easy to forget that you processed one line and accidentally reprocess it at the end of a round. To add HP back to a creature's total, you have to use a negative number. (I think of it as negative damage, which suggests health.) Then again, many computerized initiative trackers suffer the same problems, so it's not a particularly bad solution. For me, it's one of the faster methods I've found (I'm happy to admit that [MapTool][6] is the best, but I use my Emacs workflow when I'm not using a digital shared map). - -### View PDFs in DocView - -Sometimes a PDF is unavoidable. Whether it's a d100 list of tavern names or a dungeon map, some resources exist only as a PDF with no extractable text data. In these cases, Emacs' [DocView][7] package can help. DocView is a mode that loads PDF data and generates a PNG file for you to view (Emacs can also view JPEG files). I've found that large PDFs are problematic and slow, but if it's a low-resolution PDF with just one or two pages, DocView is an easy way to reference a document without leaving Emacs. - -I use this mode exclusively for maps, tables, and lists. It's not useful for anything that might involve searching, because text data isn't accessible, but it's an amazingly useful feature for documents you only need to glance at. - -![Emacs for RPG][8] - -The [Ghostscript][9] suite that ships with most Linux distributions (or certainly is available in your repository) allows you to process PDFs, drastically simplifying them by lowering the resolution of images from print quality to screen quality. The command contains mostly PostScript commands and attributes, but you don't need to become a PostScript expert to perform a quick down-res: - - -``` -$ gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 \ --dPDFSETTINGS=/ebook -dNOPAUSE -dBATCH \ --sOutputFile=adventure.pdf \ --dDownsampleColorImages=true \ --dColorImageResolution=72 big-adventure-module.pdf -``` - -Opening PDFs in Emacs isn't as exciting as it may sound. It's not by any means a first-class PDF viewer, but for select resources, it can be a convenient way to keep all your information on one screen. - -### Create adventure rap sheets - -Published adventures are often heavy on prose. The theory is that you've paid a lot of money for a prepared adventure, so you obviously want value for your purchase. I do value the lore and world-building that authors put into their adventures, but during a game, I like to have a quick reference to the information I need for the game mechanics to work as intended. In other words, I don't need to have the story of why a trap was placed in a dungeon when a rogue triggers it; I only need to know that the trap exists and what the rogue needs to roll in order to survive. - -I haven't found any modern adventure format that provides me with just that information, so I end up creating my own "rap sheets": a minimal outline for the adventure, with just the game mechanics information I need for each location. Once again, Org mode is the best way for me to keep this information handy. - -In Org mode, you create lists using asterisks for bullet points. For a sub-item, add an asterisk. Even better, press **C-c t** (that's **Ctrl+c** and then the **t** key) to mark the item as a **TODO** item. When your players clear an area in the game, press **C-c t** again to mark the location **DONE**. - - -``` -* DONE 1 Entrance -** Zombie -AC 9 | HP 22 -* TODO 2 Necromancer's chambers -** Flesh golem -AC 16 | HP 93 -** Treasure -\- Gold ring (200 gp) -\- Rusty nail (1 cp) -  Cursed (roll on curse table) -** Secret door (DC 20) -\- to area 11 -``` - -Each asterisk is collapsible, so you can get a summary of a global area by collapsing your list down to just the top-level: - - -``` -* DONE 1 Entrance -* TODO 2 Necromancer's chambers -* TODO 3 Wyrmling nursery -* TODO 4 Caretaker's chambers -* TODO 5 Caretaker's laboratory -``` - -An added bonus: I find that making my own rap sheets helps me internalize both the mechanics and the lore of the adventure I'm preparing, so the benefits to this method are numerous. Since I manage any adventure I run in Emacs with Git, once I do the prep work for an adventure, I have fresh copies of all my assets in case I run the adventure with another group or with a set of fresh characters. - -### Make your own adventure journal - -Generally, I let my players keep their own notes about the adventure because I want to encourage players to interpret the events happening in the adventure for themselves. However, a game master needs private notes to keep all of the improvised data in order. For example, if a published adventure doesn't feature a blacksmith shop, but players decide to visit a blacksmith, then a blacksmith needs to be invented in the moment. If the players revisit the blacksmith six weeks later, then they expect it to be the same blacksmith, and it's up to the game master to keep track of such additions to the published setting. I manage my personal notes about adventures in two different ways, depending on what's available to me. - -If I have the text of the adventure in an editable format (such as HTML or Markdown), I enter my additions into the adventure as if the publisher had included them from the start. This means there's always one source of truth for the setting and for significant events. - -If I haven't been able to get an editable copy of the adventure because it's a hard copy or a PDF that's not easily modified, then I write my additions into my rap sheets in Org mode. This functionally means that there's still one source of truth because my rap sheets are the first place I look for information, falling back on the published text only for details I've forgotten. Sometimes I like my additions enough to merge them back into my Git master for the adventure, but usually, I trust in improvisation and let additions happen dynamically for each group that plays the adventure. - -### Why Emacs is my favorite RPG dashboard - -I've fallen into using Emacs for RPGs because it serves as the heads-up display of my dreams. The "right" answer is probably a good [tiling window manager][10], but until I implement that, I'm happy with Emacs. Everything's bound to keyboard shortcuts designed for specificity and speed, and there's just enough easy customization that I can hack together good-enough solutions—sometimes even while players are arguing with one another about what to do next. - -I've tried juggling multiple desktops, several PDF reader windows, and a spreadsheet for initiatives; while it's a fine experience, nothing has equaled the fluidity of Emacs as my RPG dashboard. - -* * * - -Hey! do you love Emacs? [Write an article][11] about how you use an Emacs (GNU or otherwise) for inclusion in our forthcoming Emacs series! - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/1/emacs-rpgs - -作者:[Seth Kenlon][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/seth -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/life-chess-games.png?itok=U1lWMZ0y (Chess pieces on a chess board) -[2]: https://opensource.com/life/16/2/intro-to-emacs -[3]: https://orgmode.org/ -[4]: https://orgmode.org/manual/Tables.html -[5]: https://www.gnu.org/software/emacs/manual/html_node/emacs/Abbrevs.html#Abbrevs -[6]: https://opensource.com/article/19/6/how-use-maptools -[7]: https://www.gnu.org/software/emacs/manual/html_node/emacs/Document-View.html -[8]: https://opensource.com/sites/default/files/uploads/emacs-rpg.jpg (Emacs for RPG) -[9]: https://www.ghostscript.com/ -[10]: https://opensource.com/article/19/12/ratpoison-linux-desktop -[11]: https://opensource.com/how-submit-article diff --git a/sources/tech/20200201 ProtonVPN adopts GPLv3, Mozilla Thunderbird gets new home, and more news.md b/sources/tech/20200201 ProtonVPN adopts GPLv3, Mozilla Thunderbird gets new home, and more news.md deleted file mode 100644 index 0bad015d36..0000000000 --- a/sources/tech/20200201 ProtonVPN adopts GPLv3, Mozilla Thunderbird gets new home, and more news.md +++ /dev/null @@ -1,77 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (ProtonVPN adopts GPLv3, Mozilla Thunderbird gets new home, and more news) -[#]: via: (https://opensource.com/article/20/2/news-february-1) -[#]: author: (Scott Nesbitt https://opensource.com/users/scottnesbitt) - -ProtonVPN adopts GPLv3, Mozilla Thunderbird gets new home, and more news -====== -Catch up on the biggest open source headlines from the past two weeks. -![][1] - -In this edition of our open source news roundup, we take a look ProtonVPN apps going open, Microsoft's code analysis tool, Mozilla Thunderbird's new home, and more! - -### ProtonVPN apps go open source - -People wanting to use the internet securely and privately do the deed using a Virtual Private Network (VPN). But which VPNs can you really trust? The company behind the popular ProtonVPN service made a big move to gain that trust by [releasing the source code][2] for all its apps. - -By making its apps open source, ProtonVPN is giving security experts the chance to "inspect its encryption implementations and how the company handles user data, giving users confidence that the company is adhering to its strict privacy policy." According to an [article at TechRadar][3], ProtonVPN also engaged "security firm SEC Consult on a full security audit that was able to verify the security of the company's software." - -You can find the source code for the apps [on GitHub][4] and links to the audit reports [in this blog post][5]. - -### Mozilla Thunderbird gets a new home - -What a difference a few years makes. When the Mozilla Foundation announced in 2015 that it was considering spinning off the Thunderbird email client, the software's adherents feared the worst. Since then, Thunderbird has persisted but its fate has also been up in the air. [That's changed][6] with the formation of MZLA Technologies Corporation. - -MZLA Technologies is "a new wholly owned subsidiary of the Mozilla Foundation" that's the new home of the Thunderbird project. The move to the new corporation means that development will continue on the software and that move "won’t have an impact on Thunderbird’s day-to-day running." According to Thunderbird's Phillip Kewisch, shifting the project to MZLA Technologies enables it to "explore offering our users products and services that were not possible under the Mozilla Foundation." - -### Encrypting the Internet of Things - -The so-called Internet of Things (IoT) has promised so much. That promise has been lost under the weight of the often paper-thin security of IoT devices. Teserakt, a Swiss security firm, is trying turn that around with the [release of E4][7], a "cryptographic implant that IoT manufacturers can integrate into their servers." - -Teserakt's CEO Jean-Philippe Aumasson said that E4 came about because there are "so many machines and entities that do not have the need to view or modify (data from IoT devices), so they shouldn’t have access to it." E4 provides end-to-end encryption of data which bolsters "defenses for information in transit and offers protection against data interception and manipulation." - -If you're interesting taking a peek at E4, you can do that in [Teserakt's GitHub repository][8]. - -#### In other news - - * [Scientists working with Google just published the most detailed brain scans ever created][9] - * [AWS JPL open source rover challenge open to competitors][10] - * [Intel joins CHIPS Alliance, contributes advanced interface bus][11] - * [Why UK leaders need open technology for the disrupted future][12] - * [Microsoft open sources code analysis tool][13] - - - -_Thanks, as always, to Opensource.com staff members and moderators for their help this week. Make sure to check out [our event calendar][14], to see what's happening next week in open source._ - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/2/news-february-1 - -作者:[Scott Nesbitt][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/scottnesbitt -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/weekly_news_roundup_tv.png?itok=tibLvjBd -[2]: https://betanews.com/2020/01/21/protonvpn-open-source/ -[3]: https://www.techradar.com/au/news/protonvpn-releases-source-code-and-undergoes-security-audit -[4]: https://github.com/ProtonVPN -[5]: https://protonvpn.com/blog/open-source/ -[6]: https://blog.thunderbird.net/2020/01/thunderbirds-new-home/ -[7]: https://www.wired.com/story/e4-iot-encryption/ -[8]: https://github.com/teserakt-io/ -[9]: https://thenextweb.com/artificial-intelligence/2020/01/22/scientists-working-with-google-just-published-the-most-detailed-brain-scans-ever-created/ -[10]: https://www.therobotreport.com/aws-jpl-open-source-rover-challenge-open-to-competitors/ -[11]: https://chipsalliance.org/announcement/2020/01/22/intel-joins-chips-alliance-to-promote-advanced-interface-bus-aib-as-an-open-standard/ -[12]: https://www.information-age.com/leaders-open-technology-disrupted-future-123487150/ -[13]: https://www.infoworld.com/article/3516147/microsoft-releases-open-source-source-code-analyzer.html -[14]: https://opensource.com/resources/conferences-and-events-monthly diff --git a/sources/tech/20200203 New zine- Become a SELECT Star.md b/sources/tech/20200203 New zine- Become a SELECT Star.md deleted file mode 100644 index adadb9c687..0000000000 --- a/sources/tech/20200203 New zine- Become a SELECT Star.md +++ /dev/null @@ -1,72 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (New zine: Become a SELECT Star!) -[#]: via: (https://jvns.ca/blog/2020/02/03/new-zine--become-a-select-star/) -[#]: author: (Julia Evans https://jvns.ca/) - -New zine: Become a SELECT Star! -====== - -On Friday I published a zine about SQL called “Become a SELECT Star!” - -You can get it for $12 at . If you buy it, you’ll get a PDF that you can either read on your computer or print out. You can also get a pack of [all 7 zines][1] so far. - -Here’s the cover and table of contents: - -[![][2]][3] - -### why SQL? - -I got excited about writing a zine about SQL because at my old job I wrote a ton of SQL queries (mostly related to machine learning) and by doing that I learned there are a lot of weird things about SQL! For example – [SQL queries don’t actually start with SELECT][4]. And the way [NULL behaves isn’t really intuitive at first][5]. - -It’s been really fun to go back and try to explain the basics of SQL from the beginning. (what’s the difference between WHERE and HAVING? what’s the basic idea with indexes actually? how do you write a join?) - -I think SQL is a really nice thing to know because there are SO MANY SQL databases out there, and some of them are super powerful! (like BigQuery and Redshift). So if you know SQL and have access to one of these big data warehouses you can write queries that crunch like 10 billion rows of data really quickly. - -### lots of examples - -I ended up spending a lot of time on the examples in this zine, more than in any previous zine. My friend [Anton][6] helped me come up with a fun way to illustrate them, where you can clearly see the query, the table it’s running on, and what the query outputs. Like this: - -![][7] - -### experiment: include a SQL playground - -All the examples in the zine are real queries that you can run. So I thought: why not provide a simple environment where people can actually run those queries (and variations on those queries) to try things out? - -So I built a small [playground where you can run queries on the example tables in the zine][8]. It uses SQLite compiled to web assembly, so all the queries run in your browser. It wasn’t too complicated to build – I just used my minimal Javascript/CSS skills and vue.js. - -I’d love to hear any feedback about whether this is helpful or not – the example tables in the zine are really small (you can only print out small SQL tables!), so the biggest table in the example set has 9 rows or something. - -### what’s next: probably containers - -I think that next up is going to be a zine on containers, which is more of a normal systems-y topic for me. (for example: [namespaces][9], [cgroups][10], [why containers?][11]) - -Here’s a link to where to [get the zine][3] again :) - --------------------------------------------------------------------------------- - -via: https://jvns.ca/blog/2020/02/03/new-zine--become-a-select-star/ - -作者:[Julia Evans][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://jvns.ca/ -[b]: https://github.com/lujun9972 -[1]: https://wizardzines.com/zines/all-the-zines/ -[2]: https://jvns.ca/images/sql-cover.png -[3]: https://wizardzines.com/zines/sql -[4]: https://jvns.ca/blog/2019/10/03/sql-queries-don-t-start-with-select/ -[5]: https://twitter.com/b0rk/status/1195184321818243083 -[6]: http://www.cat-bus.com/ -[7]: https://jvns.ca/images/sql-diagram.png -[8]: https://sql-playground.wizardzines.com -[9]: https://twitter.com/b0rk/status/1195725346970181632 -[10]: https://twitter.com/b0rk/status/1214341831049252870 -[11]: https://twitter.com/b0rk/status/1224500774450929664 diff --git a/sources/tech/20200204 Ansible Roles Quick Start Guide with Examples.md b/sources/tech/20200204 Ansible Roles Quick Start Guide with Examples.md deleted file mode 100644 index d0884fe039..0000000000 --- a/sources/tech/20200204 Ansible Roles Quick Start Guide with Examples.md +++ /dev/null @@ -1,430 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Ansible Roles Quick Start Guide with Examples) -[#]: via: (https://www.2daygeek.com/ansible-roles-quick-start-guide-with-examples/) -[#]: author: (Magesh Maruthamuthu https://www.2daygeek.com/author/magesh/) - -Ansible Roles Quick Start Guide with Examples -====== - -Ansible is an excellent configuration management and orchestration tool. - -It is designed to easily automate the entire infrastructure. - -We have written three articles in the past about Ansible. - -If you are new to Ansible, I advise you to read the articles below, which will help you understand the basics of Ansible. - - * **Part-1: [Ansible Automation Tool Installation, Configuration and Quick Start Guide][1]** - * **Part-2: [Ansible Ad-hoc Command Quick Start Guide with Examples][2]** - * **Part-3: [Ansible Playbooks Quick Start Guide with Examples][3]** - - - -### What’s Ansible Roles? - -Ansible Roles provides the framework for automatically loading certain tasks, files, vars, templates, and handlers from a known file structure into the playbook. - -The primary mechanism of role is to break a playbook into multiple pieces (files). - -This makes it easier for you to write complex playbooks and makes them easier to reuse. - -Also, it reduces the syntax error by breaking it into multiple files. - -Ansible Playbook is a set of roles, and each role essentially performs a specific function. - -The Ansible roles are reusable (you can import the roles into other paybooks as well) because the roles are independent of each other and do not depend on others while executing. - -Ansible offers a two-example directory structure that helps you organize your ansible playbook content, and its use. - -It is not limited to using the same data structure, and you can create your own directory structure based on your needs. - -Each directory is have a **“main.yml”** file, which contains the basic content: - -### Ansible Roles Default Directory Structure - -Ansible Best Practices provides the following two directory structures. The first is very simple and well suited for a small environment with simple production and inventory files. - -``` -production # inventory file for production servers -staging # inventory file for staging environment - -group_vars/ - group1.yml # here we assign variables to particular groups - group2.yml -host_vars/ - hostname1.yml # here we assign variables to particular systems - hostname2.yml - -library/ # if any custom modules, put them here (optional) -module_utils/ # if any custom module_utils to support modules, put them here (optional) -filter_plugins/ # if any custom filter plugins, put them here (optional) - -site.yml # master playbook -webservers.yml # playbook for webserver tier -dbservers.yml # playbook for dbserver tier - -roles/ - common/ # this hierarchy represents a "role" - tasks/ # - main.yml # <-- tasks file can include smaller files if warranted - handlers/ # - main.yml # <-- handlers file - templates/ # <-- files for use with the template resource - ntp.conf.j2 # <------- templates end in .j2 - files/ # - bar.txt # <-- files for use with the copy resource - foo.sh # <-- script files for use with the script resource - vars/ # - main.yml # <-- variables associated with this role - defaults/ # - main.yml # <-- default lower priority variables for this role - meta/ # - main.yml # <-- role dependencies - library/ # roles can also include custom modules - module_utils/ # roles can also include custom module_utils - lookup_plugins/ # or other types of plugins, like lookup in this case - - webtier/ # same kind of structure as "common" was above, done for the webtier role - monitoring/ # "" - fooapp/ # "" -``` - -If you want to use this directory structure run the command below. - -``` -$ sudo mkdir -p group_vars host_vars library module_utils filter_plugins -$ sudo mkdir -p roles/common/{tasks,handlers,templates,files,vars,defaults,meta,library,module_utils,lookup_plugins} -$ sudo touch production staging site.yml roles/common/{tasks,handlers,templates,files,vars,defaults,meta}/main.yml -``` - -The second one is appropriate when you have a very complex inventory environment. - -``` -inventories/ - production/ - hosts # inventory file for production servers - group_vars/ - group1.yml # here we assign variables to particular groups - group2.yml - host_vars/ - hostname1.yml # here we assign variables to particular systems - hostname2.yml -staging/ - hosts # inventory file for staging environment - group_vars/ - group1.yml # here we assign variables to particular groups - group2.yml - host_vars/ - stagehost1.yml # here we assign variables to particular systems - stagehost2.yml -library/ -module_utils/ -filter_plugins/ -site.yml -webservers.yml -dbservers.yml -roles/ - common/ - webtier/ - monitoring/ - fooapp/ -``` - -If you want to use this directory structure run the command below. - -``` -$ sudo mkdir -p inventories/{production,staging}/{group_vars,host_vars} -$ sudo touch inventories/{production,staging}/hosts -$ sudo mkdir -p group_vars host_vars library module_utils filter_plugins -$ sudo mkdir -p roles/common/{tasks,handlers,templates,files,vars,defaults,meta,library,module_utils,lookup_plugins} -$ sudo touch site.yml roles/common/{tasks,handlers,templates,files,vars,defaults,meta}/main.yml -``` - -### How to Create a Simple Ansible Roles Directory Structure - -By default there is no “Roles” directory in your Ansible directory, so you have to create it first. - -``` -$ sudo mkdir /etc/ansible/roles -``` - -Use the following Ansible Galaxy command to create a simple directory structure for a role. - -``` -$ sudo ansible-galaxy init [/Path/to/Role_Name] -``` - -### What’s Ansible Galaxy? - -Ansible Galaxy refers to the Galaxy Website, a free platform for finding, downloading and sharing community developed roles. - -The Galaxy website offers pre-packaged units such as roles and collections. Provisioning infrastructure, deploy applications and you’ll find plenty of roles for all the tasks that you do on a daily basis. - -While writing this article I saw **23478** results and it is growing on a daily basis. - -To prove this, we are going to create the **“webserver”** role. To do so, run the following command. - -``` -$ sudo ansible-galaxy init /etc/ansible/roles/webserver -- Role /etc/ansible/roles/webserver was created successfully -``` - -Once you have created a new role, use the tree commmand to view the detailed directory structure. - -``` -$ tree /etc/ansible/roles/webserver - -/etc/ansible/roles/webserver -├── defaults -│ └── main.yml -├── files -├── handlers -│ └── main.yml -├── meta -│ └── main.yml -├── README.md -├── tasks -│ └── main.yml -├── templates -├── tests -│ ├── inventory -│ └── test.yml -└── vars - └── main.yml - 8 directories, 8 files -``` - -It comes with 8 directories and 8 files, details are as follows. - - * **defaults:** Default variables for the role - * **handlers:** It contains handlers, which may be used by this role or even anywhere outside this role. - * **meta:** Defines some meta data for this role. - * **tasks:** It contains the main list of tasks to be executed by the role. - * **templates:** It contains templates which can be deployed via this role. - * **vars:** Other variables for the role. - - - -This is a sample playbook that sets up the Apache Web server on Debian and Red Hat-based systems. - -``` -$ sudo nano /etc/ansible/playbooks/webserver.yml - ---- -- hosts: web - become: yes - name: "Install and Configure Apache Web Server on Linux" - tasks: - - name: "Install Apache Web Server on RHEL Based Systems" - yum: name=httpd update_cache=yes state=latest - when: ansible_facts['os_family']|lower == "redhat" - - - name: "Install Apache Web Server on Debian Based Systems" - apt: name=apache2 update_cache=yes state=latest - when: ansible_facts['os_family']|lower == "debian" - - - name: "Start the Apache Web Server" - service: - name: httpd - state: started - enabled: yes - - - name: "Enable mod_rewrite module" - apache2_module: - name: rewrite - state: present - - notify: - - restart apache - - handlers: - - name: "Restart Apache2 Web Server" - service: - name: apache2 - state: restarted - - - name: "Restart httpd Web Server" - service: - name: httpd - state: restarted -``` - -Let’s break the playbook above into Ansible roles. If you only have simple contents, add them to the **“main.yml”** file, otherwise create separate **“xyz.yml”** files for each task. - -**Make a note:** **“notify”** should be included in the last task, which is why we have added it to the **“module.yml”** file. - -Create a separate task to install the Apache Web Server on Red Hat-based systems. - -``` -$ sudo vi /etc/ansible/roles/webserver/tasks/redhat.yml - ---- -- name: "Install Apache Web Server on RHEL Based Systems" - yum: - name: httpd - update_cache: yes - state: latest -``` - -Create a separate task to install the Apache Web Server on Debian-based systems. - -``` -$ sudo vi /etc/ansible/roles/webserver/tasks/debian.yml - ---- -- name: "Install Apache Web Server on Debian Based Systems" - apt: - name: apache2 - update_cache: yes - state: latest -``` - -Create a separate task to start the Apache web server on Red Hat based systems. - -``` -$ sudo vi /etc/ansible/roles/webserver/tasks/service-httpd.yml - ---- -- name: "Start the Apache Web Server" - service: - name: httpd - state: started - enabled: yes -``` - -Create a separate task to start the Apache web server on Debian based systems. - -``` -$ sudo vi /etc/ansible/roles/webserver/tasks/service-apache2.yml - ---- -- name: "Start the Apache Web Server" - service: - name: apache2 - state: started - enabled: yes -``` - -Create a separate task to copy the index file into the Apache web root directory. - -``` -$ sudo nano /etc/ansible/roles/webserver/tasks/configure.yml - ---- -- name: Copy index.html file - copy: src=files/index.html dest=/var/www/html -``` - -Create a separate task to install rewrite module on Debian based systems. - -``` -$ sudo nano /etc/ansible/roles/webserver/tasks/modules.yml - ---- -- name: "Enable mod_rewrite module" - apache2_module: - name: rewrite - state: present - - notify: - - restart apache -``` - -Finally import all tasks into the **“main.yml”** file of the Tasks directory. - -``` -$ sudo nano /etc/ansible/roles/webserver/tasks/main.yml - ---- -tasks file for /etc/ansible/roles/webserver -- import_tasks: redhat.yml - when: ansible_facts['os_family']|lower == 'redhat' - -- import_tasks: debian.yml - when: ansible_facts['os_family']|lower == 'debian' - -- import_tasks: service-httpd.yml -- import_tasks: service-apache2.yml -- import_tasks: configure.yml -- import_tasks: modules.yml - when: ansible_facts['os_family']|lower == 'debian' -``` - -Add the handler information to the **“main.yml”** file of the handlers directory. - -``` -$ sudo nano /etc/ansible/roles/webserver/handlers/main.yml - ---- -#handlers file for /etc/ansible/roles/webserver -- name: "Restart httpd Web Server" - service: - name: httpd - state: restarted - -- name: "Restart Apache2 Web Server" - service: - name: apache2 - state: restarted -``` - -Add an index.html file to the files directory. This is the file you want to copy on the target server. - -``` -$ sudo nano /etc/ansible/roles/webserver/files/index.html - -This is the test page of 2DayGeek.com for Ansible Tutorials -``` - -You have successfully broken the playbook into Ansible roles using the steps above. Now, your new Ansible role may look like the one below. - -![][4] - -If you have done everything for your Ansible role, then finally import this role into your playbook. - -``` -$ sudo nano /etc/ansible/playbooks/webserver-role.yml - ---- -- hosts: all - become: yes - name: "Install and Configure Apache Web Server on Linux" - roles: - - webserver -``` - -Once you have done everything, I advise you to check the Playbook syntax before executing it. - -``` -$ ansible-playbook /etc/ansible/playbooks/webserver-role.yml --syntax-check - -playbook: /etc/ansible/playbooks/webserver-role.yml -``` - -Finally execute the Ansible playbook to see the magic. - -![][4] - -Hope this tutorial helped you to learn about the Ansible roles. If you are satisfied, please share the article on social media. If you would like to improve this article, add your comments in the comment section. - --------------------------------------------------------------------------------- - -via: https://www.2daygeek.com/ansible-roles-quick-start-guide-with-examples/ - -作者:[Magesh Maruthamuthu][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://www.2daygeek.com/author/magesh/ -[b]: https://github.com/lujun9972 -[1]: https://www.2daygeek.com/install-configure-ansible-automation-tool-linux-quick-start-guide/ -[2]: https://www.2daygeek.com/ansible-ad-hoc-command-quick-start-guide-with-examples/ -[3]: https://www.2daygeek.com/ansible-playbooks-quick-start-guide-with-examples/ -[4]: data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7 diff --git a/sources/tech/20200204 SimpleLogin- Open Source Solution to Protect Your Email Inbox From Spammers.md b/sources/tech/20200204 SimpleLogin- Open Source Solution to Protect Your Email Inbox From Spammers.md deleted file mode 100644 index 75c8e84451..0000000000 --- a/sources/tech/20200204 SimpleLogin- Open Source Solution to Protect Your Email Inbox From Spammers.md +++ /dev/null @@ -1,158 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (SimpleLogin: Open Source Solution to Protect Your Email Inbox From Spammers) -[#]: via: (https://itsfoss.com/simplelogin/) -[#]: author: (Ankush Das https://itsfoss.com/author/ankush/) - -SimpleLogin: Open Source Solution to Protect Your Email Inbox From Spammers -====== - -_**Brief: SimpleLogin is an open-source service to help you protect your email address by giving you a permanent alias email address.**_ - -Normally, you have to use your real email address to sign up for services that you want to use personally or for your business. - -In the process, you’re sharing your email address – right? And, that potentially exposes your email address to spammers (depending on where you shared the information). - -What if you can protect your real email address by providing an alias for it instead? No – I’m not talking about disposable email addresses like 10minutemail which could be useful for temporary sign-ups – even though they’ve been blocked by certain services. - -I’m talking about something similar to “_[Hide My Emai for Sign in with Apple ID][1]_” but a free and open-source solution i.e [SimpleLogin][2]. - -### SimpleLogin: An open source service to protect your email inbox - -![][3] - -_It is worth noting that you still have to use your existing email client (or email service) to receive and send emails – but with this service, you get to hide your real email ID._ - -SimpleLogin is an open-source project (you can find it on [GitHub][4]) available for free (with premium upgrade options) that aims to keep your email private. - -Unlike temporary email services, it generates a permanent random alias for your email address that you can use to sign up for services without revealing your real email. - -The alias works as a point of contact to forward the emails intended to your real email ID. - -**You’ll receive the emails sent to the alias email address in your real email inbox and if you believe that the alias is receiving too many spams, you block the alias. This way, you completely stop getting spam emails sent to the particular aliased email address.** - -Not just limited to receiving emails but you can also send emails through the alias email address. Interesting, right? And, using this coupled with [secure email services][5] should be a good combination to protect your privacy. - -**Recommended Read:** - -![][6] - -#### [Best VPN Services for Privacy Minded Linux Users][7] - -Here are our recommendations for best VPN services for Linux users to secure their privacy and enhance their online security. Check it out. - -### Features of SimpleLogin - -![][8] - -Before taking a look at how it works, let me highlight what it offers overall to the Internet users and web developers as well: - - * Protects your real email address by generating an alias address - * Send/Recieve emails through your alias - * Block the alias if emails get too spammy - * Custom domain supported with premium plans - * You can choose to self-host it - * If you’re a web developer, you can follow the [documentation][9] to integrate a “**Sign in with SimpleLogin**” button to your login page. - - - -You can either utilize the web browser or use the extension for Firefox, Chrome and Safari. - -[SimpleLogin][2] - -### How SimpleLogin Works? - -![][10] - -To start with, you’ll have to sign up for the service with your primary email ID that you want to keep private. - -Once done – you have to use your alias email to sign up for any other services you want. - -![][11] - -The number of aliases generated is limited in the free plan – however, you can upgrade to the premium plan if you want to generate different alias email addresses for every site. - -You don’t necessarily need to use the web portal, you can use the browser extension to generate aliases and use them when needed as shown in the image below: - -![][12] - -Even if you want to send an email without revealing your real email ID, just generate an alias email by typing in the receiver’s email ID and paste the alias in your email client to send it. - -### Brief conversation with SimpleLogin’s founder - -I was quite impressed to see an open-source service like this – so I reached out to [**Son Nguyen Kim**][13] (_SimpleLogin’s founder_). Here’s a few things I asked along with the responses I got: - -**How can you assure users that they can rely on your service for their personal/business use?** - -**Son Nguyen Kim:** SimpleLogin follows all the best practices in terms of [email deliverability][14] to reduce the emails ending up in the Spam folder. To mention a few: - - * SPF, DKIM and strict DMARC - * TLS everywhere - * “Clean” IP: we made sure that our IP addresses are not blacklisted anywhere - * Constant monitoring to avoid abuses. - * Participate in email providers postmaster programs - - - -**How sustainable is your business currently? ** - -**Son Nguyen Kim:** Though in Beta, we already have paying customers. They use SimpleLogin both personally (to protect privacy) and for their business (create emails with their domains). - -**What features have you planned for the future?** - -**Son Nguyen Kim**: An iOS app is already in progress, the Android app will follow just after. - - * [PGP][15] to encrypt emails - * Able to strip images from emails. Email tracking is usually done [using a 1-pixel image][16] so tracking will also be removed with this feature enabled. - * [U2F][17] support (Yubikey) - * Better integration with existing email infrastructure for people who want to self-host SimpleLogin - - - -You can also find a public roadmap to their plans on [Trello][18]. - -**Wrapping Up** - -Personally, I would really love to see this succeed as a privacy-friendly alternative to social network sign-up options implemented on various web services. - -In addition to that, as it stands now as a service to generate alias email – that should suffice a lot of users who do not want to share their real email address. My initial impressions on SimpleLogin’s beta phase is quite positive. I’d recommend you to give it a try! - -They also have a [Patreon][19] page – if you wish to donate instead of opting for a paying customer to help the development of SimpleLogin. - -Have you tried something like this before? How exciting do you think SimpleLogin is? Feel free to share your thoughts in the comments. - --------------------------------------------------------------------------------- - -via: https://itsfoss.com/simplelogin/ - -作者:[Ankush Das][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://itsfoss.com/author/ankush/ -[b]: https://github.com/lujun9972 -[1]: https://support.apple.com/en-us/HT210425 -[2]: https://simplelogin.io/ -[3]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/01/simplelogin-website.jpg?ssl=1 -[4]: https://github.com/simple-login/app -[5]: https://itsfoss.com/secure-private-email-services/ -[6]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2019/05/best-vpn-linux.png?fit=800%2C450&ssl=1 -[7]: https://itsfoss.com/best-vpn-linux/ -[8]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/01/simplelogin-settings.jpg?ssl=1 -[9]: https://docs.simplelogin.io/ -[10]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/01/simplelogin-details.png?ssl=1 -[11]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/01/simplelogin-dashboard.jpg?ssl=1 -[12]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/01/simplelogin-extensions.jpg?ssl=1 -[13]: https://twitter.com/nguyenkims -[14]: https://blog.hubspot.com/marketing/email-delivery-deliverability -[15]: https://www.openpgp.org/ -[16]: https://www.theverge.com/2019/7/3/20681508/tracking-pixel-email-spying-superhuman-web-beacon-open-tracking-read-receipts-location -[17]: https://en.wikipedia.org/wiki/Universal_2nd_Factor -[18]: https://trello.com/b/4d6A69I4/open-roadmap -[19]: https://www.patreon.com/simplelogin diff --git a/sources/tech/20200205 OpenCensus to monitor your Kubernetes cluster.md b/sources/tech/20200205 OpenCensus to monitor your Kubernetes cluster.md deleted file mode 100644 index d0654aaf9b..0000000000 --- a/sources/tech/20200205 OpenCensus to monitor your Kubernetes cluster.md +++ /dev/null @@ -1,107 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (OpenCensus to monitor your Kubernetes cluster) -[#]: via: (https://opensource.com/article/20/2/kubernetes-opencensus) -[#]: author: (Yuri Grinshteyn https://opensource.com/users/yuri-grinshteyn) - -OpenCensus to monitor your Kubernetes cluster -====== -Learn how to use OpenCensus, a set of open source libraries for -observability instrumentation and metrics tracing. -![Ship captain sailing the Kubernetes seas][1] - -In my last article in this series, I [introduced monitoring with Prometheus][2], the leading open source metric instrumentation, collection, and storage toolkit. While Prometheus has become the de facto standard for monitoring Kubernetes for many users, there may be reasons why you might choose another approach for metric telemetry. - -One reason is that using Prometheus introduces another component in your cluster that needs to be maintained and updated and will require additional management to ensure data persistence over the long term. Another reason is that Prometheus collects an incredibly large set of metrics right out of the box, and this could become cost-prohibitive in situations where metric volume is an input into your overall observability costs. - -This article will introduce you to [OpenCensus][3], a set of open source libraries for observability instrumentation. OpenCensus is the currently recommended library to use for instrumenting services to collect traces and metrics. The OpenTracing and OpenCensus projects have been merged into [OpenTelemetry][4], which will become the recommended library. - -While OpenCensus enables both metrics and distributed tracing, this article focuses on metrics by: - - * Describing the OpenCensus approach to instrumentation and its data model - * Walking through a tutorial to explain how to instrument an application, deploy a sample application, and review the metrics that you can create with OpenCensus - - - -I will revisit tracing in a future article. - -### OpenCensus basics - -OpenCensus' implementation depends on three core components: - - * The [instrumentation][5] to create metrics and record data points (varies by language) - * An [exporter][6] to send metric data to a storage backend (varies by language) - * The backend to store metrics and enable querying metric data (varies by database) - - - -To use OpenCensus in your application to record custom metrics, you will need to understand these elements for your particular programming languages and infrastructure. - -#### Instrumentation - -To understand how to instrument your application, you need first to understand OpenCensus' primitives, which are **measurements**, **measures**, **views**, and **aggregations**. - - * **Measurement:** A measurement is the most fundamental entity; it's the single data point collected that represents a value at a point in time. For example, for a latency metric measured in milliseconds (ms), a measurement of 100 could represent an event with 100ms latency. - * **Measure:** A measure represents a metric to be recorded. For example, you could use a "latency" measure to record HTTP response latency from your service. A measure is made up of a name, a description, and the units that the metric uses. For example, to measure latency, you might specify: - * Name: response_latency - * Description: latency of server response in ms - * Unit: ms - * **View:** A view is the combination of a measure, an aggregation, and optional tags. Views are the mechanism you'll use to connect to an exporter to send the captured values to a storage backend. A view includes: - * Name - * Description - * The measure that will produce measurements for this collection - * TagKeys, if you're using tags - * **Aggregations:** Each view is also required to specify an aggregation; that is, how the view will treat multiple measures. Aggregations can be one of the following: - * Count: The count of the number of measurement points in the view - * Distribution: Histogram distribution of the points in the view - * Sum: A sum of the values of the measurement points - * LastValue: Only the last recorded value in the measurement - - - -You can also refer to OpenCensus' [source][7] for additional information about the primitives. - -#### Exporters - -Once you have written the instrumentation to create measures, capture measurements, and aggregate them into views, you need an exporter to send your recorded metric data to your chosen storage backend. Unlike Prometheus, where you expose a dedicated metric endpoint to be scraped, OpenCensus works on a push model—the exporter pushes your collected data to the specified backend. You need to [choose the exporter][6] based on: - - * The language that your application and instrumentation are written in - * Available support for stats (metrics) - * The available backend options - - - -Using an exporter requires instantiating it in your code, registering it, and then registering your view to have the exporter send the collected data to the backend. - -### Leverage metrics in OpenCensus - -Now that you understand the terminology for how OpenCensus works to collect and export metrics, the next thing to learn is how metrics in OpenCensus function. Unlike [Prometheus][8], where you have to define the metric kind upfront, OpenCensus simply requires you to _collect_ the measurements and then _aggregate_ them in the _view_ before sending them to the _exporter_. The measurements support integer and float values. From there, you can use create histograms using the _distribution_ aggregation, add up the number of samples using the _count_ aggregation, or add up the collected values using the _sum_ aggregation. - -Now you have a basic understanding of what OpenCensus is, how it works, and the kinds of data it can collect and store. Download your favorite tooling (or use [my tutorial here][9] and a [quickstart lab][10]) and take OpenCensus for a spin. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/2/kubernetes-opencensus - -作者:[Yuri Grinshteyn][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/yuri-grinshteyn -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/ship_captain_devops_kubernetes_steer.png?itok=LAHfIpek (Ship captain sailing the Kubernetes seas) -[2]: https://opensource.com/article/19/11/introduction-monitoring-prometheus -[3]: https://opencensus.io/ -[4]: https://opentelemetry.io/ -[5]: https://github.com/census-instrumentation -[6]: https://opencensus.io/exporters/supported-exporters/ -[7]: https://opencensus.io/stats/ -[8]: https://prometheus.io/docs/concepts/metric_types/ -[9]: https://github.com/yuriatgoogle/stack-doctor -[10]: https://google.qwiklabs.com/ diff --git a/sources/tech/20200207 Introducing Zuul for improved CI-CD.md b/sources/tech/20200207 Introducing Zuul for improved CI-CD.md deleted file mode 100644 index 54144443af..0000000000 --- a/sources/tech/20200207 Introducing Zuul for improved CI-CD.md +++ /dev/null @@ -1,84 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Introducing Zuul for improved CI/CD) -[#]: via: (https://opensource.com/article/20/2/zuul) -[#]: author: (Jeremy Stanley https://opensource.com/users/fungi) - -Introducing Zuul for improved CI/CD -====== -A quick history of how and why Zuul is replacing Jenkins in CI testing -in the OpenStack community. -![Plumbing tubes in many directions][1] - -[Jenkins][2] is a marvelous piece of software. As an execution and automation engine, it's one of the best you're going to find. Jenkins serves as a key component in countless continuous integration (CI) systems, and this is a testament to the value of what its community has built over the years. But that's what it is­­—a component. Jenkins is not a CI system itself; it just runs things for you. It does that really well and has a variety of built-ins and a vibrant ecosystem of plugins to help you tell it what to run, when, and where. - -CI is, at the most fundamental level, about integrating the work of multiple software development streams into a coherent whole with as much frequency and as little friction as possible. Jenkins, on its own, doesn't know about your source code or how to merge it together, nor does it know how to give constructive feedback to you and your colleagues. You can, of course, glue it together with other software that can perform these activities, and this is how many CI systems incorporate Jenkins. - -It's what we did for OpenStack, too, at least at first. - -### If it's not tested, it's broken - -In 2010, an open source community of projects called [OpenStack][3] was forming. Some of the developers brought in to assist with the collaboration infrastructure also worked on a free database project called [Drizzle][4], and a key philosophy within that community was the idea "if it's not tested, it's broken." So OpenStack, on day one, required all proposed changes of its software to be reviewed and tested for regressions before they could be approved to merge into the trunk of any source code repositories. To do this, Hudson (which later forked to form the Jenkins project) was configured to run tests exercising every change. - -A plugin was installed to interface with the [Gerrit][5] code review system, automatically triggering jobs when new changes were proposed and reporting back with review comments indicating whether they succeeded or failed. This may sound rudimentary by today's standards, but at the time, it was a revolutionary advancement for an open source collaboration. No developer on OpenStack was special in the eyes of CI, and everyone's changes had to pass this growing battery of tests before they could merge—a concept the project called "project gating." - -There was, however, an emerging flaw with this gating idea: To guarantee two unrelated changes didn't alter a piece of software in functionally incompatible ways, they had to be tested one at a time in sequence before they could merge. OpenStack was complicated to install and test, even back then, and quickly grew in popularity. The rising volume of developer contributions coupled with increasing test coverage meant that, during busy periods, there was simply not enough time to test every change that passed review. Some longer-running jobs took nearly an hour to complete, so the upper bound for what could get through the gate was roughly two dozen changes in a day. The resulting merge backlog showed a new solution was required. - -### Enter Zuul - -During an OpenStack CI meeting in May 2012, one of the CI team members, James Blair, [announced][6] that he'd "been working on speculative execution of Jenkins jobs." **Speculative execution** is an optimization most commonly found in the pipelines of modern microprocessors. Much like the analogy with processor hardware, the theory was that by optimistically predicting positive gating results for changes recently approved but that had not yet completed their tests, subsequently approved changes could be tested concurrently and then conditionally merged as long as their predecessors also passed tests and merged. James said he had a name for this intelligent scheduler: [Zuul][7]. - -Within this time frame, challenges from trying to perform better revision control for Jenkins' XML job configuration led to the creation of the human-readable YAML-based [Jenkins Job Builder][8] templating engine. Limited success with the JClouds plugin for Jenkins and cumbersome attempts to use jobs for refreshing cloud images of single-use Jenkins slaves ended with the creation of the [Nodepool][9] service. Limited log-storage capabilities resulted in the team adding separate external solutions for organizing, serving, and indexing job logs and assuming maintainership of an abandoned secure copy protocol (SCP) plugin replacing the less-secure FTP option that Jenkins provided out of the box. The OpenStack infrastructure team was slowly building a fleet of services and utilities around Jenkins but began to bump up against a performance limitation. - -### Multiplying Jenkins - -By mid-2013, Nodepool was constantly recycling as many as 100 virtual machines registered with Jenkins as slaves, but this was no longer enough to keep up with the growing workload. Thread contention for global locks in Jenkins thwarted all attempts to push past this threshold, no matter how much processor power and memory was thrown at the master server. The project had offers to donate additional capacity for Jenkins slaves to help relieve the frequent job backlog, but this would require an additional Jenkins master. The efficient division of work between multiple masters needed a new channel of communication for dispatch and coordination of jobs. Zuul's maintainers identified the [Gearman][10] job server protocol as an ideal fit, so they outfitted Zuul with a new [geard][11] service and extended Jenkins with a custom Gearman client plugin. - -Now that jobs were spread across a growing assembly of Jenkins masters, there was no longer any single dashboard with a complete view of job activity and results. In order to facilitate this new multi-master world, Zuul grew its own status API and WebUI, as well as a feature to emit metrics through the [StatsD][12] protocol. Over the next few years, Zuul steadily subsumed more of the CI features its users relied on, while Jenkins' place in the system waned accordingly, and it was becoming a liability. OpenStack made an early choice to standardize on the Python programming language; this was reflected in Zuul's development, yet Jenkins and its plugins were implemented in Java. Zuul's configuration was maintained in the same YAML serialization format that OpenStack used to template its own Jenkins jobs, while Jenkins kept everything in baroque XML. These differences complicated ongoing maintenance and led to an unnecessarily steep learning curve for new administrators from related communities that had started trying to run Zuuls. - -The time was right for another revolution. - -### The rise of Ansible - -In early 2016, Zuul's maintainers embarked on an ambitious year-long overhaul of their growing fleet of services with the goal of eliminating Jenkins from the overall system design. By this time, Jenkins was serving only as a conduit for running jobs consisting mostly of shell scripts on slave nodes over SSH, providing real-time streaming of job output and copying resulting artifacts to longer-term storage. [Ansible][13] was found to be a great fit for that first need; purpose-built to run commands remotely over SSH, it was written in Python, just like Zuul, and also used YAML to define its tasks. It even had built-in modules for features the team had previously implemented as bespoke Jenkins plugins. Ansible provided true multi-node support right out of the box, so the same playbooks could be used for both simulating and performing complex production deployments. An ever-expanding ecosystem of third-party modules filled in any gaps, in much the same way as the Jenkins community's plugins had before. - -A new Zuul executor service filled the prior role of the Jenkins master: it acted on pending requests in the scheduler's geard, dispatched them via Ansible to ephemeral servers managed by Nodepool, then collected results and artifacts for publication. It also exposed in-progress build output over the classic [RFC 742 Name/Finger protocol][14], streamed in real time from an extension of Ansible's command output module. Once it was no longer necessary to limit jobs to what Jenkins' parser could comprehend, Zuul was free to grow new features like distributed in-repository job definitions, shareable between projects with inheritance and secure handling of secrets, as well as the ability to test-drive proposed changes for the jobs themselves. Jenkins served its purpose admirably, but at least for Zuul, its usefulness was finally at an end. - -### Testing the future - -Zuul's community likes to say that it "tests the future" through its novel application of speculative execution. Gone are the harrowing days of wondering whether the improvement you want to make to an existing job will render it non-functional once it's applied in production. Overloaded review teams for a massive central job repository are a thing of the past. Jobs are treated as a part of the software and shipped right alongside the rest of the source code, taking advantage of Zuul's other features like cross-repository dependencies so that your change to part of a job in one project can be exercised with a proposed job change in another project. It will even comment on your job changes, highlighting specific lines with syntax problems as if it were another code reviewer giving you advice. - -These were features Zuul only dreamed of before, but which required freedom from Jenkins so that it could take job parsing into its own hands. This is the future of CI, and Zuul's users are living it. - -As of early 2019, the OpenStack Foundation recognized Zuul as an independent, openly governed project with its own identity and flourishing community. If you're into open source CI, consider taking a look. Development on the next evolution of Zuul is always underway, and you're welcome to help. Find out more on [Zuul's website][7]. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/2/zuul - -作者:[Jeremy Stanley][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/fungi -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/plumbing_pipes_tutorial_how_behind_scenes.png?itok=F2Z8OJV1 (Plumbing tubes in many directions) -[2]: https://jenkins.io/ -[3]: https://www.openstack.org/ -[4]: https://en.wikipedia.org/wiki/Drizzle_(database_server) -[5]: https://www.gerritcodereview.com/ -[6]: http://eavesdrop.openstack.org/irclogs/%23openstack-meeting/%23openstack-meeting.2012-05-22.log.html#t2012-05-22T19:42:27 -[7]: https://zuul-ci.org/ -[8]: https://jenkins-job-builder.readthedocs.io/ -[9]: https://zuul-ci.org/docs/nodepool/ -[10]: http://gearman.org/ -[11]: https://docs.opendev.org/opendev/gear/#server-example -[12]: https://github.com/statsd/statsd -[13]: https://www.ansible.com/ -[14]: https://tools.ietf.org/html/rfc742 diff --git a/sources/tech/20200211 Automate your live demos with this shell script.md b/sources/tech/20200211 Automate your live demos with this shell script.md deleted file mode 100644 index 56b8626148..0000000000 --- a/sources/tech/20200211 Automate your live demos with this shell script.md +++ /dev/null @@ -1,210 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Automate your live demos with this shell script) -[#]: via: (https://opensource.com/article/20/2/live-demo-script) -[#]: author: (Lisa Seelye https://opensource.com/users/lisa) - -Automate your live demos with this shell script -====== -Try this script the next time you give a presentation to prevent making -typos in front of a live audience. -![Person using a laptop][1] - -I gave a talk about [multi-architecture container images][2] at [LISA19][3] in October that included a lengthy live demo. Rather than writing out 30+ commands and risking typos, I decided to automate the demo with a shell script. - -The script mimics what appears as input/output and runs the real commands in the background, pausing at various points so I can narrate what is going on. I'm very pleased with how the script turned out and the effect on stage. The script and supporting materials for my presentation are available on [GitHub][4] under an Apache 2.0 license. - -### The script - - -``` -#!/bin/bash - -set -e - -IMG=thedoh/lisa19 -REGISTRY=docker.io -VERSION=19.10.1 - -# Plan B with GCR: -#IMG=dulcet-iterator-213018 -#REGISTRY=us.gcr.io -#VERSION=19.10.1 - -pause() { -  local step="${1}" -  ps1 -  echo -n "# Next step: ${step}" -  read -} - -ps1() { -  echo -ne "\033[01;32m${USER}@$(hostname -s) \033[01;34m$(basename $(pwd)) \$ \033[00m" -} - -echocmd() { -  echo "$(ps1)$@" -} - -docmd() { -  echocmd $@ -  $@ -} - -step0() { -  local registry="${1}" img="${2}" version="${3}" -  # Mindful of tokens in ~/.docker/config.json -  docmd grep experimental ~/.docker/config.json -  -  docmd cd ~/go/src/github.com/lisa/lisa19-containers -  -  pause "This is what we'll be building" -  docmd export REGISTRY=${registry} -  docmd export IMG=${img} -  docmd export VERSION=${version} -  docmd make REGISTRY=${registry} IMG=${img} VERSION=${version} clean -} - -step1() { -  local registry="${1}" img="${2}" version="${3}" -  -  docmd docker build --no-cache --platform=linux/amd64 --build-arg=GOARCH=amd64 -t ${REGISTRY}/${IMG}:amd64-${VERSION} . -  pause "ARM64 image next" -  docmd docker build --no-cache --platform=linux/arm64 --build-arg=GOARCH=arm64 -t ${REGISTRY}/${IMG}:arm64-${VERSION} . -} - -step2() { -  local registry="${1}" img="${2}" version="${3}" origpwd=$(pwd) savedir=$(mktemp -d) jsontemp=$(mktemp -t XXXXX) -  chmod 700 $jsontemp $savedir -  # Set our way back home and get ready to fix our arm64 image to amd64. -  echocmd 'origpwd=$(pwd)' -  echocmd 'savedir=$(mktemp -d)' -  echocmd "mkdir -p \$savedir/change" -  mkdir -p $savedir/change &>/dev/null -  echocmd "docker save ${REGISTRY}/${IMG}:arm64-${VERSION} 2>/dev/null 1> \$savedir/image.tar" -  docker save ${REGISTRY}/${IMG}:arm64-${VERSION} 2>/dev/null 1> $savedir/image.tar -  pause "untar the image to access its metadata" -  -  echocmd "cd \$savedir/change" -  cd $savedir/change -  echocmd tar xf \$savedir/image.tar -  tar xf $savedir/image.tar -  docmd ls -l -  -  pause "find the JSON config file" -  echocmd 'jsonfile=$(jq -r ".[0].Config" manifest.json)' -  jsonfile=$(jq -r ".[0].Config" manifest.json) -  -  pause "notice the original metadata says amd64" -  echocmd jq '{architecture: .architecture, ID: .config.Image}' \$jsonfile -  jq '{architecture: .architecture, ID: .config.Image}' $jsonfile -  -  pause "Change from amd64 to arm64 using a temp file" -  echocmd "jq '.architecture = \"arm64\"' \$jsonfile > \$jsontemp" -  jq '.architecture = "arm64"' $jsonfile > $jsontemp -  echocmd /bin/mv -f -- \$jsontemp \$jsonfile -  /bin/mv -f -- $jsontemp $jsonfile - -  pause "Check to make sure the config JSON file says arm64 now" -  echocmd jq '{architecture: .architecture, ID: .config.Image}' \$jsonfile -  jq '{architecture: .architecture, ID: .config.Image}' $jsonfile -  -  pause "delete the image with the incorrect metadata" -  docmd docker rmi ${REGISTRY}/${IMG}:arm64-${VERSION} -  -  pause "Re-compress the ARM64 image and load it back into Docker, then clean up the temp space" -  echocmd 'tar cf - * | docker load' -  tar cf - * | docker load - -  docmd cd $origpwd -  echocmd "/bin/rm -rf -- \$savedir" -  /bin/rm -rf -- $savedir &>/dev/null -} - -step3() { -  local registry="${1}" img="${2}" version="${3}" -  docmd docker push ${registry}/${img}:amd64-${version} -  pause "push ARM64 image to ${registry}" -  docmd docker push ${registry}/${img}:arm64-${version} -} - -step4() { -  local registry="${1}" img="${2}" version="${3}" -  docmd docker manifest create ${registry}/${img}:${version} ${registry}/${img}:arm64-${version} ${registry}/${img}:amd64-${version} -  -  pause "add a reference to the amd64 image to the manifest list" -  docmd docker manifest annotate ${registry}/${img}:${version} ${registry}/${img}:amd64-${version} --os linux --arch amd64 -  pause "now add arm64" -  docmd docker manifest annotate ${registry}/${img}:${version} ${registry}/${img}:arm64-${version} --os linux --arch arm64 -} - -step5() { -  local registry="${1}" img="${2}" version="${3}" -  docmd docker manifest push ${registry}/${img}:${version} -} - -step6() { -  local registry="${1}" img="${2}" version="${3}" -  docmd make REGISTRY=${registry} IMG=${img} VERSION=${version} clean -  -  pause "ask docker.io if ${img}:${version} has a linux/amd64 manifest, and run it" -  docmd docker pull --platform linux/amd64 ${registry}/${img}:${version} -  docmd docker run --rm -i ${registry}/${img}:${version} -  -  pause "clean slate again" -  docmd make REGISTRY=${registry} IMG=${img} VERSION=${version} clean -  -  pause "now repeat for linux/arm64 and see what it gives us" -  docmd docker pull --platform linux/arm64 ${registry}/${img}:${version} -  set +e -  docmd docker run --rm -i ${registry}/${img}:${version} -  set -e -  if [[ $(uname -s) == "Darwin" ]]; then -    pause "note about Docker on Mac and binfmt_misc: binfmt_misc lets a mac run arm64 binaries in the Docker VM" -  fi -} - -pause "initial setup" -step0 ${REGISTRY} ${IMG} ${VERSION} -pause "1 build constituent images" -step1 ${REGISTRY} ${IMG} ${VERSION} - -pause "2 fix ARM64 metadata" -step2 ${REGISTRY} ${IMG} ${VERSION} - -pause "3 push constituent images up to docker.io" -step3 ${REGISTRY} ${IMG} ${VERSION} - -pause "4 build the manifest list for the image" -step4 ${REGISTRY} ${IMG} ${VERSION} - -pause "5 Push the manifest list to docker.io" -step5 ${REGISTRY} ${IMG} ${VERSION} - -pause "6 clean slate, and validate the list-based image" -step6 ${REGISTRY} ${IMG} ${VERSION} - -docmd echo 'Manual steps all done!' -make REGISTRY=${REGISTRY} IMG=${IMG} VERSION=${VERSION} clean &>/dev/null -``` - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/2/live-demo-script - -作者:[Lisa Seelye][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/lisa -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/laptop_screen_desk_work_chat_text.png?itok=UXqIDRDD (Person using a laptop) -[2]: https://www.usenix.org/conference/lisa19/presentation/seelye -[3]: https://www.usenix.org/conference/lisa19 -[4]: https://github.com/lisa/lisa19-containers diff --git a/sources/tech/20200212 Manage your SSL certificates with the ssl-on-demand script.md b/sources/tech/20200212 Manage your SSL certificates with the ssl-on-demand script.md deleted file mode 100644 index e4be89e4f5..0000000000 --- a/sources/tech/20200212 Manage your SSL certificates with the ssl-on-demand script.md +++ /dev/null @@ -1,685 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Manage your SSL certificates with the ssl-on-demand script) -[#]: via: (https://opensource.com/article/20/2/ssl-demand) -[#]: author: (Abhishek Tamrakar https://opensource.com/users/tamrakar) - -Manage your SSL certificates with the ssl-on-demand script -====== -Keep track of certificate expirations to prevent problems with the -ssl-on-demand script. -![Lock][1] - -It happens all the time, to the largest of companies. An important certificate doesn't get renewed, and services become inaccessible. It happened to Microsoft Teams in early February 2020, awkwardly timed just after the launch of a major television campaign promoting it as a [Slack competitor][2]. Embarrassing as that may be, it's sure to happen to someone else in the future. - -On the modern web, expired [certificates][3] can create major problems for websites, ranging from unhappy users who can't connect to a site to security threats from bad actors who take advantage of the failure to renew a certificate. - -[Ssl-on-demand][4] is a set of SSL scripts to help site owners manage certificates. It is used for on-demand certificate generation and validation and it can create certificate signing requests ([CSRs][5]) and predict the expiration of existing certificates. - -### Automate SSL expiry checks - - -``` - USAGE: SSLexpiryPredictions.sh -[cdewh] - -  DESCRIPTION: This script predicts the expiring SSL certificates based on the end date. - -  OPTIONS: - -  -c|   sets the value for configuration file which has server:port or host:port details. -        -  -d|   sets the value of directory containing the certificate files in crt or pem format. - -  -e|   sets the value of certificate extention, e.g crt, pem, cert. -        crt: default [to be used with -d, if certificate file extention is other than .crt] - -  -w|   sets the value for writing the script output to a file. - -  -h|   prints this help and exit. -``` - -**Examples:** - -To create a file with a list of all servers and their port numbers to make an SSL handshake, use: - - -``` -cat > servers.list -         server1:port1 -         server2:port2 -         server3:port3 -        (ctrl+d) -        -$ ./SSLexpiryPredictions.sh -c server.list -``` - -Run the script by providing the certificate location and extension (in case it is not .crt): - - -``` -`$ ./SSLexpiryPredictions.sh -d /path/to/certificates/dir -e pem` -``` - -### Automate CSR and private key creation - - -``` -Usage:  genSSLcsr.sh [options] -[cdmshx] -  [-c (common name)] -  [-d (domain name)] -  [-s (SSL certificate subject)] -  [-p (password)] -  [-m (email address)] *(Experimental) -  [-r (remove pasphrase) default:true] -  [-h (help)] -  [-x (optional)] - -[OPTIONS] -  -c|   Sets the value for common name. -        A valid common name is something that ends with 'xyz.com' - -  -d|   Sets the domain name. - -  -s|   Sets the subject to be applied to the certificates. -        '/C=country/ST=state/L=locality/O=organization/OU=organizationalunit/emailAddress=email' - -  -p|   Sets the password for private key. - -  -r|   Sets the value of remove passphrase. -        true:[default] passphrase will be removed from key. -        false: passphrase will not be removed and key wont get printed. - -  -m|   Sets the mailing capability to the script. -        (Experimental at this time and requires a lot of work) - -  -x|   Creates the certificate request and key but do not print on screen. -        To be used when script is used just to create the key and CSR with no need -        + to generate the certficate on the go. - -  -h|   Displays the usage. No further functions are performed. - -  Example: genSSLcsr.sh -c mywebsite.xyz.com -m [myemail@mydomain.com][6] -``` - -### The scripts - -#### 1. SSLexpiryPredictions.sh - - -``` -#!/bin/bash -############################################## -# -#       PURPOSE: The script to predict expiring SSL certificates. -# -#       AUTHOR: 'Abhishek.Tamrakar' -# -#       VERSION: 0.0.1 -# -#       COMPANY: Self -# -#       EMAIL: [abhishek.tamrakar08@gmail.com][7] -# -#       GENERATED: on 2018-05-20 -# -#       LICENSE: Copyright (C) 2018 Abhishek Tamrakar -# -#  Licensed under the Apache License, Version 2.0 (the "License"); -#  you may not use this file except in compliance with the License. -#  You may obtain a copy of the License at -# -#       -# -#   Unless required by applicable law or agreed to in writing, software -#   distributed under the License is distributed on an "AS IS" BASIS, -#   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -#   See the License for the specific language governing permissions and -#   limitations under the License. -############################################## - -#your Variables go here -script=${0##/} -exitcode='' -WRITEFILE=0 -CONFIG=0 -DIR=0 -# functions here -usage() -{ -cat <<EOF - -  USAGE: $script -[cdewh]" - -  DESCRIPTION: This script predicts the expiring SSL certificates based on the end date. - -  OPTIONS: - -  -c|   sets the value for configuration file which has server:port or host:port details. - -  -d|   sets the value of directory containing the certificate files in crt or pem format. - -  -e|   sets the value of certificate extention, e.g crt, pem, cert. -        crt: default - -  -w|   sets the value for writing the script output to a file. - -  -h|   prints this help and exit. - -EOF -exit 1 -} -# print info messages -info() -{ -  printf '\n%s: %6s\n' "INFO" "$@" -} -# print error messages -error() -{ -  printf '\n%s: %6s\n' "ERROR" "$@" -  exit 1 -} -# print warning messages -warn() -{ -  printf '\n%s: %6s\n' "WARN" "$@" -} -# get expiry for the certificates -getExpiry() -{ -  local expdate=$1 -  local certname=$2 -  today=$(date +%s) -  timetoexpire=$(( ($expdate - $today)/(60*60*24) )) - -  expcerts=( ${expcerts[@]} "${certname}:$timetoexpire" ) -} - -# print all expiry that was found, typically if there is any. -printExpiry() -{ -  local args=$# -  i=0 -  if [[ $args -ne 0 ]]; then -    #statements -    printf '%s\n' "---------------------------------------------" -    printf '%s\n' "List of expiring SSL certificates" -    printf '%s\n' "---------------------------------------------" -    printf '%s\n' "$@"  | \ -      sort -t':' -g -k2 | \ -      column -s: -t     | \ -      awk '{printf "%d.\t%s\n", NR, $0}' -    printf '%s\n' "---------------------------------------------" -  fi -} - -# calculate the end date for the certificates first, finally to compare and predict when they are going to expire. -calcEndDate() -{ -  sslcmd=$(which openssl) -  if [[ x$sslcmd = x ]]; then -    #statements -    error "$sslcmd command not found!" -  fi -  # when cert dir is given -  if [[ $DIR -eq 1 ]]; then -    #statements -    checkcertexists=$(ls -A $TARGETDIR| egrep "*.$EXT$") -    if [[ -z ${checkcertexists} ]]; then -      #statements -      error "no certificate files at $TARGETDIR with extention $EXT" -    fi -    for file in $TARGETDIR/*.${EXT:-crt} -    do -      expdate=$($sslcmd x509 -in $file -noout -enddate) -      expepoch=$(date -d "${expdate##*=}" +%s) -      certificatename=${file##*/} -      getExpiry $expepoch ${certificatename%.*} -    done -  elif [[ $CONFIG -eq 1 ]]; then -    #statements -    while read line -    do -      if echo "$line" | \ -      egrep -q '^[a-zA-Z0-9.]+:[0-9]+|^[a-zA-Z0-9]+_.*:[0-9]+'; -      then -        expdate=$(echo | \ -        openssl s_client -connect $line 2>/dev/null | \ -        openssl x509 -noout -enddate 2>/dev/null); -        if [[ $expdate = '' ]]; then -          #statements -          warn "[error:0906D06C] Cannot fetch certificates for $line" -        else -          expepoch=$(date -d "${expdate##*=}" +%s); -          certificatename=${line%:*}; -          getExpiry $expepoch ${certificatename}; -        fi -      else -        warn "[format error] $line is not in required format!" -      fi -    done < $CONFIGFILE -  fi -} -# your script goes here -while getopts ":c:d:w:e:h" options -do -case $options in -c ) -  CONFIG=1 -  CONFIGFILE="$OPTARG" -  if [[ ! -e $CONFIGFILE ]] || [[ ! -s $CONFIGFILE ]]; then -    #statements -    error "$CONFIGFILE does not exist or empty!" -  fi -        ;; -e ) -  EXT="$OPTARG" -  case $EXT in -    crt|pem|cert ) -    info "Extention check complete." -    ;; -    * ) -    error "invalid certificate extention $EXT!" -    ;; -  esac -  ;; -d ) -  DIR=1 -  TARGETDIR="$OPTARG" -  [ $TARGETDIR = '' ] && error "$TARGETDIR empty variable!" -  ;; -w ) -  WRITEFILE=1 -  OUTFILE="$OPTARG" -  ;; -h ) -        usage -        ;; -\? ) -        usage -        ;; -: ) -        fatal "Argument required !!! see \'-h\' for help" -        ;; -esac -done -shift $(($OPTIND - 1)) -# -calcEndDate -#finally print the list -if [[ $WRITEFILE -eq 0 ]]; then -  #statements -  printExpiry ${expcerts[@]} -else -  printExpiry ${expcerts[@]} > $OUTFILE -fi -``` - -#### 2. genSSLcsr.sh - - -``` -#!/bin/bash - -#=============================================================================== -# -#          FILE: genSSLcsr.sh -# -#         USAGE: ./genSSLcsr.sh [options] -# -#   DESCRIPTION: ++++version 1.0.2 -#               Fixed few bugs from previous script -#               +Removing passphrase after CSR generation -#               Extended use of functions -#               Checks for valid common name -#               ++++1.0.3 -#               Fixed line breaks -#               Work directory to be created at the start -#               Used getopts for better code arrangements -#   ++++1.0.4 -#     Added mail feature (experimental at this time and needs -#     a mail server running locally.) -#     Added domain input and certificate subject inputs -# -#       OPTIONS: --- -#  REQUIREMENTS: openssl, mailx -#          BUGS: --- -#         NOTES: --- -#        AUTHOR: Abhishek Tamrakar (), [abhishek.tamrakar08@gmail.com][7] -#  ORGANIZATION: Self -#       CREATED: 6/24/2016 -#      REVISION: 4 -# COPYRIGHT AND -#       LICENSE: Copyright (C) 2016 Abhishek Tamrakar -# -#  Licensed under the Apache License, Version 2.0 (the "License"); -#  you may not use this file except in compliance with the License. -#  You may obtain a copy of the License at -# -#       -# -#   Unless required by applicable law or agreed to in writing, software -#   distributed under the License is distributed on an "AS IS" BASIS, -#   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -#   See the License for the specific language governing permissions and -#   limitations under the License. -#=============================================================================== - -#variables ges here -#set basename to scriptname -SCRIPT=${0##*/} - -#set flags -TFOUND=0 -CFOUND=0 -MFOUND=0 -XFOUND=0 -SFOUND=0 -logdir=/var/log -# edit these below values to replace with yours -homedir='' -yourdomain='' -country=IN -state=Maharashtra -locality=Pune -organization="your_organization" -organizationalunit="your_organizational_unit" -email=your_email@your_domain -password=your_ssl_password -# OS is declared and will be used in its next version -OS=$(egrep -io 'Redhat|centos|fedora|ubuntu' /etc/issue) - -### function declarations ### - -info() -{ -  printf '\n%s\t%s\t' "INFO" "$@" -} - -#exit on error with a custom error message -#the extra function was removed and replaced withonly one. -#using FAILED\n\e<message> is a way but not necessarily required. -# - -fatal() -{ - printf '\n%s\t%s\n' "ERROR" "$@" - exit 1 -} - -checkperms() -{ -if [[ -z ${homedir} ]]; then -homedir=$(pwd) -fi -if [[ -w ${homedir} ]]; then -info "Permissions acquired for ${SCRIPT} on ${homedir}." -else -fatal "InSufficient permissions to run the ${SCRIPT}." -fi -} - -checkDomain() -{ -info "Initializing Domain ${cn} check ? " -if [[ ! -z ${yourdomain} ]]; then -workdir=${homedir}/${yourdomain} -echo -e "${cn}"|grep -E -i -q "${yourdomain}$" && echo -n "[OK]" || fatal "InValid domain in ${cn}" -else -workdir=${homedir}/${cn#*.} -echo -n "[NULL]" -info "WARNING: No domain declared to check." -confirmUserAction -fi -}       # end function checkDomain - -usage() -{ -cat << EOF - -Usage:  $SCRIPT [options] -[cdmshx] -  [-c (common name)] -  [-d (domain name)] -  [-s (SSL certificate subject)] -  [-p (password)] -  [-m (email address)] *(Experimental) -  [-r (remove pasphrase) default:true] -  [-h (help)] -  [-x (optional)] - -[OPTIONS] -  -c|   Sets the value for common name. -        A valid common name is something that ends with 'xyz.com' - -  -d|   Sets the domain name. - -  -s|   Sets the subject to be applied to the certificates. -        '/C=country/ST=state/L=locality/O=organization/OU=organizationalunit/emailAddress=email' - -  -p|   Sets the password for private key. - -  -r|   Sets the value of remove passphrase. -        true:[default] passphrase will be removed from key. -        false: passphrase will not be removed and key wont get printed. - -  -m|   Sets the mailing capability to the script. -        (Experimental at this time and requires a lot of work) - -  -x|   Creates the certificate request and key but do not print on screen. -        To be used when script is used just to create the key and CSR with no need -        + to generate the certficate on the go. - -  -h|   Displays the usage. No further functions are performed. - -  Example: $SCRIPT -c mywebsite.xyz.com -m [myemail@mydomain.com][6] - -EOF -exit 1 -}       # end usage - -confirmUserAction() { -while true; do -read -p "Do you wish to continue? ans: " yn -case $yn in -[Yy]* ) info "Initiating the process"; -break;; -[Nn]* ) exit 1;; -* ) info "Please answer yes or no.";; -esac -done -}       # end function confirmUserAction - -parseSubject() -{ -  local subject="$1" -  parsedsubject=$(echo $subject|sed 's/\// /g;s/^ //g') -  for i in ${parsedsubject}; do -      case ${i%=*} in -        'C' ) -        country=${i##*=} -        ;; -        'ST' ) -        state=${i##*=} -        ;; -        'L' ) -        locality=${i##*=} -        ;; -        'O' ) -        organization=${i##*=} -        ;; -        'OU' ) -        organizationalunit=${i##*=} -        ;; -        'emailAddress' ) -        email=${i##*=} -      ;; -    esac -  done -} - -sendMail() -{ - mailcmd=$(which mailx) - if [[ x"$mailcmd" = "x" ]]; then -   fatal "Cannot send email! please install mailutils for linux" - else -   echo "SSL CSR attached." | $mailcmd -s "SSL certificate request" \ -   -t $email $ccemail -A ${workdir}/${cn}.csr \ -   && info "mail sent" \ -   || fatal "error in sending mail." - fi -} - -genCSRfile() -{ -info "Creating signed key request for ${cn}" -#Generate a key -openssl genrsa -des3 -passout pass:$password -out ${workdir}/${cn}.key 4096 -noout 2>/dev/null && echo -n "[DONE]" || fatal "unable to generate key" - -#Create the request -info "Creating Certificate request for ${cn}" -openssl req -new -key ${workdir}/${cn}.key -passin pass:$password -sha1 -nodes \ -        -subj "/C=$country/ST=$state/L=$locality/O=$organization/OU=$organizationalunit/CN=$cn/emailAddress=$email" \ -        -out ${workdir}/${cn}.csr && echo -n "[DONE]" || fatal "unable to create request" - -if [[ "${REMOVEPASSPHRASE:-true}" = 'true' ]]; then -  #statements -  #Remove passphrase from the key. Comment the line out to keep the passphrase -  info "Removing passphrase from ${cn}.key" -  openssl rsa -in ${workdir}/${cn}.key \ -  -passin pass:$password \ -  -out ${workdir}/${cn}.insecure 2>/dev/null \ -  && echo -n "[DONE]" || fatal "unable to remove passphrase" -  #swap the filenames -  info "Swapping the ${cn}.key to secure" -  mv ${workdir}/${cn}.key ${workdir}/${cn}.secure \ -  && echo -n "[DONE]" || fatal "unable to perfom move" -  info "Swapping insecure key to ${cn}.key" -  mv ${workdir}/${cn}.insecure ${workdir}/${cn}.key \ -  && echo -n "[DONE]" || fatal "unable to perform move" -else -  info "Flag '-r' is set, passphrase will not be removed." -fi -} - -printCSR() -{ -if [[ -e ${workdir}/${cn}.csr ]] && [[ -e ${workdir}/${cn}.key ]] -then -echo -e "\n\n----------------------------CSR-----------------------------" -cat ${workdir}/${cn}.csr -echo -e "\n----------------------------KEY-----------------------------" -cat ${workdir}/${cn}.key -echo -e "------------------------------------------------------------\n" -else -fatal "CSR or KEY generation failed !!" -fi -} - -### END Functions ### - -#Check the number of arguments. If none are passed, print help and exit. -NUMARGS=$# -if [ $NUMARGS -eq 0 ]; then -fatal "$NUMARGS Arguments provided !!!! See usage with '-h'" -fi - -#Organisational details - -while getopts ":c:d:sⓂ️p:rhx" atype -do -case $atype in -c ) -        CFOUND=1 -        cn="$OPTARG" -        ;; -d ) -  yourdomain="$OPTARG" -  ;; -s ) -  SFOUND=1 -  subj="$OPTARG" -  ;; -p ) -  password="$OPTARG" -  ;; -r ) -  REMOVEPASSPHRASE='false' -  ;; -m ) -  MFOUND=1 -  ccemail="$OPTARG" -  ;; -x ) -        XFOUND=1 -  ;; -h ) -        usage -        ;; -\? ) -        usage -        ;; -: ) -        fatal "Argument required !!! see \'-h\' for help" -        ;; -esac -done -shift $(($OPTIND - 1)) - -#### END CASE #### START MAIN #### - -if [ $CFOUND -eq 1 ] -then -# take current dir as homedir by default. -checkperms ${homedir} -checkDomain - -  if [[ ! -d ${workdir} ]] -  then -    mkdir ${workdir:-${cn#*.}} 2>/dev/null && info "${workdir} created." -  else -    info "${workdir} exists." -  fi # end workdir check -  parseSubject "$subj" -  genCSRfile -  if [ $XFOUND -eq 0 ] -  then -    sleep 2 -    printCSR -  fi    # end x check -  if [[ $MFOUND -eq 1 ]]; then -    sendMail -  fi -else -        fatal "Nothing to do!" -fi      # end common name check - -##### END MAIN ##### -``` - -* * * - -_This was originally published as the README in [ssl-on-demand's GitHub repository][4] and is reused with permission._ - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/2/ssl-demand - -作者:[Abhishek Tamrakar][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/tamrakar -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/security-lock-password.jpg?itok=KJMdkKum (Lock) -[2]: https://opensource.com/alternatives/slack -[3]: https://opensource.com/article/19/1/what-certificate -[4]: https://github.com/abhiTamrakar/ssl-on-demand -[5]: https://en.wikipedia.org/wiki/Certificate_signing_request -[6]: mailto:myemail@mydomain.com -[7]: mailto:abhishek.tamrakar08@gmail.com diff --git a/sources/tech/20200217 Automating unit tests in test-driven development.md b/sources/tech/20200217 Automating unit tests in test-driven development.md deleted file mode 100644 index fc3971effe..0000000000 --- a/sources/tech/20200217 Automating unit tests in test-driven development.md +++ /dev/null @@ -1,69 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Automating unit tests in test-driven development) -[#]: via: (https://opensource.com/article/20/2/automate-unit-tests) -[#]: author: (Alex Bunardzic https://opensource.com/users/alex-bunardzic) - -Automating unit tests in test-driven development -====== -What unit tests have in common with carpentry. -![gears and lightbulb to represent innovation][1] - -DevOps is a software engineering discipline focused on minimizing the lead time to achieve a desired business impact. While business stakeholders and sponsors have ideas on how to optimize business operations, those ideas need to be validated in the field. This means business automation (i.e., software products) must be placed in front of end users and paying customers. Only then will the business confirm whether the initial idea for improvement was fruitful or not. - -Software engineering is a budding discipline, and it can get difficult to ship products that are defect-free. For that reason, DevOps resorts to maximizing automation. Any repeatable chore, such as testing implemented changes to the source code, should be automated by DevOps engineers. - -This article looks at how to automate unit tests. These tests are focused on what I like to call "programming in the small." Much more important test automation (the so-called "programming in the large") must use a different discipline—integration testing. But that's a topic for another article. - -### What is a unit? - -When I'm teaching approaches to unit testing, often, my students cannot clearly determine what a testable unit is. Which is to say, the granularity of the processing is not always clear. - -I like to point out that the easiest way to spot a valid unit is to think of it as a _unit of behavior_. For example (albeit a trivial one), when an authenticated customer begins online shopping, the unit of behavior is a cart that has zero items in it. Once we all agree that an empty shopping cart has zero items in it, we can focus on automating the unit test that will ensure that such a shopping cart always returns zero items. - -### What is not a unit? - -Any processing that involves more than a single behavior should not be viewed as a unit. For example, if shopping cart processing results in tallying up the number of items in the cart AND calculating the order total AND calculating sales tax AND calculating the suggested shipping method, that behavior is not a good candidate for unit testing. Such behavior is a good candidate for integration testing. - -### When to write a unit test - -There is a lot of debate about when to write a unit test. Received wisdom states that once the code has been written, it is a good idea to write automated scripts that will assert whether the implemented unit of behavior delivers functionality as expected. Not only does such a unit test (or a few unit tests) document the expected behavior, the collection of all unit tests ensures that future changes will not degrade quality. If a future change adversely affects the already implemented behavior, one or more unit tests will complain, which will alert developers that regression has occurred. - -There is another way to look at software engineering. It is based on the traditional adage "measure twice, cut once." In that light, writing code before writing tests would be equivalent to cutting a part of some product (say, a chair leg) and measuring it only after it's cut. If the craftsperson doing the cutting is very skilled, that approach may work (kind of). But more likely than not, the chair legs cut this way would end up with unequal lengths. So, it is advisable to measure before cutting. What that means for the practice of software engineering is that the measurements are expressed in the unit tests. Once we measure the required values, we create a blueprint (a unit test). That blueprint is then used to guide the cutting of the code. - -Common sense would suggest that it is more reasonable to measure first and, only then, do the cutting. According to that line of reasoning, writing unit tests before writing code is a recommended way to do proper software engineering. Technically speaking, this "measure twice, cut once" approach is called a "test-first" approach. The opposite approach, where we write the code first, is called "test-later." The test-first approach is the approach advocated by [test-driven development][2] (TDD) methodology. Writing tests later is called test-later development (TLD). - -### Why is TLD harmful? - -Cutting before measuring is not recommended. Even the most talented craftspeople will eventually make mistakes by cutting without doing so. A lack of measurement will eventually catch up with even the most experienced of us as we continue in our craft. So it's best to produce a blueprint (i.e., measurements) before cutting. - -But that's not the only reason why the TLD approach is considered harmful. When we write code, we're simultaneously considering two separate concerns: the expected behavior of the code and the optimal structure of the code. These two concerns are very dissimilar. That fact makes it very challenging to do a proper job satisfying the expectations regarding both the desired behavior and the optimal (or at the very least, decent) code structure. - -The TDD approach solves this conundrum by focusing undivided attention first on the expected desired behavior. We start by writing the unit test. In that test, we focus on _what_ we expect to happen. At this point, we don't care, in the least, _how_ the expected behavior is going to materialize. - -Once we're done describing the _what_ (i.e., what manifest behavior are we expecting from the unit we are about to build?), we watch that expectation fail. It fails because the code that is concerned with _how_ the expected behavior is going to happen hasn't materialized yet. Now we are compelled to write the code that's going to take care of the _how_. - -After we write the code responsible for how, we run the unit test(s) and see if the code we just wrote fulfills the expected behavior. If it does, we're done. Time to move on to fulfilling the next expectation. If it doesn't, we continue transforming the code until it succeeds in passing the test. - -If we choose not to do TDD, but write code first and later write the unit test, we miss the opportunity to separate _what_ from _how_. In other words, we write the code while simultaneously taking care of what we expect the code to do _and_ how to structure the code to do it correctly. - -As such, writing unit tests after we write code is considered harmful. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/2/automate-unit-tests - -作者:[Alex Bunardzic][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/alex-bunardzic -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/innovation_lightbulb_gears_devops_ansible.png?itok=TSbmp3_M (gears and lightbulb to represent innovation) -[2]: https://opensource.com/article/20/1/test-driven-development diff --git a/sources/tech/20200218 Getting started with OpenTaxSolver.md b/sources/tech/20200218 Getting started with OpenTaxSolver.md deleted file mode 100644 index b0b1ba1677..0000000000 --- a/sources/tech/20200218 Getting started with OpenTaxSolver.md +++ /dev/null @@ -1,124 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Getting started with OpenTaxSolver) -[#]: via: (https://opensource.com/article/20/2/do-your-taxes-open-source-way) -[#]: author: (Jessica Cherry https://opensource.com/users/jrepka) - -Getting started with OpenTaxSolver -====== -If you're a United States citizen, learn how to do your own state tax -returns with OpenTaxSolver. -![A document flying away][1] - -OpenTaxSolver is an open source application for US taxpayers to calculate their state and federal income tax returns. Before I get into the software, I want to share some of the information I learned when researching this article. I spent about five hours a day for a week looking into open source options for doing your taxes, and I learned about a lot more than just tax software. - -The Internal Revenue Service's (IRS's) [Use of federal tax information (FTI) in open source software][2] webpage offers a large amount of information, and it's especially relevant to anyone who may want to start their own open source tax software project. To hit the finer points: - - * Federal tax information (FTI) can be used in any open source software - * Software creators mush follow all security laws and compliance requirements - * Any such software must be supported either by a vendor or a community - * The software must be approved by the federal government - - - -One other reason researching this topic was rather difficult (but ultimately rewarding) is that, by federal law, the major tax software companies are required to provide their services for free to any person earning under $69,000 per year. About 70% of Americans fit into this category, and if you are one of them, you can check the IRS's [Free File][3] webpage for links to free filing software from well-known companies. (The IRS reminds you that "you are responsible for determining your eligibility for one of the Free File Online offers.") - -Please share this information broadly—knowledge is power, and not everyone can (or wants to) use open source software to do their taxes for reasons including: - - * Lack of computer or software access - * Low computer competence - * Age or disability - * Discomfort with doing taxes - - - -If you don't fall into any of these categories and want to do your taxes the open source way, continue reading to learn about OpenTaxSolver. - -### About OpenTaxSolver - -[OpenTaxSolver][4] is meant to be used with the IRS's [tax booklet][5], which is published yearly. This booklet provides detailed information for doing your taxes, such as rules around tax credits and write-offs. - -OpenTaxSolver cuts down on tax calculations when you fill out your tax forms and simplifies the hardest part of doing your taxes: the math. You still have to fill in your data and turn the paperwork in, but using the software means you can do it in about half of the time. Since OpenTaxSolver is running in beta, you have to double-check all of your number entries and information against the official IRS tax booklet after you use the software. - -### Download and install OpenTaxSolver - -First, [download the software][6]. There are versions for Linux, Windows, and macOS. If you're using one of the latter two, refer to the download page for installation instructions. I'm using my go-to operating system, Ubuntu Linux, which I installed by: - - 1. Downloading the TGZ file from the website - 2. Extracting it to my desktop (but you can choose any location on your computer) - 3. Clicking on **Run_taxsolve_GUI** - - - -![OpenTaxSolver installation][7] - -### Enter your tax data - -I'll walk through this example using random numbers (for obvious reasons). This walkthrough will explain how do federal taxes with OpenTaxSolver, but if you have to pay state taxes, do that before you begin your federal return. - -To do the common Federal 1040 tax return, select **US 1040**, click **Start New Return**, and start answering some basic questions about your tax situation. For this example, I selected the following itemized deductions: mortgage interest, donations, and some random itemizable write-offs. If you don't know what these are or what may apply to you, head over to the IRS website or google "itemizable write-offs." - -Next, begin entering the data from your tax documents. - -![OpenTaxSolver][8] - -![OpenTaxSolver][9] - -After you finish entering all your data and filling out the entire form, save it by clicking the **Save** button, and then click **Compute Tax** on the bottom of the screen. - -![OpenTaxSolver][10] - -### Check your return and file your taxes - -If you made any mistakes (such as mistyping something or putting an incorrect value in any field), it will show an error on the bottom of the preview after the computation finishes. - -![OpenTaxSolver preview][11] - -The preview also reports your marginal tax rate and what percentage of your income you are paying in taxes. - -![OpenTaxSolver preview][12] - -After you review the information in the preview, make any corrections, and finish your return, click **Fill-out PDF Forms**, and it will provide printable tax forms with all of your information filled in. - -![Tax return][13] - -If you entered your name, address, and social security number when entering your data, all of that information will also appear in the right places on the form. Double-check everything, print it, and mail your tax return to the IRS. - -### Final notes - -OpenTaxSolver gives you the opportunity to file your own federal and state taxes. As always, with any federal related tax information (or federal anything, for that matter), always double-check and use due diligence. I found this software very useful for expanding my knowledge about my taxes. - -The OpenTaxSolver website includes a request for contributors, so if you want to start contributing to an open source project that helps everyone, this is one I'd definitely suggest. - -And if you're someone who likes to wait until the last minute to pay your taxes, this [clock][14] tells you how much time you have until your taxes are due. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/2/do-your-taxes-open-source-way - -作者:[Jessica Cherry][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/jrepka -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/osdc_odf_1109ay.png?itok=4CqrPAjt (A document flying away) -[2]: https://www.irs.gov/privacy-disclosure/use-of-federal-tax-information-fti-in-open-source-software -[3]: https://apps.irs.gov/app/freeFile/ -[4]: http://opentaxsolver.sourceforge.net/index.html -[5]: https://www.irs.gov/pub/irs-pdf/i1040gi.pdf -[6]: http://opentaxsolver.sourceforge.net/download2019.html?button=+Download+OTS+ -[7]: https://opensource.com/sites/default/files/uploads/tax2.png (OpenTaxSolver installation) -[8]: https://opensource.com/sites/default/files/uploads/tax1.png (OpenTaxSolver) -[9]: https://opensource.com/sites/default/files/uploads/tax7.png (OpenTaxSolver) -[10]: https://opensource.com/sites/default/files/uploads/tax6.png (OpenTaxSolver) -[11]: https://opensource.com/sites/default/files/uploads/tax3.png (OpenTaxSolver preview) -[12]: https://opensource.com/sites/default/files/uploads/tax4.png (OpenTaxSolver preview) -[13]: https://opensource.com/sites/default/files/uploads/tax5.png (Tax return) -[14]: https://countdown.onlineclock.net/countdowns/taxes/ diff --git a/sources/tech/20200218 How to embed Twine stories in WordPress.md b/sources/tech/20200218 How to embed Twine stories in WordPress.md deleted file mode 100644 index 5f2419aa5e..0000000000 --- a/sources/tech/20200218 How to embed Twine stories in WordPress.md +++ /dev/null @@ -1,229 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (How to embed Twine stories in WordPress) -[#]: via: (https://opensource.com/article/20/2/embed-twine-wordpress) -[#]: author: (Roman Lukš https://opensource.com/users/romanluks) - -How to embed Twine stories in WordPress -====== -Share your Twine 2 interactive stories on your WordPress site with the -Embed Twine plugin. -![Person drinking a hat drink at the computer][1] - -From the very beginning, I wanted the "About me" page on my WordPress website [romanluks.eu][2] to be interactive. - -At first, I experimented with Dart, a programming language developed by Google that transcompiles into JavaScript. I killed the project when I realized I was making a game instead of an "About me" page. - -A bit later, I discovered [Twine][3], an open source tool for creating interactive stories. It reminded me of the gamebooks I loved as a kid. It's so easy to create interconnected pieces of text in Twine, and it's ideal for the interview-like format I was aiming for. Because Twine publishes directly to HTML, you can do a lot of interesting things with it—including creating [interactive fiction][4] and [adventure games][5] or publishing stories on a blog or website. - -### Early struggles - -I created my "About me" page in Twine and tried to paste it into my WordPress page. - -"No, can do," said WordPress and Twine. - -You see, a Twine story exported from Twine is just a webpage (i.e., a file in HTML format). However, it not only includes HTML but JavaScript code, as well. And somehow it doesn't work when you simply try to copy-paste the contents. I tried copy-pasting just the body of the Twine story page without success. - -I thought, "I guess I need to add that JavaScript code separately," and I tried custom fields. - -Nope. - -I took a break from my investigation. I just uploaded my "About me" Twine story via FTP and linked to it from my website's menu. People could visit it and interact with the story, however, there was no menu, and it didn't feel like a part of my website. I had made a trap for myself. It made me realize I really _really_ wanted my "About me" included directly on my website. - -### DIY embed - -I took a stab at the problem and came up with [this solution][6]. - -It worked. It wasn't perfect, but it worked. - -But it wasn't _perfect_. Is there a better way? There is bound to be a better way… - -It cost me a couple of pulled hairs, but I managed to get a [responsive iframe and autoscroll][7]. - -It was way better. I was proud of myself and shared it on [Reddit][8]. - -### The road to Embed Twine - -Suddenly, an idea! What if, instead of following my tutorial, people could use a WordPress plugin? - -They would only have to give the plugin a Twine story, and it would take care of the rest. Hassle-free. No need to copy-paste any JavaScript code. - -Wouldn't that be glorious?!? - -I had no idea how WordPress plugins work. I only knew they are written in PHP. A while back, I had part-time work as a PHP developer, and I remembered the basics. - -### Containers and WordPress - -I mentioned my idea to a friend, and he suggested I could use containers as my WordPress development environment. - -In the past, I'd always used [XAMPP][9], but I wanted to try containers for a while. - -No problem, I thought! I'll learn containers while I learn how to make a WordPress plugin and revive my PHP skills. That should be sufficiently stimulating. - -And it was. - -I can't recall how many times I stopped, removed, and rebuilt my containers. I had to use the command line. And the file permissions are painful. - -Oh boy! It was like playing a game that you enjoy playing even though it makes you fairly angry. It was challenging but rewarding. - -I found out that it's very easy to create a simple WordPress plugin: - - * Write the source code - * Save it in the WP plugin directory - * Test it - * Repeat - - - -Containers make it easy to use a specific environment and are easy to clean up when you screw up and need to start over. - -Using Git saved me from accidentally wiping out my entire codebase. I used [Sourcetree][10] as my Git user interface. Initially, I wrote my code in [Notepad++][11], but when I divided my code into multiple files, I switched to [Atom][12]. It's such a cool editor for geeks. Using it feels like the code writes itself. - -### Intermission - -So what do we know so far? - - * I wanted an interactive "About me" page - * I created an "About me" story in Twine - * Twine exports webpages (as HTML files with JavaScript included) - * WP plugins are easy to make - * Containers are awesome - - - -### Embed Twine is born - -I wanted an easy way to embed Twine stories into WordPress. So, I used the power of software development, fooled around with containers, wrote a bit of PHP code, and published the result as a WordPress plugin called [Embed Twine][13]. - -### Install the plugin - - 1. Upload the plugin [files][14] to the **/wp-content/plugins/plugin-name** directory, or install the plugin through the WordPress Plugins screen. - 2. Activate the plugin through the Plugins screen in WordPress. - - - -### Use the plugin - -After you've installed the Embed Twine plugin and created a Twine 2 story, embed it in your WordPress site: - - 1. Export your Twine 2 story into an HTML file. - 2. Upload it via the plugin's interface. - 3. Insert the shortcode into the page or post. - 4. Enjoy your embedded story. - - - -The plugin also provides autoscroll functionality to make it easy for users to navigate through your stories. - -### Configure the plugin - -The plugin is configurable via shortcode parameters. To use the shortcode, simply put **[embed_twine]** into your post. - -You can use additional parameters in the format **[embed_twine story="Story" aheight=112 autoscroll=true ascroll=100]** as follows: - - * **story:** Specify the story name (the filename without an extension). - * If the story parameter is omitted, it defaults to "Story." This means there is no need to use this parameter if your Twine filename is Story.html. - * If you upload a Twine story called MyFooBar.html, use the shortcode: **[embed_twine story="MyFooBar"]**. - * **aheight:** Use this parameter to adjust the iframe's height. You might need to tweak **aheight** to get rid of an iframe scrollbar. The default value is 112; this value is added to the iframe height and used to set the iframe's **style.height**. - * **autoscroll:** Autoscroll is enabled by default. You can turn it off with shortcode parameter **[embed_twine autoscroll=false]**. - * **ascroll:** Use this to adjust the default position for autoscroll. The default value is 100; this value is subtracted from the iframe's top position and fed into JavaScript method **window.scrollTo()**. - - - -### Known bugs - -Currently, Twine passages that include images might report their height incorrectly, and the scrollbar might show up for these passages. Tweak the shortcode parameter **aheight** to get rid of them. - -### The script - - -``` -1       <?php -2       -3       /** -4       * Plugin Name: Embed Twine -5       * Description: Insert Twine stories into WordPress -6       * Version: 0.0.6 -7       * Author: Roman Luks -8       * Author URI: -9       * License: GPLv2 or later -10      */ -11      -12      require_once('include/embed-twine-load-file.php'); -13      require_once('include/embed-twine-parent-page.php'); -14      require_once('include/embed-twine-process-story.php'); -15      -16      // Add plugin to WP menu -17      function embed_twine_customplugin_menu() { -18      -19          add_menu_page("Embed Twine", "Embed Twine","manage_options", __FILE__, "embed_twine_uploadfile"); -20      } -21      -22      add_action("admin_menu", "embed_twine_customplugin_menu"); -23      -24      function embed_twine_uploadfile(){ -25          include "include/embed-twine-upload-file.php"; -26      } -27      -28      // Add shortcode -29      function embed_twine_shortcodes_init() -30      { -31          function embed_twine_shortcode($atts = [], $content = null) -32          { -33              // Attributes -34              $atts = shortcode_atts( -35                  [array][15]( -36                      'story' => 'Story', -37                      'aheight' => 112,       //adjust for style.height (30) and margins of tw-story (2x41) -38                      'autoscroll' => true,   //autoscroll enabled by default -39                      'ascroll' => 100,       //adjust for autoscroll -40                  ), -41                  $atts, -42                  'embed_twine' -43              ); -44      -45              $content = embed_twine_buildParentPage($atts['story'], $atts['aheight'], $atts['autoscroll'], $atts['ascroll']); -46      -47              return $content; -48          } -49          add_shortcode('embed_twine', 'embed_twine_shortcode'); -50      } -51      add_action('init', 'embed_twine_shortcodes_init'); -``` - -* * * - -_This article is adapted from [Roman Luks' blog][16] and [Embed Twine][13] page on WordPress plugins._ - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/2/embed-twine-wordpress - -作者:[Roman Lukš][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/romanluks -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/coffee_tea_laptop_computer_work_desk.png?itok=D5yMx_Dr (Person drinking a hat drink at the computer) -[2]: https://romanluks.eu/ -[3]: https://twinery.org/ -[4]: https://opensource.com/article/18/7/twine-vs-renpy-interactive-fiction -[5]: https://opensource.com/article/18/2/twine-gaming -[6]: https://romanluks.eu/blog/how-to-embed-twine-on-your-wordpress-website/ -[7]: https://romanluks.eu/blog/how-to-embed-twine-on-your-wordpress-website-with-responsive-iframe-and-autoscroll/ -[8]: https://www.reddit.com/r/twinegames/comments/dtln4z/how_to_embed_twine_on_your_wordpress_website_with/ -[9]: https://en.wikipedia.org/wiki/XAMPP -[10]: https://www.sourcetreeapp.com/ -[11]: https://notepad-plus-plus.org/ -[12]: https://atom.io/ -[13]: https://wordpress.org/plugins/embed-twine/ -[14]: https://plugins.trac.wordpress.org/browser/embed-twine/ -[15]: http://www.php.net/array -[16]: https://romanluks.eu/blog/embed-twine-wordpress-plugin/ diff --git a/sources/tech/20200219 How to conveniently unsubscribe from a mailing list.md b/sources/tech/20200219 How to conveniently unsubscribe from a mailing list.md deleted file mode 100644 index ab0a962efa..0000000000 --- a/sources/tech/20200219 How to conveniently unsubscribe from a mailing list.md +++ /dev/null @@ -1,93 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (How to conveniently unsubscribe from a mailing list) -[#]: via: (https://opensource.com/article/20/2/how-unsubscribe-mailing-list) -[#]: author: (Seth Kenlon https://opensource.com/users/seth) - -How to conveniently unsubscribe from a mailing list -====== -Cut down on your email clutter by removing yourself from email lists you -no longer need. -![Photo by Anthony Intraversato on Unsplash][1] - -If you're on an email discussion group long enough, at some point, you'll see an email from a list member asking to be unsubscribed. Typically, at least 10 other people on the list will respond with instructions on how to unsubscribe, and those 10 responses will be answered by 10 more people confirming or commenting on the instructions. That's a _lot_ of traffic to a mailing list just so one person can unsubscribe. - -But unsubscribing from a list can be confusing, especially if you've gotten on the list by accident. It's frustrating to discover that you've been added to a list, and it's annoying that you have to take time out of your day to extricate yourself. This article is here to help make unsubscribing fast, easy, and graceful. - -Never send an unsubscribe email to the same email address you use to post messages - -### Unsubscribe by email - -Mailing lists are controlled by mailing list software (like [GNU Mailman][2]) on a server. You probably aren't aware of the software controlling a mailing list you're on, because they're usually designed to stay out of the way and just deliver mail. But as a member of a mailing list, you actually have some user control over the software. - -Some mailing lists allow you to unsubscribe using an automated email address. It can be a little confusing because the email address you use to unsubscribe is NOT the email address you use to send messages to the list. Essentially, you're sending a special command to the email server, telling it to take you off the list. This is a convenient method of unsubscribing because it means you don't have to compose a message or wait for anyone to take action. You speak directly to the computer sending the email, and it does exactly as it's told. - -To unsubscribe from a list, take the email address of the list, add **-leave** just before the **@** symbol, and send a message. You can email a blank message; the computer doesn't care. The fact that you're emailing the list with the **-leave** command in front of the **@** symbol is all it needs. - -Here's an example. - -Say you've joined the mailing list Funny Squirrels. You send a few messages to [funnysquirrels@example.com][3] but soon find that squirrels are not as amusing as you'd hoped. To unsubscribe, you can send an email to: - - -``` -`funnysquirrels-leave@example.com` -``` - -You may get a final confirmation email back, and then you'll hear from the mailing list no more. - -#### Custom email commands - -Sometimes the administrator of a mail server changes the command for unsubscribing. Ideally, they'll include the unsubscribe email address in the footer of emails sent to the mailing list, so check for that before sending your parting email. - -The thing to keep in mind is that an unsubscribe email _never_ goes to the actual list, meaning you should never send an unsubscribe email to the same email address you use to post messages. There's a special, separate email address reserved for the unsubscribe command. - -### Unsubscribing by webform - -Some mailing lists have a webform for unsubscribing, and ideally, it can be found in the footer of each mailing list message. You can navigate to the webform and opt out of your subscription. - -This method is common for commercial mailing lists, and it's sometimes a way for them to capture any feedback you have about the list, why you're leaving, and so on. Like the automated email method, the intent is for you to maintain full control of your own subscription. You never have to wait for a human to take you off of a list; instead, you can issue commands directly to a computer. - -![Example unsubscribe web form][4] - -A webform may send you a final confirmation email, and after that, you should hear nothing from that mailing list ever again. - -### Unsubscribing like a pro - -Leaving a mailing list is a guilt-free and nonaggressive act. When you want to leave a mailing list, you should be able to find an unsubscribe email address or webform to make it automated and final. - -If, in spite of using the methods above, you can't leave a mailing list, don't email the list. Very few people on the mailing list have control over who is subscribed, and sometimes the people who have access to the list of subscribers are not monitoring the list—they're only maintaining the server. Instead, find out what server hosts the mailing list, and contact the hosting provider to alert them of the abuse. - -You can find the host of a mailing list by searching for the server name (the part of the email address to the _right_ of the **@** symbol) on a **whois** service. If you're running Linux, you can do this from a terminal: - - -``` -`$ whois ` -``` - -Otherwise, use the [Whois.net][5] website. - -Whois provides the internet hosting provider of any email server plus the abuse and support contact information. - -Remember: you are always free to leave a mailing list for any reason, without getting permission from anyone else. And now that you know how, you'll be able to unsubscribe like a pro! - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/2/how-unsubscribe-mailing-list - -作者:[Seth Kenlon][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/seth -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/anthony-intraversato-pt_wqgzaiu8-unsplash.jpg?itok=5bbMlgt8 (Photo by Anthony Intraversato on Unsplash) -[2]: https://www.list.org/ -[3]: mailto:funnysquirrels@example.com -[4]: https://opensource.com/sites/default/files/uploads/mail-webform.jpg (Example unsubscribe web form) -[5]: http://whois.net diff --git a/sources/tech/20200221 Don-t like loops- Try Java Streams.md b/sources/tech/20200221 Don-t like loops- Try Java Streams.md deleted file mode 100644 index e327d045a3..0000000000 --- a/sources/tech/20200221 Don-t like loops- Try Java Streams.md +++ /dev/null @@ -1,427 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Don't like loops? Try Java Streams) -[#]: via: (https://opensource.com/article/20/2/java-streams) -[#]: author: (Chris Hermansen https://opensource.com/users/clhermansen) - -Don't like loops? Try Java Streams -====== -It's 2020 and time to learn about Java Streams. -![Person drinking a hat drink at the computer][1] - -In this article, I will explain how to not write loops anymore. - -What? Whaddaya mean, no more loops? - -Yep, that's my 2020 resolution—no more loops in Java. Understand that it's not that loops have failed me, nor have they led me astray (well, at least, I can argue that point). Really, it is that I, a Java programmer of modest abilities since 1997 or so, must finally learn about all this new [Streams][2] stuff, saying "what" I want to do and not "how" I want to do it, maybe being able to parallelize some of my computations, and all that other good stuff. - -I'm guessing that there are other Java programmers out there who also have been programming in Java for a decent amount of time and are in the same boat. Therefore, I'm offering my experiences as a guide to "how to not write loops in Java anymore." - -### Find a problem worth solving - -If you're like me, then the first show-stopper you run into is "right, cool stuff, but what am I solving for, and how do I apply this?" I realized that I can spot the perfect opportunity camouflaged as _Something I've Done Before_. - -In my case, it's sampling land cover within a specific area and coming up with an estimate and a confidence interval around that estimate for the land cover across the whole area. The specific problem involves deciding whether an area is "forested" or not, given a specific legal definition: if at least 10% of the soil is covered over by tree crowns, then the area is considered to be forested; otherwise, it's something else. - -![Image of land cover in an area][3] - -It's a pretty esoteric example of a recurring problem; I'll grant you. But there it is. For the ecologists and foresters out there who are accustomed to cool temperate or tropical forests, 10% might sound kind of low, but in the case of dry areas with low-growing shrubs and trees, that's a reasonable number. - -So the basic idea is: use images to stratify the area (i.e., areas completely devoid of trees, areas of predominantly small trees spaced quite far apart, areas of predominantly small trees spaced closer together, areas of somewhat larger trees), locate some samples in those strata, send the crew out to measure the samples, analyze the results, and calculate the proportion of soil covered by tree crowns across the area. Simple, right? - -![Survey team assessing land cover][4] - -### What the field data looks like - -In the current project, the samples are rectangular areas 20 meters wide by 25 meters long, so 500 square meters each. On each patch, the field crew measured each tree: its species, its height, the maximum and minimum width of its crown, and the diameter of its trunk at trunk height (nominally 30cm above the ground). This information was collected, entered into a spreadsheet, and exported to a bar separated value (BSV) file for me to analyze. It looks like this: - -Stratum# | Sample# | Tree# | Species | Trunk diameter (cm) | Crown diameter 1 (m) | Crown diameter 2 (m) | Height (m) ----|---|---|---|---|---|---|--- -1 | 1 | 1 | Ac | 6 | 3.6 | 4.6 | 2.4 -1 | 1 | 2 | Ac | 6 | 2.2 | 2.3 | 2.5 -1 | 1 | 3 | Ac | 16 | 2.5 | 1.7 | 2.4 -1 | 1 | 4 | Ac | 6 | 1.5 | 2.1 | 1.8 -1 | 1 | 5 | Ac | 5 | 0.9 | 1.7 | 1.7 -1 | 1 | 6 | Ac | 6 | 1.7 | 1.3 | 1.6 -1 | 1 | 7 | Ac | 5 | 1.82 | 1.32 | 1.8 -1 | 1 | 1 | Ac | 1 | 0.3 | 0.25 | 0.9 -1 | 1 | 2 | Ac | 2 | 1.2 | 1.2 | 1.7 - -The first column is the stratum number (where 1 is "predominantly small trees spaced quite far apart," 2 is "predominantly small trees spaced closer together," and 3 is "somewhat larger trees"; we didn't sample the areas "completely devoid of trees"). The second column is the sample number (there are 73 samples altogether, located in the three strata in proportion to the area of each stratum). The third column is the tree number within the sample. The fourth is the two-letter species code, the fifth the trunk diameter (in this case, 10cm above ground or exposed roots), the sixth the smallest distance across the crown, the seventh the largest distance, and the eighth the height of the tree. - -For the purposes of this exercise, I'm only concerned with the total amount of ground covered by the tree crowns—not the species, nor the height, nor the diameter of the trunk. - -In addition to the measurement information above, I also have the areas of the three strata, also in a BSV: - -stratum | hectares ----|--- -1 | 114.89 -2 | 207.72 -3 | 29.77 - -### What I want to do (not how I want to do it) - -In keeping with one of the main design goals of Java Streams, here is "what" I want to do: - - 1. Read the stratum area BSV and save the data as a lookup table. - 2. Read the measurements from the measurement BSV file. - 3. Accumulate each measurement (tree) to calculate the total area of the sample covered by tree crowns. - 4. Accumulate the sample tree crown area values and count the number of samples to estimate the mean tree crown area coverage and standard error of the mean for each stratum. - 5. Summarize the stratum figures. - 6. Weigh the stratum means and standard errors by the stratum areas (looked up from the table created in step 1) and accumulate them to estimate the mean tree crown area coverage and standard error of the mean for the total area. - 7. Summarize the weighted figures. - - - -Generally speaking, the way to define "what" with Java Streams is by creating a stream processing pipeline of function calls that pass over the data. So, yes, there is actually a bit of "how" that ends up creeping in… in fact, quite a bit of "how." But, it needs a very different knowledge base than the good, old fashioned loop. - -I'll go through each of these steps in detail. - -#### Build the stratum area table - -The first job is to convert the stratum areas BSV file to a lookup table: - - -``` -[String][5] fileName = "stratum_areas.bsv"; -Stream<String> inputLineStream = Files.lines(Paths.get(fileName));  // (1) - -final Map<[Integer][6],Double> stratumAreas =   // (2) -    inputLineStream     // (3) -        .skip(1)                   // (4) -        .map(l -> l.split("\\\|"))  // (5) -        .collect(                  // (6) -            Collectors.toMap(      // (7) -                a -> [Integer][6].parseInt(a[0]),  // (8) -                a -> [Double][7].parseDouble(a[1]) // (9) -            ) -        ); -inputLineStream.close();   // (10) - -[System][8].out.println("stratumAreas = " + stratumAreas);  // (11) -``` - -I'll take this a line or two at a time, where the numbers in comments following the lines above—e.g., _// (3)_— correspond to the numbers below: - - 1. java.nio.Files.lines() gives a stream of strings corresponding to lines in the file. - 2. The goal is to create the lookup table, **stratumAreas**, which is a **Map<Integer,Double>**. Therefore, I can get the **double** value area for stratum 2 as **stratumAreas.get(2)**. - 3. This is the beginning of the stream "pipeline." - 4. Skip the first line in the pipeline since it's the header line containing the column names. - 5. Use **map()** to split the **String** input line into an array of **String** fields, with the first field being the stratum # and the second being the stratum area. - 6. Use **collect()** to [materialize the results][9]. - 7. The materialized result will be produced as a sequence of **Map** entries. - 8. The key of each map entry is the first element of the array in the pipeline—the **int** stratum number. By the way, this is a _Java lambda_ expression—[an anonymous function][10] that takes an argument and returns that argument converted to an **int**. - 9. The value of each map entry is the second element of the array in the pipeline—the **double** stratum area. - 10. Don't forget to close the stream (file). - 11. Print out the result, which looks like: [code]`stratumAreas = {1=114.89, 2=207.72, 3=29.77}` -``` -### Build the measurements table and accumulate the measurements into the sample totals - -Now that I have the stratum areas, I can start processing the main body of data—the measurements. I combine the two tasks of building the measurements table and accumulating the measurements into the sample totals since I don't have any interest in the measurement data per se. -``` - - -fileName = "sample_data_for_testing.bsv"; -inputLineStream = Files.lines(Paths.get(fileName)); - - final Map<[Integer][6],Map<[Integer][6],Double>> sampleValues = -    inputLineStream -        .skip(1) -        .map(l -> l.split("\\\|")) -        .collect(                  // (1) -            Collectors.groupingBy(a -> [Integer][6].parseInt(a[0]),     // (2) -                Collectors.groupingBy(b -> [Integer][6].parseInt(b[1]), // (3) -                    Collectors.summingDouble(                      // (4) -                        c -> {                                     // (5) -                            double rm = ([Double][7].parseDouble(c[5]) + -                                [Double][7].parseDouble(c[6]))/4d;      // (6) -                            return rm*rm * [Math][11].PI / 500d;         // (7) -                        }) -                ) -            ) -        ); -inputLineStream.close(); - -[System][8].out.println("sampleValues = " + sampleValues);  // (8) - -``` -Again, a line or two or so at a time: - - 1. The first seven lines are the same in this task and the previous, except the name of this lookup table is **sampleValues**; and it is a **Map** of **Map**s. - 2. The measurement data is grouped into samples (by sample #), which are, in turn, grouped into strata (by stratum #), so I use **Collectors.groupingBy()** at the topmost level [to separate data][12] into strata, with **a[0]** here being the stratum number. - 3. I use **Collectors.groupingBy()** once more to separate data into samples, with **b[1]** here being the sample number. - 4. I use the handy **Collectors.summingDouble()** [to accumulate the data][13] for each measurement within the sample within the stratum. - 5. Again, a Java lambda or anonymous function whose argument **c** is the array of fields, where this lambda has several lines of code that are surrounded by **{** and **}** with a **return** statement just before the **}**. - 6. Calculate the mean crown radius of the measurement. - 7. Calculate the crown area of the measurement as a proportion of the total sample area and return that value as the result of the lambda. - 8. Again, similar to the previous task. The result looks like (with some numbers elided): [code]`sampleValues = {1={1=0.09083231861452731, 66=0.06088002082602869, ... 28=0.0837823490804228}, 2={65=0.14738326403381743, 2=0.16961183847374103, ... 63=0.25083064794883453}, 3={64=0.3306323635177101, 32=0.25911911184680053, ... 30=0.2642668470291564}}` -``` - - - -This output shows the **Map** of **Map**s structure clearly—there are three entries in the top level corresponding to the strata 1, 2, and 3, and each stratum has subentries corresponding to the proportional area of the sample covered by tree crowns. - -#### Accumulate the sample totals into the stratum means and standard errors - -At this point, the task becomes more complex; I need to count the number of samples, sum up the sample values in preparation for calculating the sample mean, and sum up the squares of the sample values in preparation for calculating the standard error of the mean. I may as well incorporate the stratum area into this grouping of data as well, as I'll need it shortly to weigh the stratum results together. - -So the first thing to do is create a class, **StratumAccumulator**, to handle the accumulation and provide the calculation of the interesting results. This class implements **java.util.function.DoubleConsumer**, which can be passed to **collect()** to handle accumulation: - - -``` -class StratumAccumulator implements DoubleConsumer { -    private double ha; -    private int n; -    private double sum; -    private double ssq; -    public StratumAccumulator(double ha) { // (1) -        this.ha = ha; -        this.n = 0; -        this.sum = 0d; -        this.ssq = 0d; -    } -    public void accept(double d) { // (2) -        this.sum += d; -        this.ssq += d*d; -        this.n++; -    } -    public void combine(StratumAccumulator other) { // (3) -        this.sum += other.sum; -        this.ssq += other.ssq; -        this.n += other.n; -    } -    public double getHa() {  // (4) -        return this.ha; -    } -    public int getN() {  // (5) -        return this.n; -    } -    public double getMean() {  // (6) -        return this.n > 0 ? this.sum / this.n : 0d; -    } -    public double getStandardError() {  // (7) -        double mean = this.getMean(); -        double variance = this.n > 1 ? (this.ssq - mean*mean*n)/(this.n - 1) : 0d; -        return this.n > 0 ? [Math][11].sqrt(variance/this.n) : 0d; -    } -} -``` - -Line-by-line: - - 1. The constructor **StratumAccumulator(double ha)** takes an argument, the area of the stratum in hectares, which allows me to merge the stratum area lookup table into instances of this class. - 2. The **accept(double d)** method is used to accumulate the stream of double values, and I use it to: -a. Count the number of values. -b. Sum the values in preparation for computing the sample mean. -c. Sum the squares of the values in preparation for computing the standard error of the mean. - 3. The **combine()** method is used to merge substreams of **StratumAccumulator**s (in case I want to process in parallel). - 4. The getter for the area of the stratum - 5. The getter for the number of samples in the stratum - 6. The getter for the mean sample value in the stratum - 7. The getter for the standard error of the mean in the stratum - - - -Once I have this accumulator, I can use it to accumulate the sample values pertaining to each stratum: - - -``` -final Map<[Integer][6],StratumAccumulator> stratumValues =   // (1) -    sampleValues.entrySet().stream()   // (2) -        .collect(                      // (3) -            Collectors.toMap(          // (4) -                e -> e.getKey(),       // (5) -                e -> e.getValue().entrySet().stream()   // (6) -                    .map([Map.Entry][14]::getValue)           // (7) -                    .collect(          // (8) -                        () -> new StratumAccumulator(stratumAreas.get(e.getKey())),   // (9) -                        StratumAccumulator::accept,     // (10) -                        StratumAccumulator::combine)    // (11) -            ) -        ); -``` - -Line-by-line: - - 1. This time, I'm using the pipeline to build **stratumValues**, which is a **Map<Integer,StratumAccumulator>**, so **stratumValues.get(3)** will return the **StratumAccumulator** instance for stratum 3. - 2. Here, I'm using the **entrySet().stream()** method provided by **Map** to get a stream of (key, value) pairs; recall these are **Map**s of sample values by stratum. - 3. Again, I'm using **collect()** to gather the pipeline results by stratum… - 4. using **Collectors.toMap()** to generate a stream of **Map** entries… - 5. whose keys are the key of the incoming stream (that is, the stratum #)… - 6. and whose values are the Map of sample values, and I again use **entrySet().stream()** to convert to a stream of Map entries, one for each sample. - 7. Using **map()** to get the value of the sample **Map** entry; I'm not interested in the key by this point. - 8. Yet again, using **collect()** to accumulate the sample results into the **StratumAccumulator** instances. - 9. Telling **collect()** how to create a new **StratumAccumulator**—I need to pass the stratum area into the constructor here, so I can't just use **StratumAccumulator::new**. - 10. Telling **collect()** to use the **accept()** method of **StratumAccumulator** to accumulate the stream of sample values. - 11. Telling **collect()** to use the **combine()** method of **StratumAccumulator** to merge **StratumAccumulator** instances. - - - -#### Summarize the stratum figures - -Whew! After all of that, printing out the stratum figures is pretty straightforward: - - -``` -stratumValues.entrySet().stream() -    .forEach(e -> { -        StratumAccumulator sa = e.getValue(); -        int n = sa.getN(); -        double se66 = sa.getStandardError(); -        double t = new TDistribution(n - 1).inverseCumulativeProbability(0.975d); -        [System][8].out.printf("stratum %d n %d mean %g se66 %g t %g se95 %g ha %g\n", -            e.getKey(), n, sa.getMean(), se66, t, se66 * t, sa.getHa()); -    }); -``` - -In the above, once again, I use **entrySet().stream()** to transform the **stratumValues** Map to a stream, and then apply the **forEach()** method to the stream. **ForEach()** is pretty much what it sounds like—a loop! But the business of finding the head of the stream, finding the next element, and checking to see if hits the end is all handled by Java Streams. So, I just get to say what I want to do for each record, which is basically to print it out. - -My code looks a bit more complicated because I declare some local variables to hold some intermediate results that I use more than once—**n**, the number of samples, and **se66**, the standard error of the mean. I also calculate the inverse T value to [convert my standard error of the mean to a 95% confidence interval][15]. - -The result looks like this: - - -``` -stratum 1 n 24 mean 0.0903355 se66 0.0107786 t 2.06866 se95 0.0222973 ha 114.890 -stratum 2 n 38 mean 0.154612 se66 0.00880498 t 2.02619 se95 0.0178406 ha 207.720 -stratum 3 n 11 mean 0.223634 se66 0.0261662 t 2.22814 se95 0.0583020 ha 29.7700 -``` - -#### Accumulate the stratum means and standard errors into the total - -Once again, the task becomes more complex, so I create a class, **TotalAccumulator**, to handle the accumulation and provide the calculation of the interesting results. This class implements **java.util.function.Consumer<T>**, which can be passed to **collect()** to handle accumulation: - - -``` -class TotalAccumulator implements Consumer<StratumAccumulator> { -    private double ha; -    private int n; -    private double sumWtdMeans; -    private double ssqWtdStandardErrors; -    public TotalAccumulator() { -        this.ha = 0d; -        this.n = 0; -        this.sumWtdMeans = 0d; -        this.ssqWtdStandardErrors = 0d; -    } -    public void accept(StratumAccumulator sa) { -        double saha = sa.getHa(); -        double sase = sa.getStandardError(); -        this.ha += saha; -        this.n += sa.getN(); -        this.sumWtdMeans += saha * sa.getMean(); -        this.ssqWtdStandardErrors += saha * saha * sase * sase; -    } -    public void combine(TotalAccumulator other) { -        this.ha += other.ha; -        this.n += other.n; -        this.sumWtdMeans += other.sumWtdMeans; -        this.ssqWtdStandardErrors += other.ssqWtdStandardErrors; -    } -    public double getHa() { -        return this.ha; -    } -    public int getN() { -        return this.n; -    } -    public double getMean() { -        return this.ha > 0 ? this.sumWtdMeans / this.ha : 0d; -    } -    public double getStandardError() { -        return this.ha > 0 ? [Math][11].sqrt(this.ssqWtdStandardErrors) / this.ha : 0; -    } -} -``` - -I'm not going to go into much detail on this, since it's structurally pretty similar to **StratumAccumulator**. Of main interest: - - 1. The constructor takes no arguments, which simplifies its use. - 2. The **accept()** method accumulates instances of **StratumAccumulator**, not **double** values, hence the use of the **Consumer<T>** interface. - 3. As for the calculations, they are assembling a weighted average of the **StratumAccumulator** instances, so they make use of the stratum areas, and the formulas might look a bit strange to anyone who's not used to stratified sampling. - - - -As for actually carrying out the work, it's easy-peasy: - - -``` -final TotalAccumulator totalValues = -    stratumValues.entrySet().stream() -        .map([Map.Entry][14]::getValue) -        .collect(TotalAccumulator::new, TotalAccumulator::accept, TotalAccumulator::combine); -``` - -Same old stuff as before: - - 1. Use **entrySet().stream()** to convert the **stratumValue Map** entries to a stream. - 2. Use **map()** to replace the **Map** entries with their values—the instances of **StratumAccumulator**. - 3. Use **collect()** to apply the **TotalAccumulator** to the instances of **StratumAccumulator**. - - - -#### Summarize the total figures - -Getting the interesting bits out of the **TotalAccumulator** instance is also pretty straightforward: - - -``` -int nT = totalValues.getN(); -double se66T = totalValues.getStandardError(); -double tT = new TDistribution(nT - stratumValues.size()).inverseCumulativeProbability(0.975d); -[System][8].out.printf("total n %d mean %g se66 %g t %g se95 %g ha %g\n", -    nT, totalValues.getMean(), se66T, tT, se66T * tT, totalValues.getHa()); -``` - -Similar to the **StratumAccumulator**, I just call the relevant getters to pick out the number of samples **nT** and the standard error **se66T**. I calculate the T value **tT** (using "n – 3" here since there are three strata), and then I print the result, which looks like this: - - -``` -`total n 73 mean 0.139487 se66 0.00664653 t 1.99444 se95 0.0132561 ha 352.380` -``` - -### In conclusion - -Wow, that looks like a bit of a marathon. It feels like it, too. As is often the case, there is a great deal of information about how to use Java Streams, all illustrated with toy examples, which kind of help, but not really. I found that getting this to work with a real-world (albeit very simple) example was difficult. - -Because I've been working in [Groovy][16] a lot lately, I kept finding myself wanting to accumulate into "maps of maps of maps" rather than creating accumulator classes, but I was never able to pull that off except in the case of totaling up the measurements in the sample. So, I worked with accumulator classes instead of maps of maps, and maps of accumulator classes instead of maps of maps of maps. - -I don't feel like any kind of master of Java Streams at this point, but I do feel I have a pretty solid understanding of **collect()**, which is deeply important, along with various methods to reformat data structures into streams and to reformat stream elements themselves. So yeah, more to learn! - -Speaking of collect(), in the examples I presented above, we can see moving from a very simple use of this fundamental method - using the Collectors.summingDouble() accumulation method - through defining an accumulator class that extends one of the pre-defined interfaces - in this case DoubleConsumer - to defining a full-blown accumulator of our own, used to accumulate the intermediate stratum class. I was tempted - sort of - to work backward and implement fully custom accumulators for the stratum and sample accumulators, but the point of this exercise was to learn more about Java Streams, not to become an expert in one single part of it all. - -What's your experience with Java Streams? Done anything big and complicated yet? Please share it in the comments. - -Optimizing your Java code requires an understanding of how the different elements in Java interact... - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/2/java-streams - -作者:[Chris Hermansen][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/clhermansen -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/coffee_tea_laptop_computer_work_desk.png?itok=D5yMx_Dr (Person drinking a hat drink at the computer) -[2]: https://docs.oracle.com/javase/8/docs/api/java/util/stream/package-summary.html -[3]: https://opensource.com/sites/default/files/uploads/landcover.png (Image of land cover in an area) -[4]: https://opensource.com/sites/default/files/uploads/foresters.jpg (Survey team assessing land cover) -[5]: http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+string -[6]: http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+integer -[7]: http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+double -[8]: http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+system -[9]: https://www.baeldung.com/java-8-collectors -[10]: https://docs.oracle.com/javase/tutorial/java/javaOO/lambdaexpressions.html -[11]: http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+math -[12]: https://www.baeldung.com/java-groupingby-collector -[13]: http://www.java2s.com/Tutorials/Java/java.util.stream/Collectors/Collectors.summingDouble_ToDoubleFunction_super_T_mapper_.htm -[14]: http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+map.entry -[15]: https://en.wikipedia.org/wiki/Standard_error -[16]: http://groovy-lang.org/ diff --git a/sources/tech/20200223 The Zen of Go.md b/sources/tech/20200223 The Zen of Go.md deleted file mode 100644 index c4143aed32..0000000000 --- a/sources/tech/20200223 The Zen of Go.md +++ /dev/null @@ -1,414 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (The Zen of Go) -[#]: via: (https://dave.cheney.net/2020/02/23/the-zen-of-go) -[#]: author: (Dave Cheney https://dave.cheney.net/author/davecheney) - -The Zen of Go -====== - -_This article was derived from my [GopherCon Israel 2020][1] presentation. It’s also quite long. If you’d prefer a shorter version, head over to [the-zen-of-go.netlify.com][2]_. - -_A recording of the presentation is available on [YouTube][3]._ - -* * * - -### How should I write good code? - -Something that I’ve been thinking about a lot recently, when reflecting on the body of my own work, is a common subtitle, _how should I write good code?_ Given nobody actively seeks to write _bad_ code, this leads to the question; _how do you know when you’ve written good Go code?_ - -If there’s a continuum between good and bad, how to do we know what the good parts are? What are its properties, its attributes, its hallmarks, its patterns, and its idioms? - -### Idiomatic Go - -![][4] - -Which brings me to idiomatic Go. To say that something is idiomatic is to say that it follows the style of the time. If something is not idiomatic, it is not following the prevailing style. It is unfashionable. - -More importantly, to say to someone that their code is not idiomatic does not explain _why_ it’s not idiomatic. Why is this? Like all truths, the answer is found in the dictionary. - -> idiom (noun): a group of words established by usage as having a meaning not deducible from those of the individual words. - -Idioms are hallmarks of shared values. Idiomatic Go is not something you learn from a book, it’s something that you acquire by being part of a community. - -![][5] - -My concern with the mantra of idiomatic Go is, in many ways, it can be exclusionary. It’s saying “you can’t sit with us.” After all, isn’t that what we mean when critique of someone’s work as non-idiomatic? They didn’t do It right. It doesn’t look right. It doesn’t follow the style of time. - -I offer that idiomatic Go is not a suitable mechanism for teaching how to write good Go code because it is defined, fundamentally, by telling someone they did it wrong. Wouldn’t it be better if the advice we gave didn’t alienate the author right at the point they were most willing to accept it? - -### Proverbs - -Stepping away problematic idioms, what other cultural artefacts do Gophers have? Perhaps we can turn to Rob Pike’s wonderful [Go Proverbs][6]. Are these suitable teaching tools? Will these tell newcomers how to write good Go code? - -In general, I don’t think so. This is not to dismiss Pike’s work, it is just that the Go Proverbs, like Segoe Kensaku’s original, are observations, not statements of value. Again, the dictionary comes to the rescue: - -> proverb (noun): a short, well-known pithy saying, stating a general truth or piece of advice. - -The goal of the Go Proverbs are to reveal a deeper truth about the design of the language, but how useful is advice like the _empty interface says nothing_ to a novice from a language that doesn’t have structural typing? - -It’s important to recognise that, in a growing community, at any time the people learning Go far outnumber those who claim to have mastered the language. Thus proverbs are perhaps not the best teaching tool in this scenario. - -### Engineering Values - -Dan Luu found [an old presentation][7] by Mark Lucovsky about the engineering culture of the windows team around the windows NT-windows 2000 timeframe. The reason I mention it is Lukovsky’s description of a culture as a common way of evaluating designs and making tradeoffs. - -![][8] - -There are many ways of discussing culture, but with respect to an engineering culture Lucovsky’s description is apt. The central idea is _values guide decisions in an unknown design space_. The values of the NT team were; portability, reliability, security, and extensibility. Engineering values are, crudely translated, the way things are done around here. - -### Go’s values - -What are the explicit values of Go? What are the core beliefs or philosophy that define the way a Go programmer interprets the world? How are they promulgated? How are they taught? How are they enforced? How do they change over time? - -How will you, as a newly minted Go programmer, inculcate the engineering values of Go? Or, how will you, a seasoned Go professional promulgate your values to a future generations? And just so we’re clear, this process of knowledge transfer is not optional. Without new blood and new ideas, our community become myopic and wither. - -#### The values of other languages - -To set the scene for what I’m getting at we can look to other languages we see examples of their engineering values. - -For example, C++ (and by extension Rust) believe that a programmer _should not have to pay for a feature they do not use_. If a program does not use some computationally expensive feature of the language, then it shouldn’t be forced to shoulder the cost of that feature. This value extends from the language, to its standard library, and is used as a yardstick for judging the design of all code written in C++. - -In Java, and Ruby, and Smalltalk, the core value that _everything is an object_ drives the design of programs around message passing, information hiding, and polymorphism. Designs that shoehorn a procedural style, or even a functional style, into these languages are considered to be wrong–or as Gophers would say, non idiomatic. - -Turning to our own community, what are the engineering values that bind Go programmers? Discourse in our community is often fractious, so deriving a set of values from first principles would be a formidable challenge. Consensus is critical, but exponentially more difficult as the number of contributors to the discussion increases. But what if someone had done the hard work for us. - -### The Zen of ~~Python~~ Go - -Several decades ago Tim Peters sat down and penned _[PEP-20][9]_, the Zen of Python. Peters’ attempted to document the engineering values that he saw Guido van Rossum apply in his role as BDFL for Python. - -For the remainder of this article, I’m going to look towards the Zen of Python and ask, is there anything that can inform the engineering values of Go programmers? - -### A good package starts with a good name - -Let’s start with something spicy, - -> “Namespaces are one honking great idea–let’s do more of those!” - -The Zen of Python, Item 19 - -This is pretty unequivocal, Python programmers should use namespaces. Lots of them. - -In Go parlance a namespace is a package. I doubt there is any question that grouping things into packages is good for design and potentially reuse. But there might be some confusion, especially if you’re coming with a decade of experience in another language, about the right way to do this. - -In Go each package should have a purpose, and the best way to know a package’s purpose is by its name—a noun. A package’s name describes what it provides. So too reinterpret Peters’ words, every Go package should have a single purpose. - -This is not a new idea, [I’ve been saying this a while][10], but why should you do this rather than approach where packages are used for fine grained taxonomy? Why, because change. - -> “Design is the art of arranging code to work today, and be changeable forever.” - -Sandi Metz - -Change is the name of the game we’re in. What we do as programmers is manage change. When we do that well we call it design, or architecture. When we do it badly we call it technical debt, or legacy code. - -If you are writing a program that works perfectly, one time, for one fixed set of inputs then nobody cares if the code is good or bad because ultimately the output of the program is all the business cares about. - -But this is _never_ true. Software has bugs, requirements change, inputs change, and very few programs are written solely to be executed once, thus your program _will_ change over time. Maybe it’s you who’ll be tasked with this, more likely it will be someone else, but someone has to change that code. Someone has to maintain that code. - -So, how can we make it easy to for programs to change? Interfaces everywhere? Make everything mockable? Pernicious dependency injection? Well, maybe, for some classes of programs, but not many, those techniques will be useful. However, for the majority of programs, designing something to be flexible up front is over engineering. - -What if, instead, we take a position that rather than enhancing components, we replace them. Then the best way to know when something needs to be replaced, is when it doesn’t do what it says on the tin. - -A good package starts with choosing a good name. Think of your package’s name as an elevator pitch, using just one word, to describe what it provides. When the name no longer matches the requirement, find a replacement. - -### Simplicity matters - -> “Simple is better than complex.” - -The Zen of Python, Item 3 - -PEP-20 says simple is better than complex, I couldn’t agree more. A couple of years ago I made this tweet; - -> Most programming languages start out aiming to be simple, but end up just settling for being powerful. -> -> — Dave Cheney (@davecheney) [December 2, 2014][11] - -My observation, at least at the time, was that I couldn’t think of a language introduced in my life time that didn’t purport to be simple. Each new language offered as a justification, and an enticement, their inherent simplicity. But as I researched, I found that simplicity was not a core value of the many of the languages considered Go’s contemporaries. [1][12] Maybe this is just a cheap shot, but could it be that either these languages aren’t simple, or they don’t _think_ of themselves as being simple. They don’t consider simplicity to be a core value. - -Call me old fashioned, but when did being simple fall out of style? Why does the commercial software development industry continually, gleefully, forget this fundamental truth? - -> “There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult.” - -C. A. R. Hoare, The Emperor’s Old Clothes, 1980 Turing Award Lecture - -Simple does not mean easy, we know that. Often it is more work to make something simple to use, than easy to build. - -> “Simplicity is prerequisite for reliability.” - -Edsger W Dijkstra, EWD498, 18 June 1975 - -Why should we strive for simplicity? Why is important that Go programs be simple? Simple doesn’t mean crude, it means readable and maintainable. Simple doesn’t mean unsophisticated, it means reliable, relatable, and understandable. - -> “Controlling complexity is the essence of computer programming.” - -Brian W. Kernighan, _Software Tools_ (1976) - -Whether Python abides by its mantra of simplicity is a matter for debate, but Go holds simplicity as a core value. I think that we can all agree that when it comes to Go, simple code is preferable to clever code. - -### Avoid package level state - -> “Explicit is better than implicit.” - -_The Zen of Python, Item_ 2 - -This is a place where I think Peters’ was more aspirational than factual. Many things in Python are not explicit; decorators, dunder methods, and so on. Without doubt they are powerful, there’s a reason those features exists. Each feature is something someone cared enough about to do the work to implement it, especially the complicated ones. But heavy use of those features makes is harder for the reader to predict the cost of an operation. - -The good news is we have a choice, as Go programmers, to choose to make our code explicit. Explicit could mean many things, perhaps you may be thinking explicit is just a nice way of saying bureaucratic and long winded, but that’s a superficial interpretation. It’s a misnomer to focus only on the syntax on the page, to fret about line lengths and DRYing up expressions. The more valuable, in my opinon, place to be explicit are to do with coupling and with state. - -Coupling is a measure of the amount one thing depends on another. If two things are tightly coupled, they move together. An action that affects one is directly reflected in another. Imagine a train, each carriage joined–ironically the correct word is coupled–together; where the engine goes, the carriages follow. - -Another way to describe coupling is the word cohesion. Cohesion measures how well two things naturally belong together. We talk about a cohesive argument, or a cohesive team; all their parts fit together as if they were designed that way. - -Why does coupling matter? Because just like trains, when you need to change a piece of code, all the code that is tightly coupled to it must change. A prime example, someone release a new version of their API and now your code doesn’t compile. - -APIs are an unavoidable source of coupling but there are more insidious forms of coupling. Clearly everyone knows that if an API’s signature changes the data passing into and out of that call changes. It’s right there in the signature of the function; I take values of these types and return values of other types. But what if the API passed data another way? What if every time you called this API the result was based on the previous time you called that API even though you didn’t change your parameters. - -This is state, and management of state is _the_ problem in computer science. - -``` -package counter - -var count int - -func Increment(n int) int { - count += n - return count -} -``` - -Suppose we have this simple `counter` package. You can call `Increment` to increment the counter, you can even get the value back if you `Increment` with a value of zero. - -Suppose you had to test this code, how would you reset the counter after each test? Suppose you wanted to run those tests in parallel, could you do it? Now suppose that you wanted to count more than one thing per program, could you do it? - -No, of course not. Clearly the answer is to encapsulate the `count` variable in a type. - -``` -package counter - -type Counter struct { - count int -} - -func (c *Counter) Increment(n int) int { - c.count += n - return c.count -} -``` - -Now imagine that this problem isn’t restricted to just counters, but your applications main business logic. Can you test it in isolation? Can you test it in parallel? Can you use more than one instance at a time? If the answer those question is _no_, the reason is package level state. - -Avoid package level state. Reduce coupling and spooky action at a distance by providing the dependencies a type needs as fields on that type rather than using package variables. - -### Plan for failure, not success - -> “Errors should never pass silently.” - -_The Zen of Python, Item 1_0 - -It’s been said of languages that favour exception handling follow the Samurai principle; _return victorious or not at all_. In exception based languages functions only return valid results. If they don’t succeed then control flow takes an entirely different path. - -Unchecked exceptions are clearly an unsafe model to program in. How can you possibly write code that is robust in the presence of errors when you don’t know which statements could throw an exception? Java tried to make exceptions safer by introducing the notion of a checked exception which, to the best of my knowledge, has not been repeated in another mainstream language. There are plenty of languages which use exceptions but they all, with the singular exception of Java, do so in the unchecked variety. - -Obviously Go chose a different path. Go programmers believe that robust programs are composed from pieces that handle the failure cases _before_ they handle the happy path. In the space that Go was designed for; server programs, multi threaded programs, programs that handle input over the network, dealing with unexpected data, timeouts, connection failures and corrupted data must be front and centre of the programmer’s mind if they are to produce robust programs. - -> “I think that error handling should be explicit, this should be a core value of the language.” - -Peter Bourgon, [GoTime #91][13] - -I want to echo Peter’s assertion, as it was the impetus for this article. I think so much of the success of Go is due to the explicit way errors are handled. Go programmers thinks about the failure case first. We solve the “what if…​” case first. This leads to programs where failures are handled at the point of writing, rather than the point they occur in production. - -The verbosity of - -``` -if err != nil { - return err -} -``` - -is outweighed by the value of deliberately handling each failure condition at the point at which they occur. Key to this is the cultural value of handling each and every error explicitly. - -### Return early rather than nesting deeply - -> “Flat is better than nested.” - -The Zen of Python, Item 5 - -This is sage advice coming from a language where indentation is the primary form of control flow. How can we interpret this advice in terms of Go? `gofmt` controls the overall whitespace of a Go program so there’s not thing doing there. - -I wrote earlier about package names, and there is probably some advice here about avoiding a complicated package hierarchy. In my experience the more a programmer tries to subdivide and taxonimise their Go codebase the more they risk hitting the dead end that is package import loops. - -I think the best application of item 5’s advice is the control flow _within_ a function. Simply put, avoid control flow that requires deep indentation. - -> “Line of sight is a straight line along which an observer has unobstructed vision.” - -May Ryer, [Code: Align the happy path to the left edge][14] - -Mat Ryer describes this idea as line of sight coding. Light of sight coding means things like: - - * Using guard clauses to return early if a precondition is not met. - * Placing the successful return statement at the end of the function rather than inside a conditional block. - * Reducing the overall indentation level of the function by extracting functions and methods. - - - -Key to this advice is the thing that you care about, the thing that the function does, is never in danger of sliding out of sight to the right of your screen. This style has a bonus side effect that you’ll avoid pointless arguments about line lengths on your team. - -Every time you indent you add another precondition to the programmers stack, consuming one of their 7 ±2 short term memory slots. Rather than nesting deeply, keep the successful path of the function close to the left hand side of your screen. - -### If you think it’s slow, prove it with a benchmark - -> “In the face of ambiguity, refuse the temptation to guess.” - -The Zen of Python, Item 12 - -Programming is based on mathematics and logic, two concepts which rarely involve the element of chance. But there are many things we, as programmers, guess about every day. What does this variable do? What does this parameter do? What happens if I pass `nil` here? What happens if I call `Register` twice? There’s actually a lot of guesswork in modern programming, especially when it comes to using libraries you didn’t write. - -> “APIs should be easy to use and hard to misuse.” - -Josh Bloch - -One of the best ways I know to help a programmer avoid having to guess is to, when building an API, [focus on the default use case][15]. Make it as easy as you can for the caller to do the most common thing. However, I’ve written and talked a lot about API design in the past, so instead my interpretation of item 12 is; _don’t guess about performance_. - -Despite how you may feel about Knuth’s advice, one of the drivers of Go’s success is its efficient execution. You can write efficient programs in Go and thus people _will_ choose Go because of this. There are a lot of misconceptions about performance, so my request is, when you’re looking to performance tune your code or you’re facing some dogmatic advice like defer is slow, CGO is expensive, or always use atomics not mutexes, don’t guess. - -Don’t complicate your code because of outdated dogma, and, if you think something is slow, first prove it with a benchmark. Go has excellent benchmarking and profiling tools that come in the distribution for free. Use them to find your bottlenecks. - -### Before you launch a goroutine, know when it will stop - -At this point I think I think I’ve mined the valuable points from PEP-20 and possibly stretched its reinterpretation beyond the point of good taste. I think that’s fine, because although this was a useful rhetorical device, ultimately we are talking about two different languages. - -> “You type g o, a space, and then a function call. Three keystrokes, you can’t make it much shorter than that. Three keystrokes and you’ve just started a sub process.” - -Rob Pike, [Simplicity is Complicated][16], dotGo 2015 - -The next two suggestions I’ll dedicate to goroutines. Goroutines are the signature feature of the language, our answer for first class concurrency. They are so easy to use, just put the word `go` in front of the statement and you’ve launched that function asynchronously. It’s so simple, no threads, no stack sizes, no thread pool executors, no ID’s, no tracking completion status. - -Goroutines are cheap. Because of the runtime’s ability to multiplex goroutines onto a small pool of threads (which you don’t have to manage), hundreds of thousands, millions of goroutines are easily accommodated. This opens up designs that would be not be practical under competing concurrency models like threads or evented callbacks. - -But as cheap as goroutines are, they’re not free. At a minimum there’s a few kilobytes for their stack, which, when you’re getting up into the 10^6 goroutines, does start to add up. This is not to say you shouldn’t use millions of goroutines if that is what the design calls for, but when you do, it’s critical that you keep track of them because 10^6 of anything can consume a non trivial amount of resources in aggregate. - -Goroutines are the key to resource ownership in Go. To be useful a goroutine has to do something, and that means it almost always holds reference to, or ownership of, a resource; a lock, a network connection, a buffer with data, the sending end of a channel. While that goroutine is alive, the lock is held, the network connection remains open, the buffer retained and the receivers of the channel will continue to wait for more data. - -The simplest way to free those resources is to tie them to the lifetime of the goroutine–when the goroutine exits, the resource has been freed. So while it’s near trivial to start a goroutine, before you write those three letters, g o and a space, make sure you have an answer to these questions: - - * **Under what condition will a goroutine stop?** Go doesn’t have a way to tell a goroutine to exit. There is no stop or kill function, for good reason. If we cannot command a goroutine to stop, we must instead ask it, politely. Almost always this comes down to a channel operation. Range loops over a channel exit when the channel is closed. A channel will become selectable if it is closed. The signal from one goroutine to another is best expressed as a closed channel. - * **What is required for that condition to arise?** If channels are both the vehicle to communicate between goroutines and the mechanism for them to signal completion, the next question to the programmer becomes, who will close the channel, when will that happen? - * **What signal will you use to know the goroutine has stopped?** When you signal a goroutine to stop, that stopping will happen at some time in the future relative to the goroutine’s frame of reference. It might happen quickly in terms of human perception, but computers execute billions of instructions every second, and from the point of view of each goroutine, their execution of instructions is unsynchronised. The solution is often to use a channel to signal back or a waitgroup where a fan in approach is needed. - - - -### Leave concurrency to the caller - -It is likely that in any serious Go program you write there will be concurrency involved. This raises the problem, many of the libraries and code that we write fall into this a one goroutine per connection, or worker pattern. How will you manage the lifetime of those goroutines? - -`net/http` is a prime example. Shutting down the server owning the listening socket is relatively straight forward, but what about a goroutines spawned from that accepting socket? `net/http` does provide a context object inside the request object which can be used to signal–to code that is listening–that the request should be canceled, thereby terminating the goroutine, however it is less clear how to know when all of these things have been done. It’s one thing to call `context.Cancel`, its another to know that the cancellation has completed.[2][17] - -The point I want to make about `net/http` is that its a counter example to good practice. Because each connection is handled by a goroutine spawned inside the `net/http.Server` type, the program, living outside the `net/http` package, does not have an ability to control the goroutines spawned for the accepting socket. - -This is an area of design that is still evolving, with efforts like go-kit’s `run.Group` and the Go team’s [`ErrGroup`][18] which provide a framework to execute, cancel and wait on functions run asynchronously. - -The bigger design maxim here is for library writers, or anyone writing code that could be run asynchronously, leave the responsibility of starting to goroutine to your caller. Let the caller choose how they want to start, track, and wait on your functions execution. - -### Write tests to lock in the behaviour of your package’s API - -Perhaps you were hoping to read an article from me where I didn’t rant about testing. Sadly, today is not that day. - -Your tests are the contract about what your software does and does not do. Unit tests at the package level should lock in the behaviour of the package’s API. They describe, in code, what the package promises to do. If there is a unit test for each input permutation, you have defined the contract for what the code will do _in code_, not documentation. - -This is a contract you can assert as simply as typing `go test`. At any stage, you can _know_ with a high degree of confidence, that the behaviour people relied on before your change continues to function after your change. - -Tests lock in api behaviour. Any change that adds, modifies or removes a public api must include changes to its tests. - -### Moderation is a virtue - -Go is a simple language, only 25 keywords. In some ways this makes the features that are built into the language stand out. Equally these are the features that the language sells itself on, lightweight concurrency, structural typing. - -I think all of us have experienced the confusion that comes from trying to use all of Go’s features at once. Who was so excited to use channels that they used them as much as they could, as often as they could? Personally for me I found the result was hard to test, fragile, and ultimately overcomplicated. Am I alone? - -I had the same experience with goroutines, attempting to break the work into tiny units I created a hard to manage hurd of Goroutines and ultimately missed the observation that most of my goroutines were always blocked waiting for their predecessor– the code was ultimately sequential and I had added a lot of complexity for little real world benefit. Who has experienced something like this? - -I had the same experience with embedding. Initially I mistook it for inheritance. Then later I recreated the fragile base class problem by composing complicated types, which already had several responsibilities, into more complicated mega types. - -This is potentially the least actionable piece of advice, but one I think is important enough to mention. The advice is always the same, all things in moderation, and Go’s features are no exception. If you can, don’t reach for a goroutine, or a channel, or embed a struct, anonymous functions, going overboard with packages, interfaces for everything, instead prefer simpler approach rather than the clever approach. - -### Maintainability counts - -I want to close with one final item from PEP-20, - -> “Readability Counts.” - -The Zen of Python, Item 7 - -So much has been said, about the importance of readability, not just in Go, but all programming languages. People like me who stand on stages advocating for Go use words like simplicity, readability, clarity, productivity, but ultimately they are all synonyms for one word–_maintainability_. - -The real goal is to write maintainable code. Code that can live on after the original author. Code that can exist not just as a point in time investment, but as a foundation for future value. It’s not that readability doesn’t matter, maintainability matters _more_. - -Go is not a language that optimises for clever one liners. Go is not a language which optimises for the least number of lines in a program. We’re not optimising for the size of the source code on disk, nor how long it takes to type the program into an editor. Rather, we want to optimise our code to be clear to the reader. Because its the reader who’s going to have to maintain this code. - -If you’re writing a program for yourself, maybe it only has to run once, or you’re the only person who’ll ever see it, then do what ever works for you. But if this is a piece of software that more than one person will contribute to, or that will be used by people over a long enough time that requirements, features, or the environment it runs in may change, then your goal must be for your program to be maintainable. If software cannot be maintained, then it will be rewritten; and that could be the last time your company will invest in Go. - -Can the thing you worked hard to build be maintained after you’re gone? What can you do today to make it easier for someone to maintain your code tomorrow? - -##### [the-zen-of-go.netlify.com][2] - - 1. This part of the talk had several screenshots of the landing pages for the websites for [Ruby][19], [Swift][20], [Elm][21], [Go][22], [NodeJS][23], [Python][24], [Rust][25], highlighting how the language described itself.[][26] - 2. I tend to pick on `net/http` a lot, and this is not because it is bad, in fact it is the opposite, it is the most successful, oldest, most used API in the Go codebase. And because of that its design, evolution, and shortcoming have been thoroughly picked over. Think of this as flattery, not criticism.[][27] - - - -#### Related posts: - - 1. [Never start a goroutine without knowing how it will stop][28] - 2. [Simplicity Debt][29] - 3. [Curious Channels][30] - 4. [Let’s talk about logging][31] - - - --------------------------------------------------------------------------------- - -via: https://dave.cheney.net/2020/02/23/the-zen-of-go - -作者:[Dave Cheney][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://dave.cheney.net/author/davecheney -[b]: https://github.com/lujun9972 -[1]: https://www.gophercon.org.il -[2]: https://the-zen-of-go.netlify.com -[3]: https://www.youtube.com/watch?v=yd_rtwYaXps -[4]: https://dave.cheney.net/wp-content/uploads/2020/02/1011226.jpg -[5]: https://dave.cheney.net/wp-content/uploads/2020/02/mean-girls-you-cant-sit-with-us-main.jpg -[6]: http://go-proverbs.github.io -[7]: https://danluu.com/microsoft-culture/ -[8]: https://dave.cheney.net/wp-content/uploads/2020/02/Lucovsky.001.jpeg -[9]: https://www.python.org/dev/peps/pep-0020/ -[10]: https://dave.cheney.net/2019/01/08/avoid-package-names-like-base-util-or-common -[11]: https://twitter.com/davecheney/status/539576755254611968?ref_src=twsrc%5Etfw -[12]: tmp.iUoDiQyXMU#easy-footnote-bottom-1-3936 (This part of the talk had several screenshots of the landing pages for the websites for Ruby, Swift, Elm, Go, NodeJS, Python, Rust, highlighting how the language described itself.) -[13]: https://changelog.com/gotime/91 -[14]: https://medium.com/@matryer/line-of-sight-in-code-186dd7cdea88 -[15]: http://sweng.the-davies.net/Home/rustys-api-design-manifesto -[16]: https://www.youtube.com/watch?v=rFejpH_tAHM -[17]: tmp.iUoDiQyXMU#easy-footnote-bottom-2-3936 (I tend to pick on net/http a lot, and this is not because it is bad, in fact it is the opposite, it is the most successful, oldest, most used API in the Go codebase. And because of that its design, evolution, and shortcoming have been thoroughly picked over. Think of this as flattery, not criticism.) -[18]: https://godoc.org/golang.org/x/sync/errgroup -[19]: https://www.ruby-lang.org/en/ -[20]: https://swift.org -[21]: https://elm-lang.org -[22]: https://golang.org -[23]: https://nodejs.org/en/ -[24]: https://www.python.org -[25]: https://www.rust-lang.org -[26]: tmp.iUoDiQyXMU#easy-footnote-1-3936 -[27]: tmp.iUoDiQyXMU#easy-footnote-2-3936 -[28]: https://dave.cheney.net/2016/12/22/never-start-a-goroutine-without-knowing-how-it-will-stop (Never start a goroutine without knowing how it will stop) -[29]: https://dave.cheney.net/2017/06/15/simplicity-debt (Simplicity Debt) -[30]: https://dave.cheney.net/2013/04/30/curious-channels (Curious Channels) -[31]: https://dave.cheney.net/2015/11/05/lets-talk-about-logging (Let’s talk about logging) diff --git a/sources/tech/20200224 Make free encrypted backups to the cloud on Fedora.md b/sources/tech/20200224 Make free encrypted backups to the cloud on Fedora.md deleted file mode 100644 index 6015e6dc92..0000000000 --- a/sources/tech/20200224 Make free encrypted backups to the cloud on Fedora.md +++ /dev/null @@ -1,237 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Make free encrypted backups to the cloud on Fedora) -[#]: via: (https://fedoramagazine.org/make-free-encrypted-backups-to-the-cloud-on-fedora/) -[#]: author: (Curt Warfield https://fedoramagazine.org/author/rcurtiswarfield/) - -Make free encrypted backups to the cloud on Fedora -====== - -![][1] - -Most free cloud storage is limited to 5GB or less. Even Google Drive is limited to 15GB. While not heavily advertised, IBM offers free accounts with a whopping **25GB** of cloud storage for free. This is not a limited time offer, and you don’t have to provide a credit card. It’s absolutely free! Better yet, since it’s S3 compatible, most of the S3 tools available for backups should work fine. - -This article will show you how to use restic for encrypted backups onto this free storage. Please also refer to [this previous Magazine article about installing and configuring restic.][2] Let’s get started! - -### Creating your free IBM account and storage - -Head over to the IBM cloud services site and follow the steps to sign up for a free account here: . You’ll need to verify your account from the email confirmation that IBM sends to you. - -Then log in to your account to bring up your dashboard, at . - -Click on the **Create resource** button. - -![][3] - -Click on **Storage** and then **Object Storage**. - -![][4] - -Next click on the **Create Bucket** button. - -![][5] - -This brings up the **Configure your resource** section. - -![][6] - -Next, click on the ****Create** button to use the default settings. - -![][7] - -Under **Predefined buckets** click on the **Standard** box: - -![][8] - -A unique bucket name is automatically created, but it’s suggested that you change this. - -![][9] - -In this example, the bucket name is changed to __freecloudstorage_._** - -Click on the **Next** button after choosing a bucket name: - -![][10] - -Continue to click on the **Next** button until you get the the **Summary** page: - -![][11] - -Scroll down to the **Endpoints** section. - -![][12] - -The information in the **Public** section is the location of your bucket. This is what you need to specify in restic when you create your backups. In this example, the location is **s3.us-south.cloud-object-storage.appdomain.cloud**. - -### Making your credentials - -The last thing that you need to do is create an access ID and secret key. To start, click on **Service credentials**. - -![][13] - -Click on the **New credential** button. - -![][14] - -Choose a name for your credential, make sure you check the **Include HMAC Credential** box and then click on the **Add** button. In this example I’m using the name **resticbackup**. - -![][15] - -Click on **View credentials**. - -![][16] - -The _access_key_id_ and _secret_access_key_ is what you are looking for. (For obvious reasons, the author’s details here are obscured.) - -You will need to export these by calling them with the _export_ alias in the shell, or putting them into a backup script. - -![][17] - -### Preparing a new repository - -Restic refers to your backup as a _repository_, and can make backups to any bucket on your IBM cloud account. First, setup the following environment variables using your _access_key_id_ and _secret_access_key_ that you retrieved from your IBM cloud bucket. These can also be set in any backup script you may create. - -``` -$ export AWS_ACCESS_KEY_ID= -$ export AWS_SECRET_ACCESS_KEY= -``` - -Even though you are using IBM Cloud and not AWS, as previously mentioned, IBM Cloud storage is S3 compatible, and restic uses its interal AWS commands for any S3 compatible storage. So these AWS keys really refer to the keys from your IBM bucket. - -Create the repository by initializing it. A prompt appears for you to type a password for the repository. _**Do not lose this password because your data is irrecoverable without it!**_ - -``` -restic -r s3:http://PUBLIC_ENDPOINT_LOCATION/BUCKET init -``` - -The _PUBLIC_ENDPOINT_LOCATION_ was specified in the Endpoint section of your Bucket summary. - -![][18] - -For example: - -``` -$ restic -r s3:http://s3.us-south.cloud-object-storage.appdomain.cloud/freecloudstorage init -``` - -### Creating backups - -Now it’s time to backup some data. Backups are called _snapshots_. Run the following command and enter the repository password when prompted. - -``` -restic -r s3:http://PUBLIC_ENDPOINT_LOCATION/BUCKET backup files_to_backup -``` - -For example: - -``` -$ restic -r s3:http://s3.us-south.cloud-object-storage.appdomain.cloud/freecloudstorage backup Documents/ -Enter password for repository: - repository 106a2eb4 opened successfully, password is correct - Files: 51 new, 0 changed, 0 unmodified - Dirs: 0 new, 0 changed, 0 unmodified - Added to the repo: 11.451 MiB - processed 51 files, 11.451 MiB in 0:06 - snapshot 611e9577 saved -``` - -### Restoring from backups - -Now that you’ve backed up some files, it’s time to make sure you know how to restore them. To get a list of all of your backup snapshots, use this command: - -``` -restic -r s3:http://PUBLIC_ENDPOINT_LOCATION/BUCKET snapshots -``` - -For example: - -``` -$ restic -r s3:http://s3.us-south.cloud-object-storage.appdomain.cloud/freecloudstorage snapshots -Enter password for repository: -ID Date Host Tags Directory -------------------------------------------------------------------- -106a2eb4 2020-01-15 15:20:42 client /home/curt/Documents -``` - -To restore an entire snapshot, run a command like this: - -``` -restic -r s3:http://s3.us-south.cloud-object-storage.appdomain.cloud/freecloudstorage restore snapshotID --target restoreDirectory -``` - -For example: - -``` -$ restic -r s3:http://s3.us-south.cloud-object-storage.appdomain.cloud/freecloudstorage restore 106a2eb4 --target ~ -Enter password for repository: -repository 106a2eb4 opened successfully, password is correct -restoring to /tmp -``` - -* * * - -_Photo by [Alex Machado][19] on [Unsplash][20]._ - -[EDITORS NOTE: The Fedora Project is [sponsored][21] by [Red Hat][22], which is owned by [IBM][23].] - -[EDITORS NOTE: Updated at 1647 UTC on 24 February 2020 to correct a broken link.] - --------------------------------------------------------------------------------- - -via: https://fedoramagazine.org/make-free-encrypted-backups-to-the-cloud-on-fedora/ - -作者:[Curt Warfield][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://fedoramagazine.org/author/rcurtiswarfield/ -[b]: https://github.com/lujun9972 -[1]: https://fedoramagazine.org/wp-content/uploads/2020/01/encrypted-backups-ibm-cloud-816x345.jpg -[2]: https://fedoramagazine.org/use-restic-encrypted-backups/ -[3]: https://fedoramagazine.org/wp-content/uploads/2020/01/ibmclouddash-3-e1579713553261.png -[4]: https://fedoramagazine.org/wp-content/uploads/2020/01/ibmcloudresourcestorage-3.png -[5]: https://fedoramagazine.org/wp-content/uploads/2020/01/ibmcloudbucket-3.png -[6]: https://fedoramagazine.org/wp-content/uploads/2020/01/ibmcloudbucket2.png -[7]: https://fedoramagazine.org/wp-content/uploads/2020/01/ibmcloudbucket3-e1579713758635.png -[8]: https://fedoramagazine.org/wp-content/uploads/2020/01/ibmcloudbucket4.png -[9]: https://fedoramagazine.org/wp-content/uploads/2020/01/createbucket1.png -[10]: https://fedoramagazine.org/wp-content/uploads/2020/01/next.png -[11]: https://fedoramagazine.org/wp-content/uploads/2020/01/bucketsummary-1024x368.png -[12]: https://fedoramagazine.org/wp-content/uploads/2020/01/endpoints-1024x272.png -[13]: https://fedoramagazine.org/wp-content/uploads/2020/01/servicecreds.png -[14]: https://fedoramagazine.org/wp-content/uploads/2020/01/newcred.png -[15]: https://fedoramagazine.org/wp-content/uploads/2020/01/addnewcred.png -[16]: https://fedoramagazine.org/wp-content/uploads/2020/01/keys-1024x298.png -[17]: https://fedoramagazine.org/wp-content/uploads/2020/01/keys2.png -[18]: https://fedoramagazine.org/wp-content/uploads/2020/01/publicendpoint.png -[19]: https://unsplash.com/@alexmachado?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText -[20]: https://unsplash.com/s/photos/backups-to-cloud?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText -[21]: https://getfedora.org/sponsors/ -[22]: https://redhat.com -[23]: https://www.ibm.com/cloud/redhat diff --git a/sources/tech/20200228 Fedora-s gaggle of desktops.md b/sources/tech/20200228 Fedora-s gaggle of desktops.md deleted file mode 100644 index d92d84344a..0000000000 --- a/sources/tech/20200228 Fedora-s gaggle of desktops.md +++ /dev/null @@ -1,411 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Fedora’s gaggle of desktops) -[#]: via: (https://fedoramagazine.org/fedoras-gaggle-of-desktops/) -[#]: author: (Troy Dawson https://fedoramagazine.org/author/tdawson/) - -Fedora’s gaggle of desktops -====== - -![][1] - -There are 38 different desktops or window managers in Fedora 31. You could try a different one every day for a month, and still have some left over. Some have very few features. Some have so many features they are called a desktop environment. This article can’t go into detail on each, but it’s interesting to see the whole list in one place. - -### Criteria for desktops - -To be on this list, the desktop must show up on the desktop manager’s selection list. If the desktop has more than one entry in the desktop manager list, they are counted just as that one desktop. An example is “GNOME”, “GNOME Classic” and “GNOME (Wayland).” These all show up on the desktop manager list, but they are still just GNOME. - -### List of desktops -``` - -``` - -#### [**9wm**][2] - -``` -Emulation of the Plan 9 window manager 8 1/2 - dnf install 9wm -``` - -#### [**awesome**][3] - -``` -Highly configurable, framework window manager for X. Fast, light and extensible -https://fedoramagazine.org/5-cool-tiling-window-managers/ - dnf install awesome -``` - -#### [**blackbox**][4] - -``` -Very small and fast Window Manager -Fedora uses the maintained fork on github - dnf install blackbox -``` - -#### [**bspwm**][5] - -``` -A tiling window manager based on binary space partitioning -https://github.com/windelicato/dotfiles/wiki/bspwm-for-dummies - dnf install bspwm -``` - -#### **[byobu][6]** - -``` -Light-weight, configurable window manager built upon GNU screen - dnf install byobu -``` - -#### **[Cinnamon][7]** - -``` -Cinnamon provides a desktop with a traditional layout, advanced features, easy to use, powerful and flexible. -https://projects.linuxmint.com/cinnamon/ -https://opensource.com/article/19/12/cinnamon-linux-desktop - dnf group install "Cinnamon Desktop" -``` - -#### **[cwm][8]** - -``` -Calm Window Manager by OpenBSD project -https://steemit.com/technology/@jamesdeagle/the-calm-window-manager-cwm-a-quick-start-guide - dnf install cwm -``` - -#### **[Deepin][9]** - -``` -Deepin desktop is the desktop environment released with deepin (the linux distribution). It aims at being elegant and easy to use. - dnf group install "Deepin Desktop" - (optional) dnf group install "Deepin Desktop Office" "Media packages for Deepin Desktop" -``` - -#### **[dwm][10]** - -``` -Dynamic window manager for X -https://fedoramagazine.org/lets-try-dwm-dynamic-window-manger/ -https://fedoramagazine.org/5-cool-tiling-window-managers/ - dnf install dwm - (optional) dnf install dwm-user -``` - -#### **[enlightenment][11]** - -``` -Enlightenment window manager -https://opensource.com/article/19/12/linux-enlightenment-desktop - dnf install enlightenment -``` - -#### **[e16][11]** - -``` -The Enlightenment window manager, DR16 - dnf install e16 - (optional) dnf install e16-epplets e16-keyedit e16-themes -``` - -#### **[fluxbox][12]** - -``` -Window Manager based on Blackbox - dnf install fluxbox - (optional) dnf install fluxbox-pulseaudio fluxbox-vim-syntax -``` - -#### **[fvwm][13]** - -``` -Highly configurable multiple virtual desktop window manager -http://www.fvwm.org/ -https://opensource.com/article/19/12/fvwm-linux-desktop - dnf install fvwm -``` - -#### **[GNOME][14]** - -``` -GNOME is a highly intuitive and user friendly desktop environment. -* both X11 and wayland -https://opensource.com/article/19/12/gnome-linux-desktop -https://fedoramagazine.org/3-simple-and-useful-gnome-shell-extensions/ - dnf group install "GNOME" - (optional but large) dnf group install "Fedora Workstation" -``` - -#### **[herbstluftwm][15]** - -``` -A manual tiling window manager -https://opensource.com/article/19/12/herbstluftwm-linux-desktop - dnf install herbstluftwm - (optional) dnf install herbstluftwm-zsh herbstluftwm-fish -``` - -#### **[i3][16]** - -``` -Improved tiling window manager -https://fedoramagazine.org/getting-started-i3-window-manager/ -https://fedoramagazine.org/using-i3-with-multiple-monitors/ - dnf install i3 - (optional) dnf install i3-doc i3-ipc -``` - -#### **[icewm][17]** - -``` -Window manager designed for speed, usability, and consistency -https://fedoramagazine.org/icewm-a-really-cool-desktop/ - dnf install icewm - (optional) dnf install icewm-minimal-session -``` - -#### **[jwm][18]** - -``` -Joe's Window Manager -https://opensource.com/article/19/12/joes-window-manager-linux-desktop - dnf install jwm -``` - -#### **[KDE Plasma Desktop][19]** - -``` -The KDE Plasma Workspaces, a highly-configurable graphical user interface which includes a panel, desktop, system icons and desktop widgets, and many powerful KDE applications. -* both X11 and wayland -https://opensource.com/article/19/12/linux-kde-plasma -https://fedoramagazine.org/installing-kde-plasma-5/ - dnf group install "KDE Plasma Workspaces" - (optional) dnf group install "KDE Applications" "KDE Educational applications" "KDE Multimedia support" "KDE Office" "KDE Telepathy" - (optional for wayland) dnf install kwin-wayland plasma-workspace-wayland -``` - -#### **[lumina][20]** - -``` -A lightweight, portable desktop environment -https://opensource.com/article/19/12/linux-lumina-desktop - dnf install lumina-desktop - (optional) dnf install lumina-* -``` - -#### **[LXDE][21]** - -``` -LXDE is a lightweight X11 desktop environment designed for computers with low hardware specifications like netbooks, mobile devices or older computers. -https://opensource.com/article/19/12/lxqt-lxde-linux-desktop - dnf group install "LXDE Desktop" - (optional) dnf group install "LXDE Office" "Multimedia support for LXDE" -``` - -#### **[LXQt][22]** - -``` -LXQt is a lightweight X11 desktop environment designed for computers with low hardware specifications like netbooks, mobile devices or older computers. -https://opensource.com/article/19/12/lxqt-lxde-linux-desktop - dnf group install "LXQt Desktop" - (optional) dnf group install "LXQt Office" "Multimedia support for LXQt" -``` - -#### **[MATE][23]** - -``` -MATE Desktop is based on GNOME 2 and provides a powerful graphical user interface for users who seek a simple easy to use traditional desktop interface. -https://opensource.com/article/19/12/mate-linux-desktop -https://fedoramagazine.org/installing-another-desktop/ - dnf group install "MATE Desktop" - (optional) dnf group install "MATE Applications" -``` - -#### **[musca][24]** - -``` -A simple dynamic window manager fox X - dnf install musca -``` - -#### **[openbox][25]** - -``` -A highly configurable and standards-compliant X11 window manager -https://opensource.com/article/19/12/openbox-linux-desktop -https://fedoramagazine.org/openbox-fedora/ - dnf install openbox - (optional) dnf install openbox-kde openbox-theme-mistral-thin-dark -``` - -#### **[Pantheon][26]** - -``` -The Pantheon desktop environment is the DE that powers elementaryOS. -https://github.com/elementary -https://opensource.com/article/19/12/pantheon-linux-desktop - dnf group install "Pantheon Desktop" - (optional) dnf install elementary-capnet-assist elementary-greeter elementary-shortcut-overlay -``` - -#### **[pekwm][27]** - -``` -A small and flexible window manager -https://opensource.com/article/19/12/pekwm-linux-desktop - dnf install pekwm -``` - -#### **[qtile][28]** - -``` -A pure-Python tiling window manager -https://fedoramagazine.org/5-cool-tiling-window-managers/ - dnf install qtile -``` - -#### **[ratpoison][29]** - -``` -Minimalistic window manager -https://opensource.com/article/19/12/ratpoison-linux-desktop - dnf install ratpoison -``` - -#### **[sawfish][30]** - -``` -An extensible window manager for the X Window System - dnf install sawfish - (optional) dnf install sawfish-pager -``` - -#### **[spectrwm][31]** - -``` -Minimalist tiling window manager written in C - dnf install spectrwm -``` - -#### **[Sugar][32]** - -``` -A software playground for learning about learning. -* Possibly the most unique desktop of this list. - dnf group install "Sugar Desktop Environment" - (optional) dnf group install "Additional Sugar Activities" -``` - -#### **[sway][33]** - -``` -i3-compatible window manager for Wayland -* Wayland only -https://fedoramagazine.org/setting-up-the-sway-window-manager-on-fedora/ -https://fedoramagazine.org/5-cool-tiling-window-managers/ - dnf install sway -``` - -#### **[twm][34]** - -``` -X.Org X11 twm window manager -https://en.wikipedia.org/wiki/Twm -https://opensource.com/article/19/12/twm-linux-desktop - dnf install xorg-x11-twm -``` - -#### **[WindowMaker][35]** - -``` -A fast, feature rich Window Manager -https://opensource.com/article/19/12/linux-window-maker-desktop - dnf install WindowMaker - (optional) dnf install WindowMaker-extra -``` - -#### **[wmx][36]** - -``` -A really simple window manager for X - dnf install wmx -``` - -#### **[XFCE][37]** - -``` -A lightweight desktop environment that works well on low end machines. -https://opensource.com/article/19/12/xfce-linux-desktop - dnf group install "Xfce Desktop" - (optional) dnf group install "Applications for the Xfce Desktop" "Extra plugins for the Xfce panel" "Multimedia support for Xfce" "Xfce Office" -``` - -#### **[xmonad][38]** - -``` -A tiling window manager - dnf install xmonad - (optional) dnf install xmonad-mate -``` - -* * * - -_Photo by [Annie Spratt][39] on [Unsplash][40]._ - --------------------------------------------------------------------------------- - -via: https://fedoramagazine.org/fedoras-gaggle-of-desktops/ - -作者:[Troy Dawson][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://fedoramagazine.org/author/tdawson/ -[b]: https://github.com/lujun9972 -[1]: https://fedoramagazine.org/wp-content/uploads/2020/01/gaggle-desktops-816x345.jpg -[2]: https://github.com/9wm/9wm -[3]: https://awesomewm.org/ -[4]: https://github.com/bbidulock/blackboxwm -[5]: https://github.com/baskerville/bspwm -[6]: https://byobu.org/ -[7]: https://github.com/linuxmint/cinnamon -[8]: https://github.com/leahneukirchen/cwm -[9]: https://www.deepin.org/en/dde/ -[10]: http://dwm.suckless.org/ -[11]: https://www.enlightenment.org/ -[12]: http://fluxbox.org/ -[13]: https://github.com/fvwmorg/fvwm -[14]: https://www.gnome.org/ -[15]: http://herbstluftwm.org/ -[16]: https://i3wm.org/ -[17]: https://ice-wm.org/ -[18]: http://joewing.net/projects/jwm/ -[19]: https://kde.org/ -[20]: https://lumina-desktop.org/ -[21]: https://lxde.org/ -[22]: https://lxqt.org/ -[23]: https://mate-desktop.org/ -[24]: https://github.com/enticeing/musca -[25]: http://openbox.org -[26]: https://elementary.io/ -[27]: http://www.pekwm.org/ -[28]: http://qtile.org -[29]: http://www.nongnu.org/ratpoison/ -[30]: http://sawfish.wikia.com/ -[31]: https://github.com/conformal/spectrwm -[32]: https://sugarlabs.org/ -[33]: https://github.com/swaywm/sway -[34]: https://www.x.org/releases/X11R7.6/doc/man/man1/twm.1.xhtml -[35]: http://www.windowmaker.org -[36]: http://www.all-day-breakfast.com/wmx/ -[37]: https://www.xfce.org/ -[38]: https://hackage.haskell.org/package/xmonad -[39]: https://unsplash.com/@anniespratt?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText -[40]: https://unsplash.com/?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText diff --git a/sources/tech/20200302 Using LibreOffice for your open source budgeting tool.md b/sources/tech/20200302 Using LibreOffice for your open source budgeting tool.md deleted file mode 100644 index 9d26ff39c7..0000000000 --- a/sources/tech/20200302 Using LibreOffice for your open source budgeting tool.md +++ /dev/null @@ -1,168 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Using LibreOffice for your open source budgeting tool) -[#]: via: (https://opensource.com/article/20/3/libreoffice-open-source-budget) -[#]: author: (Jess Weichler https://opensource.com/users/cyanide-cupcake) - -Using LibreOffice for your open source budgeting tool -====== -Figure out where your money is going with this LibreOffice Calc budget -template. -![scientific calculator][1] - -Budgets can be intimidating for beginners. It can feel overwhelming to think about money, much less about how to keep track of it. But it's important to know where your money is coming and going. - -In this article, I'll step through a sample budget by explaining the logic behind important money decisions as well as the formulas you need to automate the process. Fortunately, LibreOffice makes it easy for anyone to keep their yearly budget in check, even the math-averse. - -### Getting started - -Begin by downloading and installing [LibreOffice][2], if you don't already have it. Next, download my [LibreOffice Calc template][3], which you can use as a starting point to create your own budget to meet your spending and savings goals. - -It's important to interact with your spreadsheet frequently. You can input transactions as they happen, daily, or weekly. You even could save up your receipts to calculate all your expenses at the end of the month, but this can be a hard slog. You want budgeting to be as quick and easy as possible. - -### Categories - -The first step to creating a budget is to decide on the categories you want to track. These categories can be as simple or as complex as you like. Think about what is useful to your personal situation and financial goals. You can easily add or change categories as your needs change. - -The template has a number of example categories you can start with. There is no right or wrong way to choose categories; your budget has to work for you. Look through the list in Column A of the **Budget** tab and decide which ones to keep, which to delete, and any others you want to add. Then edit that list to align with your personal income and expense situation. - -#### Create category drop-down menus - -![Budget categories][4] - -The template uses a drop-down menu to make it easy to assign categories to income and expenses. You can view them on the **Monthly** sheets (accessed with the tabs at the bottom of the LibreOffice window). Click on a cell in Column C, and a drop-down arrow will appear on the right. Click the arrow, and you'll see the example categories. You may need to change some of them so that they will match the categories in your budget (Column A of the **Budget** tab). - -To add or remove categories from the dropdown menu, click on Column C in a Monthly sheet to select all **Category** cells. Then, in the main menu, select **Data** > **Validity**. This opens up a dialog box. - -In **Validity**, select the **Criteria** tab, then click on the arrow to the right of **Allow**, set it to **List**, and type the categories you want to use in the **Entries** box. Type one category per line. Make sure to use the exact same categories you used on the **Budget** sheet in Column A. - -### Estimating your budget - -Once you have defined your categories, it's time to estimate how much you expect to earn and spend. You can calculate these amounts monthly, yearly, or using a mix of the two. - -Your first year of budgeting estimates won't be perfect, and you may be surprised at how much or little you spend on certain categories. But doing this will help you get a realistic idea of where your money is going. You can make adjustments in your second year to create a more accurate budget based upon what you spend in year one. - -In Column B (**Monthly Estimate**) of the **Budget** tab, enter your anticipated _monthly_ income and expenses for each category (an exception is the **Charity** row, which is automatically calculated as a percentage of your income). For _annual_ expenses and income (e.g., taxes, insurance, tuition, etc.), enter them in Column P (**Yearly Estimate**). - -#### Calculating the annual cost of monthly expenses - -Most expenses occur monthly. To find the yearly cost of a monthly expense, multiply your monthly estimate by 12. You could do this manually for each category, but it is much easier to use formulas. - -Formulas are automated calculations that determine the value of a cell. Formulas do all the heavy lifting, so you don't have to do a lot of sums in your head. - -In the template, you can use the **Yearly Estimate** column to make an equation to annualize a monthly expense or income. In a cell in Column P, type this: - - -``` -`=SUM(x*12)` -``` - -but change _x_ to the name of the **Monthly Estimate** cell you want to use. (For example, to calculate the annual cost of your phone service using the template, the formula would read **=SUM(B12*13)**.) - -#### Calculating the monthly cost of yearly expenses - -You may pay some expenses, such as car insurance, only once a year. You can either ignore these expenses in the monthly estimates or put money aside for them in your budget each month. - -If you want to do the latter, you need to divide your **Yearly Estimate** by 12 and put that amount into your monthly budget. To do so, place this equation in the appropriate cell in the **Monthly Estimate** column: - - -``` -`=SUM(x/12)` -``` - -where _x_ is the corresponding **Yearly Estimate** cell on your spreadsheet (from Column P). - -#### Finding percentages - -If you want to donate or save a percentage of your income, there's a function for that, too! - -The common recommendation is to put aside 20% of your take-home pay for savings. While I don't focus on this too much, I do find it helpful to see if I'm meeting my savings goals from month to month. - -For instance, Row 32 of the **Budget** tab template uses this formula to calculate the 20% of your income that you should allocate to savings: - - -``` -`=SUM(B2*0.2)` -``` - -This same method can be used if you give a percentage (e.g., 10%) of your income to charity (Row 21 of the template): - - -``` -`=SUM(B2*-0.1)` -``` - -This formula uses a negative percentage because donating to charity is an expense. - -### Entering monthly income and expenses - -The template pulls data totals from the **Monthly** sheets (the tabs at the bottom of the spreadsheet) to populate Columns C through N on the **Budget** sheet. - -It's useful to place each month's transactions on separate sheets of your budget spreadsheet. By keeping your receipts from purchases and entering them into each month's sheet, you create a digital record of your money. - -Enter income as positive numbers and expenses as negative numbers. Select the appropriate category using the drop-down in the **Category** column. - -In LibreOffice, the **SUMIF** function can look at values in a specific column and extract only the ones that occur next to a specific word. My template uses a **SUMIF** formula to extract values based on the adjacent category in order to enter an amount in the correct cell on the **Budget** tab. For example, to enter January's internet expenses into the **Budget** spreadsheet, enter this formula in cell C12: - - -``` -`=SUMIF(january.$C:$C,A12,january.$D:$D)` -``` - -This looks at January's Column C and, if it sees an entry that contains the word in A12 on the **Budget** tab (Internet), then it extracts the number from Column D on the **January** tab and enters that value into the cell that contains the formula on the **Budget** tab (C12). - -### Analyzing your budget data - -#### Adding a range of numbers to calculate YTD spending - -To see how much you have spent overall this year to date (YTD), select the cell where you want to display that data (in the template, it's cell O29, under the **YTD** column), and enter the following formula to total the range of numbers corresponding to your monthly **Total Expense**: - - -``` -`=SUM(x:y)` -``` - -Instead of _x_ and _y_, enter the first cell and the last cell in the range. You can type them in manually, but it's easier and less error-prone to just click and drag from the first to last cell. LibreOffice does the calculation and enters the appropriate values. - -#### Seeing how you're doing on your budget - -A big part of budgeting is comparing your estimates to your actual income and expenses. In the template, this is the **Budget** tab's Column Q. This column subtracts the contents of each cell in Column O (**YTD**) from Column P (**Yearly Estimate**).  - - -``` -`=SUM(x-y)` -``` - -where _x_ and _y_ equal the corresponding cells from Column P and O. For example, using the template to calculate how much you've spent on Utilities compared to your budget, you would enter **=SUM(P11-O11)**. - -![Budget overview][5] - -### Tracking expenses - -Now that your yearly budget is set up, you are ready to start meeting your financial goals. - -It's important to look at your budget often—and it's equally important to do so without guilt. Think of this process as gathering data so that you can adjust your estimates for the next year. The primary goal of budgeting is to understand your own spending habits and refine either your expectations or your behavior so that you can plan better for how your income is used. - -Which open source tools and apps do you use to budget? Tell us in the comments! - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/3/libreoffice-open-source-budget - -作者:[Jess Weichler][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/cyanide-cupcake -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/calculator_money_currency_financial_tool.jpg?itok=2QMa1y8c (scientific calculator) -[2]: https://www.libreoffice.org/download/download/ -[3]: https://opensource.com/sites/default/files/uploads/budget_template_0.ods -[4]: https://opensource.com/sites/default/files/uploads/imagebudget_cat.png (Budget categories) -[5]: https://opensource.com/sites/default/files/uploads/imagebudget_overview.png (Budget overview) diff --git a/sources/tech/20200303 Getting started with lightweight alternatives to GNU Emacs.md b/sources/tech/20200303 Getting started with lightweight alternatives to GNU Emacs.md deleted file mode 100644 index 5f86c79b84..0000000000 --- a/sources/tech/20200303 Getting started with lightweight alternatives to GNU Emacs.md +++ /dev/null @@ -1,164 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Getting started with lightweight alternatives to GNU Emacs) -[#]: via: (https://opensource.com/article/20/3/lightweight-emacs) -[#]: author: (Seth Kenlon https://opensource.com/users/seth) - -Getting started with lightweight alternatives to GNU Emacs -====== -Slimmed-down (in size and features) alternatives allow you to take your -text editor anywhere you go. -![Text editor on a browser, in blue][1] - -I work on a lot of servers, and sometimes I find a host that hasn't installed [GNU Emacs][2]. There's usually a [GNU Nano][3] installation to keep me from resorting to [Vi][4], but I'm not used to Nano the way I am Emacs, and I inevitably run into complications when I try to save my document (**C-x** in Nano stands for Exit, and **C-s** locks Konsole). - -While it would be nice to have GNU Emacs available everywhere, it's a lot of program for making a simple update to a config file. My need for a small and lightweight emacs is what took me down the path of discovering MicroEmacs, Jove, and Zile—tiny, self-contained [emacsen][5] that you can put on a thumb drive, an SD card, and nearly any server, so you'll never be without an emacs editor. - -### Editing macros - -The term "emacs" is a somewhat generic term in the way that only open source produces, and a portmanteau. Before there was [GNU Emacs][6], there were collections of batch process scripts (called _macros_) that could perform common tasks for a user. For instance, if you often found yourself typing "teh" instead of "the," you could either go in and correct each one manually (no small feat when your editor can't even load the entire document into memory, as was often the case in the early 1980s), or you could invoke a macro to perform a quick swap of the "e" and "h." - -Eventually, these macros were bundled together into a package called editing macros, or EMACS for short. GNU Emacs is the most famous emacsen (yes, the -en suffix is used to describe many emacs, as in the word "oxen"), but it's not the only one. And it's certainly not the smallest. Quite the contrary, GNU Emacs is probably one of the largest. - -Fortunately, GNU Emacs is so popular that other emacs implementations tend to mimic most of the GNU version's basic controls. If you're looking for a basic, fast, and efficient editor that isn't Vim, you'll likely be happy with any of these options. - -### MicroEmacs - -![µemacs][7] - -[MicroEmacs][8], also known as uemacs (as in the Greek letter µ, which denotes "micro" in scientific notation), was written by Dave Conroy, but there's a long list of users who have cloned it and modified it. One user who maintains a personal version of µemacs is a programmer named Linus Torvalds, and his copy is available from his website, [kernel.org][9] (which also, incidentally, includes a small side project of his called [Linux][10]). - -#### Size - -It takes me five seconds to compile µemacs at the slowest setting I can impose on my computer, and the resulting binary is a mere 493KB. Admittedly, that's not literally "micro" compared to the typical size of a GNU Emacs download (1 millionth of 70MB is 70 bytes, by my calculation), but it's respectably small. For instance, it's easy enough to send it to yourself by email or over Signal, and certainly small enough to keep handy on every thumb drive or SD card you own. - -By default, Linus's version expects libcurses, but you can override this setting in the Makefile so that it uses libtermcap instead. The resulting binary is independent enough to run on most Linux boxes: - - -``` -$ ldd em -linux-vdso.so.1 -libtermcap.so.2 => /lib64/libtermcap.so.2 -libc.so.6 => /lib64/libc.so.6 -/lib64/ld-linux-x86-64.so.2 -``` - -#### Features - -The [keyboard shortcuts][11] are just as you'd expect. You can open files and edit them without ever realizing you're not in GNU Emacs. - -Some advanced features are missing. For instance, there's no vertical buffer split, although there is a horizontal split. There's no eval command, so you won't use µemacs for Lisp programming. - -The search function is also a little different from what you may be used to: instead of **C-s**, it's **M-s**, which could make all the difference if your terminal emulator accepts **Ctrl+S** as a freeze command. The help page for µemacs is very complete, so use **M-x help** to get familiar with what it has available. - -#### License - -The license for µemacs is custom to the project with a non-commercial condition. You're free to share, use, and modify µemacs, but you can't do anything commercial with it. -While not as liberal a policy as I typically prefer, it's a good-enough license for personal use; just don't build a business around it. - -### GNU Zile - -![GNU Zile][12] - -[GNU Zile][13] claims to be a development kit for text editors. It's meant as a framework to enable people to quickly develop their own custom text editor without having to reinvent common data structures. It's a great idea and probably very useful, but as I have no interest in making my own editor, I just use the example implementation that ships with its codebase as a pleasant, lightweight emacs. - -The build process for the example editor (supposedly called Zemacs, although the binary it renders is named zile) is the standard [Autotools][14] procedure: - - -``` -$ ./configure -$ make -``` - -#### Size - -Compiling it from source takes me a minute on one core or about 50 seconds on six cores (the configuration process is the long part). The binary produced in the end is 1.2MB, making this the heaviest of the lightweight emacsen I use, but compared to even GNU Emacs without X (which is 14MB on my system), it's relatively trivial. - -Of the lightweight emacsen I use, it's also the most complex. You can exclude some library links by disabling features during configuration, but here are the defaults: - - -``` -$ ldd src/zile -linux-vdso.so.1 -libacl.so.1 => /lib64/libacl.so.1 -libncurses.so.5 => /lib64/libncurses.so.5 -libgc.so.1 => /usr/lib64/libgc.so.1 -libc.so.6 => /lib64/libc.so.6 -libattr.so.1 => /lib64/libattr.so.1 -libdl.so.2 => /lib64/libdl.so.2 -libpthread.so.0 => /lib64/libpthread.so.0 -/lib64/ld-linux-x86-64.so.2 -``` - -#### Features - -Zile acts a little more like GNU Emacs than µemacs or Jove, but it's still a minimal experience. But some little touches are refreshing: Tab completion happens in a buffer, you can run shell commands from the mini-buffer, and you have a good assortment of functions available. It's by no means a GNU Emacs replacement, though, and if you wander too far in search of advanced features, you'll find out why it's only 1.2MB. - -I've been unable to find in-application help files, and the man page bundled with it is minimal. However, if you're comfortable with Emacs, Zile is a good compromise between the full 14MB (or greater, if you're using a GUI) version and the extremely lightweight implementations. - -### Jove - -![Jove][15] - -[Jove][16] was my first tiny emacs and remains the smallest I've found yet. This was an easy discovery for me, as it ships with [Slackware][17] Linux and, with a surreptitious symlink, quickly became my personal replacement for the Vi binary. Jove is based on GNU Emacs, but the man page cautions that feature parity is by no means to be expected. I find Jove surprisingly feature-rich for such a small binary (in fact, this article was written in Jove version 4.17.06-9), but there's no question that renaming .emacs to .joverc does _not_ behave as you might hope. - -#### Size - -It takes me five seconds to compile Jove at the slowest setting (-j1) and about a second using all cores. The resulting binary, confusingly called jjove by default, is just 293KB. - -The Jove binary is independent enough to run on most Linux boxes: - - -``` -$ ldd jjove -linux-vdso.so.1 -libtermcap.so.2 => /lib64/libtermcap.so.2 -libc.so.6 => /lib64/libc.so.6 -/lib64/ld-linux-x86-64.so.2 -``` - -#### Features - -Jove has good documentation in the form of a man page. You can also get a helpful listing of all available commands by typing **M-x ?** and using the Spacebar to scroll. If you're entirely new to emacs, you can run **teachjove** to learn Jove (and emacs, accordingly). - -Most common editing commands and keybindings work as expected. Some oddities exist; for example, there's no vertical split, and Tab completion for paths in the mini-buffer is non-existent. However, it's the smallest emacs I've found and yet has a full GNU Emacs feel to it. - -### Try Emacs - -If you've only ever tried GNU Emacs, then you might find that the world of emacsen is richer than you may have expected. There's a rich tradition behind emacs, and trying some of its variants, spin-offs, and alternate implementations is part of the joy of being comfortable with how emacsen work. Get to know emacs; carry a few builds around everywhere you go, and you'll never have to use a substandard editor again! - -GNU Emacs can be much more than just a text editor. Learn how to get started. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/3/lightweight-emacs - -作者:[Seth Kenlon][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/seth -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/browser_blue_text_editor_web.png?itok=lcf-m6N7 (Text editor on a browser, in blue) -[2]: https://www.gnu.org/software/emacs/ -[3]: https://www.nano-editor.org/ -[4]: https://opensource.com/article/19/3/getting-started-vim -[5]: https://www.emacswiki.org/emacs/Emacsen -[6]: https://opensource.com/article/20/2/who-cares-about-emacs -[7]: https://opensource.com/sites/default/files/uploads/lightweight-emacs-uemacs.jpg (µemacs) -[8]: https://en.wikipedia.org/wiki/MicroEMACS -[9]: https://git.kernel.org/pub/scm/editors/uemacs/uemacs.git -[10]: https://opensource.com/tags/linux -[11]: https://opensource.com/downloads/emacs-cheat-sheet -[12]: https://opensource.com/sites/default/files/uploads/lightweight-emacs-zile.jpg (GNU Zile) -[13]: https://www.gnu.org/software/zile/ -[14]: https://opensource.com/article/19/7/introduction-gnu-autotools -[15]: https://opensource.com/sites/default/files/uploads/lightweight-emacs-jove.jpg (Jove) -[16]: https://opensource.com/article/17/1/jove-lightweight-alternative-vim -[17]: http://slackware.com diff --git a/sources/tech/20200304 How service virtualization relates to test-driven development.md b/sources/tech/20200304 How service virtualization relates to test-driven development.md deleted file mode 100644 index 4ff4243603..0000000000 --- a/sources/tech/20200304 How service virtualization relates to test-driven development.md +++ /dev/null @@ -1,428 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (How service virtualization relates to test-driven development) -[#]: via: (https://opensource.com/article/20/3/service-virtualization-test-driven-development) -[#]: author: (Alex Bunardzic https://opensource.com/users/alex-bunardzic) - -How service virtualization relates to test-driven development -====== -Mountebank simulates services you're dependent on so autonomous teams -can continue development activities without having to wait on anyone. -![Person using a laptop][1] - -The agile approach to software development relies on service virtualization to give each IT team autonomy. This approach removes blockages and allows autonomous teams to continue development activities without having to wait on anyone. That way, integration testing can commence as soon as teams start iterating/sprinting. - -### How automated services work - -Any automated service is available to consumers via a published endpoint. This means services can be automated only if they're made available online. - -Any consumer wishing to leverage available automated services must be capable of sending requests to that service's endpoint via an HTTP protocol. Some of those services will, upon receiving the request via the HTTP protocol, respond by simply sending back some data. Other services may respond to receiving a request via HTTP protocol by actually performing some work. For example, a service may create a resource (for example, create an order), update a resource (update an order), or delete a resource (cancel an order). - -All those activities get triggered via the HTTP protocol. In the simplest of cases, the action instigated by the service consumer is GET (e.g., HTTP GET). That request may arrive with some query values; those values will get used by the service to narrow down the search (such as "search for order number 12345 and return the data"). - -In more elaborate cases, a request may arrive with the instruction to POST some values; a service will accept that request and expect some values to be associated with it. Those values are usually called the payload. When the service accepts an HTTP POST request containing the payload, it will attempt to process it. It may or may not succeed in processing it, but either way, it will respond to the service consumer with a status code and an optional status message. That way, service consumers will be notified of the success/failure of their request so that they can decide what the next step should be. - -### What is service virtualization? - -Now that we understand how automated services work, it should be easier to understand how to virtualize them. In a nutshell, it is possible to simulate any service that is published on a hosting site. Instead of sending HTTP requests directly to the service provider's endpoint, you can interject a fake, pretend service that simulates the behavior of the real service. - -From the service consumer's standpoint, it makes absolutely no difference whether it is interacting with a real or a fake service. The interaction remains identical. - -### Virtualize one service - -OK, enough talking, I'll roll up my sleeves and show how to do it in practical terms. Suppose your team is starting a new project and receives requirements in the form of a fully fleshed user story: - -#### Authenticate user - -_As a new app_ -_I want to authenticate the user_ -_Because we want to ensure proper security for the app_ - -#### Acceptance criteria - -**Scenario #1:** _New app successfully authenticates the user_ -Given that the user has navigated to the login page -And the user has submitted credentials -When new app receives login request -Then new app successfully authenticates the user -And new app displays response message "User successfully logged in." - -**Scenario #2:** _New app cannot authenticate the user on the first attempt_ -Given that the user has navigated to the login page -And the user has submitted credentials -When new app receives login request -Then new app fails to successfully authenticate the user -And new app displays response message "Incorrect login. You have 2 more attempts left." - -**Scenario #3:** _New app cannot authenticate the user on the second attempt_ -Given that the user has navigated to the login page -And the user has submitted credentials -When new app receives login request -Then new app fails to successfully authenticate the user -And new app displays response message "Incorrect login. You have 1 more attempt left." - -**Scenario #4:** _New app cannot authenticate the user on the third attempt_ -Given that the user has navigated to the login page -And the user has submitted credentials -When new app receives login request -Then new app fails to successfully authenticate the user -And new app displays response message "Incorrect login. You have no more attempts left." - -The first thing to do when starting the work on this user story is to create the so-called "walking skeleton" (for this exercise, I will be using the standard **.Net Core** platform plus **xUnit.net** I discussed in my previous articles ([starting with this one][2] with [another example here][3]). Please refer to them for technical details on how to install, configure, and run the required tools. - -Create the walking skeleton infrastructure by opening the command line and typing: - - -``` -`mkdir AuthenticateUser` -``` - -Then move inside the **AuthenticateUser** folder: - - -``` -`cd AuthenticateUser` -``` - -And create a separate folder for tests: - - -``` -`mkdir tests` -``` - -Move into the **tests** folder (**cd tests**) and initiate the **xUnit** framework: - - -``` -`dotnet new xunit` -``` - -Now move one folder up (back to **AuthenticateUser**) and create the app folder: - - -``` -mkdir app -cd app -``` - -Create the scaffold necessary for C# code: - - -``` -`dotnet new classlib` -``` - -The walking skeleton is now ready! Open the editor of your choice and start coding. - -### Write a failing test first - -In the spirit of TDD, start by writing the failing test (refer to the [previous article][4] to learn why is it important to see your test fail before attempting to make it pass): - - -``` -using System; -using Xunit; -using app; - -namespace tests { -    public class UnitTest1 { -        Authenticate auth = [new][5] Authenticate(); - -        [Fact] -        public void SuccessLogin(){ -            var given = "credentials"; -            var expected = "Successful login."; -            var actual = auth.Login(given); -            Assert.Equal(expected, actual); -        } -    } -} -``` - -This test states that if someone supplies some credentials (i.e., a secret username and password) to the **Login** method of the **Authenticate** component when it processes the request, it is expected to return the message "Successful login." - -Of course, this is functionality that does not exist yet—the instantiated **Authenticate** module in the **SuccessLogin()** module hasn't been written yet. So you might as well go ahead and take the first stab at writing the desired functionality. Create a new file (**Authenticate.cs**) in the **app** folder and add the following code: - - -``` -using System; - -namespace app { -    public class Authenticate { -        public string Login(string credentials) { -            return "Not implemented"; -        } -    } -} -``` - -Now, navigate to the **tests** folder and run: - - -``` -`dotnet test` -``` - -![Output of dotnet.test][6] - -The test fails because it was expecting a "Successful login" output but instead got the "Not implemented" output. - -### Increasing complexity for day two operations - -Now that you have created the "happy path" expectation and made it fail, it is time to work on implementing the functionality that will make the failing test pass. The following day, you attend the standup and report that you have started on the "Authenticate user" story. You let the team know that you have created the first failing test for the "happy path," and today, the plan is to implement the code to make the failing test pass. - -You explain your intention to first create a **User** table containing the **username**, **password**, and other pertinent attributes. But the scrum master interrupts and explains that the **User** module is being handled by another team. It would be bad practice to duplicate the maintenance of users, as the information will quickly get out of sync. So instead of building the **User** module (which would include the authentication logic), you are to leverage the authentication services that the **User** team is working on. - -That's great news because it saves you the trouble of having to write a lot of code to implement the **User** processing. Emboldened, you enthusiastically announce that you will quickly cobble up a function that will take user credentials and send them to the service that the **User** team has built. - -Alas, your intentions get squashed again as you learn that the **User** team hasn't started building the **User authentication** service yet. They're still in the process of assigning user stories to the backlog. Disheartened, you resign to the fact that it will be at least a few days (if not weeks?) before you can start working on the **User authentication** story. - -The scrum master then says that there is no reason to wait for the **User authentication** service to be built and deployed to testing. You could start developing the authentication functionality right away. But how can you do that? - -The scrum master offers a simple suggestion: leverage service virtualization. Since all specifications for the **User** module have been solidified and signed off, you have a solid, non-volatile contract to build your solution against. The contract published by the **User** services team states that in order to authenticate a user, specific expectations must be fulfilled: - - 1. A client wishing to authenticate a user should send an **HTTP POST** request to the endpoint . - 2. The **HTTP POST** sent to the above endpoint must have a **JSON** payload that contains the user credentials (i.e., username and password). - 3. Upon receiving the request, the service will attempt to log the user in. If the username and password match the information on record, the service will return an **HTTP** response containing status code 200 with the body of the response containing the message "User successfully logged in." - - - -So, now that you know the contract details, you can start building the solution. Here's the code that connects to the endpoint, sends the **HTTP POST** request, and receives the **HTTP** response: - - -``` -using System; -using System.Net.Http; -using System.Threading.Tasks; -using System.Collections.Generic; - -namespace app { -    public class Authenticate { -        HttpClient client = [new][5] HttpClient(); -        string endPoint = ""; - -        public string Login(string credentials) { -            Task<string> response = CheckLogin(credentials); -            return response.Result; -        } - -        private async Task<string> CheckLogin(string credentials) { -            var values = [new][5] Dictionary<string, string>{{"credentials", credentials}}; -            var content = [new][5] FormUrlEncodedContent(values); -            var response = await client.PostAsync(endPoint, content); -            return await response.Content.ReadAsStringAsync(); -        } -    } -} -``` - -This code won't work because does not exist (yet). Are you stuck now, waiting for the other team to eventually build and deploy that service? - -Not really. Service virtualization to rescue! Let's pretend that the service is already there and continue the development. - -### How to virtualize a service - -One way to virtualize the **User authentication** service would be to write a new app (the new API) and run it locally. This API will mirror the contract specified by the real **User authentication** API and will only return hard-coded stubbed data (it will be a fake service). - -Sounds like a good plan. Again, the team pushes back during the standup, questioning the need for writing, building, testing, and deploying a brand new app just to accomplish this fake functionality. It kind of wouldn't be worth the trouble because, by the time you deliver that new fake app, the other team would probably be ready with the real service. - -So you've reached an impasse. It looks like you are forced to wait on your dependency to materialize. You've failed to control your dependencies; you now have no recourse but to work in a sequential fashion. - -Not so fast! There is a great new tool called [mountebank][7] that is ideal for virtualizing any service. Using this tool, you can quickly stand up a local server that listens on a port you specify and takes orders. To make it simulate a service, you only have to tell it which port to listen to and which protocol to handle. The choice of protocols is: - - * HTTP - * HTTPS - * SMTP - * TCP - - - -In this case, you need the HTTP protocol. First, install mountebank—if you have **npm** on your computer, you can simply type on the command line: - - -``` -`npm install -g mountebank` -``` - -After it's installed, run mountebank by typing: - - -``` -`mb` -``` - -At startup, mountebank will show: - -![mountebank startup][8] - -Now you're ready to virtualize an HTTP service. In this case, the **User authentication** service expects to receive an HTTP POST request; here is how the implemented code sends an HTTP POST request: - - -``` -`var response = await client.PostAsync(endPoint, content);` -``` - -You now have to establish that **endPoint**. Ideally, all virtualized services should be propped in the **localhost** server to ensure quick execution of integration tests. - -To do that, you need to configure the **imposter**. In its bare-bones form, the **imposter** is a simple JSON collection of key-value pairs containing the definition of a port and a protocol: - - -``` -{ -    "port": 3001, -    "protocol": "http" -} -``` - -This imposter is configured to handle the HTTP protocol and to listen to incoming requests on port 3001. - -Just listening to incoming HTTP requests on port 3001 is not going to do much. Once the request arrives at that port, mountebank needs to be told what to do with that request. In other words, you are virtualizing not only the availability of a service on a specific port but also the way that virtualized service is going to respond to the request. - -To accomplish that level of service virtualization, you need to tell mountebank how to configure stubs. Each stub consists of two components: - - 1. A collection of predicates - 2. A collection of expected responses - - - -A predicate (sometimes called a matcher) narrows down the scope of the incoming request. For example, using the HTTP protocol, you can expect more than one type of method (e.g., GET, POST, PUT, DELETE, PATCH, etc.). In most service-virtualization scenarios, we are interested in simulating the behavior that is specific to a particular HTTP method. This scenario is about responding to the HTTP POST request, so you need to configure your stub to match on HTTP POST requests only: - - -``` -{ -    "port": 3001, -    "protocol": "http", -    "stubs": [ -        { -            "predicates": [ -                { -                    "equals": { -                        "method": "post" -                    } -                } -            ] -        } -    ] -} -``` - -This imposter defines one predicate that matches (using the keyword **equals**) on the HTTP POST request only. - -Now take a closer look at the **endPoint** value, as defined in the implemented code: - - -``` -`string endPoint = "http://localhost:3001/api/v1/users/login";` -``` - -In addition to listening to port 3001 (as defined in ), the **endPoint** is more specific, in that it expects the incoming HTTP POST request to go to the /api/v1/users/login path. How do you tell mountebank to only match exactly on the /api/v1/users/login path? By adding the path key-value pair to the stub's predicate: - - -``` -{ -    "port": 3001, -    "protocol": "http", -    "stubs": [ -        { -            "predicates": [ -                { -                    "equals": { -                        "method": "post", -                        "path": "/api/v1/users/login" -                    } -                } -            ] -        } -    ] -} -``` - -This imposter now knows that HTTP requests arriving at port 3001 must be a POST method and must point at the /api/v1/users/login path. The only thing left to simulate is the expected HTTP response. - -Add the response to the JSON imposter: - - -``` -{ -    "port": 3001, -    "protocol": "http", -    "stubs": [ -        { -            "predicates": [ -                { -                    "equals": { -                        "method": "post", -                        "path": "/api/v1/users/login" -                    } -                } -            ], -            "responses": [ -                { -                    "is": { -                        "statusCode": 200, -                        "body": "Successful login." -                    } -                } -            ] -        } -    ] -} -``` - -With mountebank imposters, you define responses as a collection of JSON key-value pairs. In most cases, it is sufficient to simply state that a response is a **statusCode** and a **body**. This case is simulating the "happy path" response that has the status code **OK (200)** and the body containing a simple message **Successful login** (as specified in the acceptance criteria). - -### How to run virtualized services? - -OK, now that you have virtualized the **User authentication** service (at least its "happy path"), how do you run it? - -Remember that you have already started mountebank, and it reported that it is running in memory as the domain. Mountebank is listening on port 2525 and taking orders. - -Great, now you have to tell mountebank that you have the imposter ready. How do you do that? Send an HTTP POST request to . The requests body must contain the JSON you created above. There are a few techniques available to send that request. If you're versed in [curl][9], using it to send HTTP POST requests would be the simplest, quickest way to stand up the imposter. But many people prefer a more user-friendly way to send the HTTP POST to mountebank. - -The easy way to do that is to use [Postman][10]. If you download and install Postman, you can point it at , select the POST method from the pulldown menu, and copy and paste the imposter JSON into the raw body. - -When you click Send, the imposter will be created, and you should get Status 201 (Created). - -![Postman output][11] - -Your virtualized service is now running! You can verify it by navigating to the **tests** folder and running the **dotnet test** command: - -![dotnet test output][12] - -### Conclusion - -This demo shows how easy it is to remove blockages and control dependencies by simulating services you're dependent on. Mountebank is a fantastic tool that easily and cheaply simulates all kinds of very elaborate, sophisticated services. - -In this installment, I just had time to illustrate how to virtualize a simple "happy path" service. If you go back to the actual user story, you will notice that its acceptance criteria contain several "less happy" paths (cases when someone is repeatedly trying to log in using invalid credentials). It's a bit trickier to properly virtualize and test those use cases, so I've left that exercise for the next installment in this series. - -How will you use service virtualization to solve your testing needs? I would love to hear about it in the comments. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/3/service-virtualization-test-driven-development - -作者:[Alex Bunardzic][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/alex-bunardzic -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/laptop_screen_desk_work_chat_text.png?itok=UXqIDRDD (Person using a laptop) -[2]: https://opensource.com/article/19/8/mutation-testing-evolution-tdd -[3]: https://opensource.com/article/19/9/mutation-testing-example-tdd -[4]: https://opensource.com/article/20/2/automate-unit-tests -[5]: http://www.google.com/search?q=new+msdn.microsoft.com -[6]: https://opensource.com/sites/default/files/uploads/dotnet-test.png (Output of dotnet.test) -[7]: http://www.mbtest.org/ -[8]: https://opensource.com/sites/default/files/uploads/mountebank-startup.png (mountebank startup) -[9]: https://curl.haxx.se/ -[10]: https://www.postman.com/ -[11]: https://opensource.com/sites/default/files/uploads/status-201.png (Postman output) -[12]: https://opensource.com/sites/default/files/uploads/dotnet-test2.png (dotnet test output) diff --git a/sources/tech/20200305 5 productivity apps for Linux.md b/sources/tech/20200305 5 productivity apps for Linux.md deleted file mode 100644 index 3e7423dc59..0000000000 --- a/sources/tech/20200305 5 productivity apps for Linux.md +++ /dev/null @@ -1,153 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (5 productivity apps for Linux) -[#]: via: (https://opensource.com/article/20/3/productivity-apps-linux-elementary) -[#]: author: (Scott Nesbitt https://opensource.com/users/scottnesbitt) - -5 productivity apps for Linux -====== -Get organized and accomplish more with these five productivity apps for -the Elementary Linux desktop. -![Person drinking a hat drink at the computer][1] - -I've had a soft spot for [Elementary OS][2] since I first encountered it in 2013. A lot of that has to do with the distribution being very clean and simple. - -Since 2013, I've recommended Elementary to people who I've helped [transition to Linux][3] from other operating systems. Some have stuck with it. Some who moved on to other Linux distributions told me that Elementary helped smooth the transition and gave them more confidence using Linux. - -Like the distribution itself, many of the applications created specifically for Elementary OS are simple, clean, and useful. They can help boost your day-to-day productivity, too. - -### About "pay-what-you-want" apps - -Some apps in the Elementary AppCenter ask you to pay what you can. You're not obliged to pay to the full amount a developer asks for (or pay anything, for that matter). However, any money that changes hands goes to support the development of those apps. - -Three of the applications in this article—Quilter, Notes-up, and Envelope—are pay-what-you-want. If you find an app useful, I encourage you to send some money the developer's way. - -### Envelope - -Managing your budget should be simple. More than a few people, though, struggle with the task. That's where [Envelope][4] can help. While Envelope doesn't pack the features of something like [GnuCash][5], it's good enough for most of us. - -The app is built around the [envelope system][6] of personal and household budgeting. The first time you launch Envelope, you need to set up an account. You can do that manually, or you can import a [QIF][7] file containing financial information from another program. - -![Adding an account in Envelope][8] - -Either way, Envelope offers a set of categories (your envelopes). Add or delete categories as you see fit—for example, I don't own a car, so I deleted the Fuel category. - -From there, add transactions. Those can be your expenses or your income. Or both. - -![Entering a transaction in Envelope][9] - -Envelope gives you an overview of your spending and income. To get a more focused view of your budget, you can report on the current or previous month or a specific range of dates. - -### Notes-Up - -[Notes-Up][10]'s look and feel are reminiscent of note-taking tools like [Standard Notes][11], Simplenote, and the macOS Notes app. If you use any of them, switching to Notes-Up will be smooth and painless. Regardless, Notes-Up is easy to learn and use. - -![Notes-Up][12] - -Create a note and start typing. Notes-Up supports Markdown, making it easy to add formatting to your notes. - -![Taking notes in Notes-Up][13] - -If your Markdown is rusty, you can click the buttons on the toolbar to add formatting like lists; bold, italics, and strikethrough; code blocks; images; and more. You can also export your notes as PDF or Markdown files. - -Use Notes-Up for a while, and you'll wind up with a long list of notes. Organize them using _notebooks_. You can, for example, create personal, school, and work notebooks. On top of that, Notes-Up enables you to create sub-notebooks. Under my notebook for Opensource.com, for example, I have sub-notebooks for articles and the news roundups I curate. - -Notebooks not your thing? Then use tags to add keywords to your notes to make them easier to sort. - -### Yishu - -I do as much of my work as I can in [plain text][14]. That includes my task list. For that, I turn to a handy command-line application called [Todo.txt][15]. - -If you aren't comfortable working at the command line, then [Yishu][16] is for you. It has Todo.txt's key features but graphically on the desktop. - -![Yishu][17] - -When you first fire up Yishu, it asks you to open an existing Todo.txt file. If you have one, open it. Otherwise, create a task. That also creates a new file for your tasks. - -![Adding a task in Yishu][18] - -Your options are limited: a description of the task and a priority. You can also add a due date in the format _YYYY-MM-DD_—for example, _2020-02-17_. - -When you click **OK**, Yishu saves the file Todo.txt to your **/home** folder. That might not be where you want to store your tasks. You can tell Yishu to use another folder in its preferences. - -### Reminduck - -Chances are, your notifications and reminders are jarring. A piercing buzz, an annoying beep, a text box that appears when you least expect it. Why not add a bit of [calm][19] and a bit of whimsy to your reminders—with a duck? - -That's the idea behind [Reminduck][20]. It's a simple and fun way to tell yourself it's time to do, well, anything. - -Fire up the app and create a reminder. You can add a description, date, and time for the reminder to appear, and you can set it to repeat. Reminders can repeat after a number of minutes that you set or at specific times every day, week, or month. - -![Reminduck][21] - -You can set up more than one reminder. Reminduck organizes your reminders, and you can edit or delete them. - -![Reminduck reminders][22] - -When the reminder is triggered, a little message pops out of the notification area on the desktop along with a soft alert and an icon of a smiling duck. - -![Reminduck notification][23] - -### Quilter - -It's easy enough to write with [Markdown][24] in a plain old text editor. Some folks, though, prefer to work with a dedicated Markdown editor. On the Elementary OS desktop, one option is [Quilter][25]. - -![Quilter][26] - -Quilter is pretty basic. There's no toolbar to insert formatting; you have to add Markdown by hand. On the other hand, Quilter displays a running word count and an estimate of how long it will take to read what you're writing. - -![Quilter][27] - -The editor's options are few. There's a preview mode, and you can export your documents to PDF or HTML. The result of an export has the same look as a preview. That's not a bad thing. - -Quilter's other options include the ability to change the line spacing and margins, set the editor's font, as well as enable syntax highlighting and spell checking. It also has a mode that you can use to focus on a single line or a single paragraph while you're writing. - -### Final thoughts - -Sometimes, the best tools to boost your productivity are simple ones. Applications like the five above focus on doing one thing and doing it well. - -Envelope, Notes-Up, Yishu, Reminduck, and Quilter won't appeal to everyone. But if you use Elementary OS, give them a try. They can help you keep on track and do what you need to do. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/3/productivity-apps-linux-elementary - -作者:[Scott Nesbitt][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/scottnesbitt -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/coffee_tea_laptop_computer_work_desk.png?itok=D5yMx_Dr (Person drinking a hat drink at the computer) -[2]: https://elementary.io -[3]: https://opensource.com/article/18/12/help-non-techies -[4]: https://nlaplante.github.io/envelope/ -[5]: https://opensource.com/article/20/2/gnucash -[6]: https://en.wikipedia.org/wiki/Envelope_system -[7]: https://en.wikipedia.org/wiki/Quicken_Interchange_Format -[8]: https://opensource.com/sites/default/files/uploads/envelope-add-account.png (Adding an account in Envelope) -[9]: https://opensource.com/sites/default/files/uploads/envelope-entering-transaction.png (Entering a transaction in Envelope) -[10]: https://appcenter.elementary.io/com.github.philip-scott.notes-up/ -[11]: https://opensource.com/article/18/12/taking-notes-standard-notes -[12]: https://opensource.com/sites/default/files/uploads/notes-up-main-window.png (Notes-Up) -[13]: https://opensource.com/sites/default/files/uploads/notes-up-taking-note.png (Taking notes in Notes-Up) -[14]: https://plaintextproject.online -[15]: https://opensource.com/article/20/1/open-source-to-do-list -[16]: https://appcenter.elementary.io/com.github.lainsce.yishu/ -[17]: https://opensource.com/sites/default/files/uploads/yishu-task-list.png (Yishu) -[18]: https://opensource.com/sites/default/files/uploads/yishu-add-task.png (Adding a task in Yishu) -[19]: https://weeklymusings.net/weekly-musings-025 -[20]: https://appcenter.elementary.io/com.github.matfantinel.reminduck/ -[21]: https://opensource.com/sites/default/files/uploads/reminduck.png (Reminduck) -[22]: https://opensource.com/sites/default/files/uploads/remiunduck-reminders-list.png (Reminduck reminders) -[23]: https://opensource.com/sites/default/files/uploads/reminduck-notification.png (Reminduck notification) -[24]: https://opensource.com/article/19/8/markdown-beginners-cheat-sheet -[25]: https://appcenter.elementary.io/com.github.lainsce.quilter/ -[26]: https://opensource.com/sites/default/files/uploads/quilter.png (Quilter) -[27]: https://opensource.com/sites/default/files/uploads/quilter-editing.png (Quilter) diff --git a/sources/tech/20200311 Using the Quarkus Framework on Fedora Silverblue - Just a Quick Look.md b/sources/tech/20200311 Using the Quarkus Framework on Fedora Silverblue - Just a Quick Look.md deleted file mode 100644 index 1d72cd1d03..0000000000 --- a/sources/tech/20200311 Using the Quarkus Framework on Fedora Silverblue - Just a Quick Look.md +++ /dev/null @@ -1,209 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Using the Quarkus Framework on Fedora Silverblue – Just a Quick Look) -[#]: via: (https://fedoramagazine.org/using-the-quarkus-framework-on-fedora-silverblue-just-a-quick-look/) -[#]: author: (Stephen Snow https://fedoramagazine.org/author/jakfrost/) - -Using the Quarkus Framework on Fedora Silverblue – Just a Quick Look -====== - -![Using the Quarkus Framework on Fedora Silverblue – Just a Quick Look][1] - -[Quarkus][2] is a framework for Java development that is described on their web site as: - -> A Kubernetes Native Java stack tailored for OpenJDK HotSpot and GraalVM, crafted from the best of breed Java libraries and standards -> -> – Feb. 5, 2020 - -Silverblue — a Fedora Workstation variant with a container based workflow central to its functionality — should be an ideal host system for the Quarkus framework. - -There are currently two ways to use Quarkus with Silverblue. It can be run in a pet container such as Toolbox/Coretoolbox. Or it can be run directly in a terminal emulator. This article will focus on the latter method. - -### Why Quarkus - -[According to Quarkus.io][3]: “Quarkus has been designed around a containers first philosophy. What this means in real terms is that Quarkus is optimized for low memory usage and fast startup times.” To achieve this, they employ first class support for Graal/Substrate VM, build time Metadata processing, reduction in reflection usage, and native image preboot. For details about why this matters, read [Container First][3] at Quarkus. - -### Prerequisites - -A few prerequisites will need to configured before you can start using Quarkus. First, you need an IDE of your choice. Any of the popular ones will do. VIM or Emacs will work as well. The Quarkus site provides full details on how to set up the three major Java IDE’s (Eclipse, Intellij Idea, and Apache Netbeans). You will need a version of JDK installed. JDK 8, JDK 11 or any distribution of OpenJDK is fine. GrallVM 19.2.1 or 19.3.1 is needed for compiling down to native. You will also need Apache Maven 3.53+ or Gradle. This article will use Maven because that is what the author is more familiar with. Use the following command to layer Java 11 OpenJDK and Maven onto Silverblue: - -``` -$ rpm-ostree install java-11-openjdk* maven -``` - -Alternatively, you can download your favorite version of Java and install it directly in your home directory. - -After rebooting, configure your _JAVA_HOME_ and _PATH_ environment variables to reference the new applications. Next, go to the [GraalVM download page][4], and get GraalVM version 19.2.1 or version 19.3.1 for Java 11 OpenJDK. Install Graal as per the instructions provided. Basically, copy and decompress the archive into a directory under your home directory, then modify the _PATH_ environment variable to include Graal. You use it as you would any JDK. So you can set it up as a platform in the IDE of your choice. Now is the time to setup the native image if you are going to use one. For more details on setting up your system to use Quarkus and the Quarkus native image, check out their [Getting Started tutorial][5]. With these parts installed and the environment setup, you can now try out Quarkus. - -### Bootstrapping - -Quarkus recommends you create a project using the bootstrapping method. Below are some example commands entered into a terminal emulator in the Gnome shell on Silverblue. - -``` -$ mvn io.quarkus:quarkus-maven-plugin:1.2.1.Final:create \ - -DprojectGroupId=org.jakfrost \ - -DprojectArtifactId=silverblue-logo \ - -DclassName="org.jakfrost.quickstart.GreetingResource" \ - -Dpath="/hello" -$ cd silverblue-logo -``` - -The bootstrapping process shown above will create a project under the current directory with the name _silverblue-logo_. After this completes, start the application in development mode: - -``` -$ ./mvnw compile quarkus:dev -``` - -With the application running, check whether it responds as expected by issuing the following command: - -``` -$ curl -w '\n' http://localhost:8080/hello -``` - -The above command should print _hello_ on the next line. Alternatively, test the application by browsing to __ with your web browser. You should see the same lonely _hello_ on an otherwise empty page. Leave the application running for the next section. - -### Injection - -Open the project in your favorite IDE. If you are using Netbeans, simply open the project directory where the _pom.xml_ file resides. Now would be a good time to have a look at the _pom.xml_ file. - -Quarkus uses ArC for its dependency injection. ArC is a dependency of quarkus-resteasy, so it is already part of the core Quarkus installation. Add a companion bean to the project by creating a java class in your IDE called _GreetingService.java_. Then put the following code into it: - -``` -import javax.enterprise.context.ApplicationScoped; - -@ApplicationScoped -public class GreetingService { - - public String greeting(String name) { - return "hello " + name; - } - -} -``` - -The above code is a verbatim copy of what is used in the injection example in the Quarkus Getting Started tutorial. Modify _GreetingResource.java_ by adding the following lines of code: - -``` -import javax.inject.Inject; -import org.jboss.resteasy.annotations.jaxrs.PathParam; - -@Inject - GreetingService service;//inject the service - - @GET //add a getter to use the injected service - @Produces(MediaType.TEXT_PLAIN) - @Path("/greeting/{name}") - public String greeting(@PathParam String name) { - return service.greeting(name); - } -``` - -If you haven’t stopped the application, it will be easy to see the effect of your changes. Just enter the following _curl_ command: - -``` -$ curl -w '\n' http://localhost:8080/hello/greeting/Silverblue -``` - -The above command should print _hello Silverblue_ on the following line. The URL should work similarly in a web browser. There are two important things to note: - - 1. The application was running and Quarkus detected the file changes on the fly. - 2. The injection of code into the app was very easy to perform. - - - -### The native image - -Next, package your application as a native image that will work in a _podman_ container. Exit the application by pressing **CTRL-C**. Then use the following command to package it: - -``` -$ ./mvnw package -Pnative -Dquarkus.native.container-runtime=podman -``` - -Now, build the container: - -``` -$ podman build -f src/main/docker/Dockerfile.native -t silverblue-logo/silverblue-logo -``` - -Now run it with the following: - -``` -$ podman run -i --rm -p 8080:8080 localhost/silverblue-logo/silverblue-logo -``` - -To get the container build to successfully complete, it was necessary to copy the _/target_ directory and contents into the _src/main/docker/_ directory. Investigation as to the reason why is still required, and though the solution used was quick and easy, it is not an acceptable way to solve the problem. - -Now that you have the container running with the application inside, you can use the same methods as before to verify that it is working. - -Point your browser to the URL and you should get a _index.html_ that is automatically generated by Quarkus every time you create or modify an application. It resides in the _src/main/resources/META-INF/resources/_ directory. Drop other HTML files in this _resources_ directory to have Quarkus serve them on request. - -For example, create a file named _logo.html_ in the _resources_ directory containing the below markup: - -``` - - - - - Silverblue - - - - -
- Fedora Silverblue -
- - -``` - -Next, save the below image alongside the _logo.html_ file with the name _fedora-silverblue-logo.png_: - -![][6] - -Now view the results at . - -#### Testing your application - -Quarkus supports junit 5 tests. Look at your project’s _pom.xml_ file. In it you should see two test dependencies. The generated project will contain a simple test, named _GreetingResourceTest.java_. Testing for the native file is only supported in _prod_ mode. However, you can test the _jar_ file in _dev_ mode. These tests are RestAssured, but you can use whatever test library you wish with Quarkus. Use Maven to run the tests: - -``` -$ ./mvnw test -``` - -More details can be found in the Quarkus [Getting Started][7] tutorial. - -#### Further reading and tutorials - -Quarkus has an extensive collection of [tutorials and guides][8]. They are well worth the time to delve into the breadth of this microservices framework. - -Quarkus also maintains a [publications][9] page that lists some very interesting articles on actual use cases of Quarkus. This article has only just scratched the surface of the topic. If what was presented here has piqued your interest, then follow the above links for more information. - --------------------------------------------------------------------------------- - -via: https://fedoramagazine.org/using-the-quarkus-framework-on-fedora-silverblue-just-a-quick-look/ - -作者:[Stephen Snow][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://fedoramagazine.org/author/jakfrost/ -[b]: https://github.com/lujun9972 -[1]: https://fedoramagazine.org/wp-content/uploads/2020/02/quarkus-816x345.jpg -[2]: https://quarkus.io/ -[3]: https://quarkus.io/vision/container-first -[4]: https://www.graalvm.org/downloads/ -[5]: https://quarkus.io/get-started/ -[6]: https://fedoramagazine.org/wp-content/uploads/2020/02/fedora-silverblue-logo.png -[7]: https://quarkus.io/guides/getting-started -[8]: https://quarkus.io/guides/ -[9]: https://quarkus.io/publications/ diff --git a/sources/tech/20200313 How to set up the Raspberry Pi Zero for travel.md b/sources/tech/20200313 How to set up the Raspberry Pi Zero for travel.md deleted file mode 100644 index 5b6ca689d7..0000000000 --- a/sources/tech/20200313 How to set up the Raspberry Pi Zero for travel.md +++ /dev/null @@ -1,472 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (How to set up the Raspberry Pi Zero for travel) -[#]: via: (https://opensource.com/article/20/3/raspberry-pi-zero) -[#]: author: (Peter Garner https://opensource.com/users/petergarner) - -How to set up the Raspberry Pi Zero for travel -====== -You don't have to invest large amounts of money to build a relatively -powerful system that can be taken on the road and used productively. -![Airplane flying with a globe background][1] - -For some time now, I've been a huge fan of the [Raspberry Pi][2] computer in all of its various forms. I have a number of them, and each has a server role to play. Most of the time, they work extremely well, and I'm safe in the knowledge that the small amount of power they consume is keeping the bills down. - -If you've read my blog before, you may have read my account of how I [migrated my desktop computing][3] to a Pi 3. This worked well for quite a while, but I finally had to accept that editing large graphics and multimedia files was a problem, so I replaced it with an [Intel NUC][4]. My hankering for Pi experimentation was still there, though, and I decided to do a "what-if" exercise and see if it could survive on the road. And that's when I dragged my Pi Zero out of retirement from my spares box. - -### Why travel with a Raspberry Pi - -_"Why would I want to do this? Surely the trend is to travel with as powerful a device as possible?"_ - -Well, it's like this. Last year, my employer issued a decree that in order to conform to its security policy, we would no longer be able to check laptops in as luggage, and not long after, the US government decided to summarily ban carrying laptops in hand baggage to and from certain countries, y'know, for security. So how do we get around that one? The sensible option would be to not travel with a laptop and use a hot-desk style spare at the destination. After all, everything is in the cloud now, right? Or, you could carry your important, commercially sensitive data on a CD/DVD or memory stick, but only if it's encrypted to a standard and your employer's data handling policy allows that. - -The problem is multi-faceted though: What if your role is such that you need to be able to fix software/systems on-the-go and you don't always have access to a "spare" laptop? On the occasions when I travel (by train), I have to lug my laptop with me, and it's a pain over the course of a day. Then there's the loss/theft/damage problem. Laptops can be easy targets, they can get left on trains, or you could be mugged. Or there's the "[evil maid][5]" scenario, in which someone interferes with your device without your knowledge. The list goes on. - -So, here's what you can get with a Pi Zero portable computer: - - * It's small enough to fit in hand baggage or your pocket. - * It's cheap enough at $8 to buy another if yours gets lost/stolen/damaged. - * The entire OS and data are held on a "disk" that is as small as a fingernail, is cheap, and is easily bought in a wide variety of retail outlets. If need be, you can create a new one from a borrowed card from a phone. - * A full development environment with the ability to work offline or online. It can also act as an SSH server so that more than one person can use it at once. - * Safe storage: If you are paranoid or traveling on certain airlines, you can remove the "disk" and store it in your wallet or on your person. If your computer is stolen in transit, go and buy another one off the shelf: you're already set up with the OS. - * Network-tolerant: Around the world, there are country-specific WiFi frequencies, and a simple text-file change enables you to be compliant within minutes. - * Keyboard independent: You can use a compliant Bluetooth keyboard, but when you need to do something more demanding, you can just plug any USB keyboard into the spare USB connector using an On-The-Go cable. - * Power supply tolerant: My 3300mAh power bank can run the Pi Zero for about eight hours, but if all else fails, you can use a TV's USB connector to power it. Generally speaking, if a TV has HDMI, it will also have a USB socket, and the Zero only draws about 120mA. Or use someone's phone charger! - * Finally, if you're unfortunate enough to lose/damage your "disk," you can easily create another by downloading your 2GB image from a secure location in the cloud and burning it to a new card. Try doing _that_ with a normal laptop. - - - -That's motivation enough for me! - -Here is my finished product, with a beer coaster for scale. - -![Pi Zero W setup][6] - -### How I set up the Pi Zero for travel - -The cheap-as-chips Pi Zero has always been a bit of an odd beast, in my opinion. It features a single-core CPU and has a frugal 512MB of memory, some of which it has to share with the onboard video. The Raspbian OS currently based on Debian Stretch is touted as being suitable for the Zero with the LXDE-based "Pixel" GUI desktop, and indeed it can be loaded and started—but in reality, the poor thing really struggles to manage a GUI _and_ run useful software. - -Nevertheless, I was determined to give it a good try and set it up with the apps that have the smallest memory footprint. I'd already been around this loop with the Pi 3, so it was more of the same—only even more so! Bearing in mind this was to be a road warrior's computer, here's what I wanted to have on it: - -Web browser | Lightweight but with privacy in mind ----|--- -Email | IMAP-capable and seamlessly supporting GPG -XMPP/Jabber client | No-nonsense messaging -VPN client | I'm on the road, remember -Tor client | Always useful... -Music | I carry a few MP3s, but internet radio is cool, too -Multiple desktops | Useful with a small screen -Editor/IDE | Hey, it's a working computer! -FTP/SFTP client | Hey, it's a working computer! - -All in all, it's a very useful bundle for my purposes, and if I achieve a balanced environment, it could actually work. - -### Hardware - -The hardware was a bit of a challenge. The battery was not a problem, as I have a variety of rechargeable power packs with varying capacity, so it is really just a question of picking a suitable one for the day. The only prerequisite was that the battery should be able to take a charge while being used, and all my Jackery brand batteries do this. - -For my "disk," I opted for my in-house standard 32GB SanDisk Extreme microSDHC. They're very reliable, and the size is big enough to hold a lot of software and data while still remaining affordable. - -The video output would, I anticipated, be HDMI-out using the Zero's mini-HDMI connector. This suited my purposes well, as the majority of hotel TVs use this interface. Audio would also go via HDMI. - -That left the human interface devices (HID), and this, predictably, caused the most consternation. I hate Bluetooth with a passion, and with the Zero's limited connectors, I'd have to bite the bullet and use a Bluetooth keyboard and mouse, preferably a combined one—and small. There's no point in having a tiny computer if you have lug a great honking keyboard around as well, so my unhappy quest began. - -### Bluetooth woes - -The Zero has a limited number of USB connectors on board—just one, if you allow for the power connector, which obviously means you have limited connection options. You could always use a USB extender hub, but then that's more to carry—including another power supply. That basically leaves you trying to connect a keyboard and mouse via Bluetooth. I don't believe the hype about how it can "_easily connect a wide variety of devices together,_" and I wrestle with a variety of allegedly standard devices trying to get the bloody things to play nicely together. Part of the problem with the Pi (I think) is that there's some unintended interaction between WiFi and Bluetooth that causes weird stuff to happen. My problem was that I was able to connect to the Pi using a keyboard _or_ a mouse, but not both reliably at the same time. And yes, I have a variety of allegedly standards-following Bluetooth devices, none of which decided to work together properly. - -At this point, I was wondering if there was a Bluetooth Samaritan's Helpline, but there wasn't, so what the heck was I going to do?! Temporarily, I resorted to using an Apple USB keyboard with two USB sockets; this was useful for setup but not for being on the road. In the end, I spent hours browsing eBay and Amazon, and then I found it: a "_3- in-1 Mini Wireless Bluetooth Keyboard Mouse Touchpad For Windows iOS Android UK - Backlit, Ultra-thin, Built-in Rechargeable Battery, QWERTY_." Perfect on paper, but would it work? I sent off the money, and four days later, a slim package arrived from China. And it bloody well worked!! First time, every time, it got on with the Pi like pie and chips. I promptly ordered another one—accidents happen, and I wouldn't want to be left in the lurch. - -So, with my hardware lineup complete, I could settle down to setting up the Pi proper. - -### The GUI and the Pi - -Going back to my software requirements, I thought long and hard about the smallest desktop environment and went with the supplied LXDE desktop, which I'd used several times on other projects. Although the Pi struggled a bit with screen handling, it generally performed well, and I started setting up my software.  - -Web browser 1 - -Midori: a good compromise between size and modernity. Supports private browsing and is bundled with the Pi - -Web browser 2 - -Links2 in graphic mode: lightweight, fast, secure, works with proxies - -Email - -Sylpheed: small, light, and works well with GPG - -XMPP/Jabber client - -Profanity. It's great! - -VPN client - -OpenVPN - -Tor client - -Ha! Links2 again - -Music - -SMPlayer: the GUI for MPlayer - -Editor/IDE - -Geany: small and light but powerful - -Image viewer/editor - -Pinta - -FTP/SFTP client - -Filezilla - -**Other stuff:** - -Midnight Commander - -Not just a file manager (more later) - -Tor proxy server - -Always on, so I can use Tor as needed - -Nmap - -I sometimes need to test stuff - -vnStat - -Monitor data usage on the wlan0 interface - -SSH/SFTP server - -Standard issue on this distro - -UFW - -Firewall; can't be too careful! - -Gopher client - -Gopherspace! It's still out there, and I use the _original_ Gopher client! - -All of the above are tried, tested, and very stable packages. The web browser decision was a calculated one: the Zero doesn't _really_ have what it takes to negotiate a modern ~~bloated, ad-ridden~~ website, and honestly, I have a phone that can handle that sort of thing. Likewise, the decision to run a Tor proxy: it's very handy to be able to access Marianas Web, and using Links2 as a browser means that the risk is minimal. - -Sylpheed is a mature package that I believe has largely been replaced by Claws but is actually less demanding of resources. GPG integrated seamlessly with it, and I was able to exchange signed/encrypted messages with ease. It renders both plain-text and HTML messages well, and the interface is uncluttered. - -I needed a _simple_ XMPP/Jabber client. The problem I've found with many apps of this type is that they try to incorporate multiple messaging standards when I only really need XMPP. Profanity is ideal as it does one job and does it very well. - -### System setup - -I spent a considerable amount of time setting up the OS for the best performance; a task made easier because I have set up numerous Raspberry Pis before. In such a small (as in memory) system, the decision to use a swap file was not taken lightly, and unfortunately, using a GUI desktop meant that the swap is in frequent use. The alternative is to not have one and hope that the system doesn't freeze up too much. I went with the suggested default of 100MB. - -I then looked at logging. As this was supposed to be a small, portable system, I didn't see much point in having extensive logging, especially as it would have a negative effect on the SDHC card in the long term. One solution was a combination of disabling logging in apps wherever possible and sacrificing a little memory to create a tmpfs in-memory filesystem. This would have the added advantage that it would be recreated on each boot. So, I worked out that 8MB could be used for this and duly updated **/etc/fstab**. This works extremely well. - - -``` -`tmpfs /var/log tmpfs defaults,noatime,nosuid,mode=0755,size=8m 0 0` -``` - -I also had to update **/etc/rc.local** to provide some essential directories on startup; this kept the rsyslog and Tor daemons happy. - - -``` -mkdir -p /var/log/rsyslog -mkdir -p /var/log/tor/ -mkdir -p /var/log/vnstat/ -chown vnstat.root /var/log/vnstat/ -chown debian-tor /var/log/tor/ -``` - -With all that in place, the little computer was almost ready for Prime Time. But there was a problem. I've already mentioned the frugal amount of memory on the Zero, and even with the GUI and apps pared down to the bone, I was regularly using swap space. To make matters worse, much worse, my carefully set up desktop menus were having problems. - -The Pi desktop comes with an _incredible_ amount of software installed, mainly to satisfy its original purpose as an educational machine. I decided early on to edit the menus to remove a lot of the "junk" and replace it with my list of apps, so I fired up the Main Menu Editor app. Normally this is quite responsive, but on the resource-challenged Zero, it had worrying lags and pauses as I made changes. Ultimately, it meant that my ad-hoc menus were corrupted, and worse still, the default Pi menus had been reinstated. Searching for help with this problem revealed that the menu system is convoluted, and if an update is not saved properly, the defaults will be substituted. - -I looked at the structure of the menus as best I could and decided that trying to pick the frigging things apart was more trouble than it was worth. So, I ditched LXDE/Pixel and installed XFCE (and its even lighter-weight GUI) in its place. This time, the menu editor seemed more stable, but as I made the changes, I realized that yes, it was happening again. At that point, I had a tantrum and threw my toys out of the pram. I'd reached a crossroads in my road-warrior setup: it worked very well apart from the menus, and I felt I couldn't go back after all that work, so, with a heavy heart, I had a drastic rethink. It was supposed to be a hacker's machine, right? It was Linux and, to many like-minded people, that meant a text-based interface, right? - -So I did what I had to do: I ditched the accursed GUI! Yes, go back to the '90s, maybe even earlier, and Run it Like a Boss.™ The main problem I had in my mind was that I'd no longer have nice, safe, icon-driven apps and multiple desktops to work with. My WiFi/network switcher would be no more, and worse still, I'd have to try and manage Bluetooth from the command line. That was going to be a major challenge, but I decided to proceed anyway, and I had a cloned copy of my microSDHC just in case I lost my nerve. - -### Set it up again - -Incidentally, if I were using a full-spec Raspberry Pi 3, I wouldn't have been in this situation. But it was my choice, so… This exercise started out well. I was already rebooting into the terminal login prompt, and the Bluetooth keyboard was working, so I was able to log in (previously, I'd run **startx** to get to the desktop). Since I no longer had the desktop bloat to worry about, my memory usage was a mere 78MB and no swap usage; I felt better already. But what about the apps that make life easy? I did more hunting around, and here's what I came up with. - -Web browser - -Links2 _not_ in graphic mode: lightweight, fast, secure, works with proxies - -Email - -(Neo)Mutt: powerful, extensible and works well with GPG - -XMPP/Jabber client - -Profanity. It's great! - -VPN client - -OpenVPN - -Tor client - -Ha! Links2 again - -Music - -Midnight Commander + mpg123 - -Editor/IDE - -Nano: I'm using it to write this - -FTP/SFTP client - -Midnight Commander - -File manager - -Midnight Commander - -**Other stuff** - -Tor proxy server - -Always on, so I can use Tor as needed - -Nmap - -I sometimes need to test stuff - -vnStat - -Monitor data usage on the wlan0 interface - -SSH/SFTP server - -Standard issue on this distro - -Gopher client - -Gopherspace! It's still out there, and I use the _original_ Gopher client! - -**Graphics workarounds** - -fbcat - -Takes a screenshot using the framebuffer device - -fbi - -Linux framebuffer imageviewer: displays images in a terminal - -fbgs - -Displays PostScript/PDF files using the Linux framebuffer device on a terminal - -pnmtopng - -Converts a PPM into a PNG file - -You'll notice that there's not too much change there, with a few notable exceptions to display graphical content. - -### Do it again, and do it properly - -Things looked good, but I still had some issues to solve. - -#### Desktops - -"But what about the multiple desktops?!" I hear you asking, "How will you view images or connect to WiFi networks?" I needed to find a solution, and fast. For the multiple desktop thing, I decided to install tmux, the Linux Terminal Multiplexer. There are so many good reasons to run tmux on a Linux system, but my key reasons are that it makes multi-screen working possible, and it uses very little memory. It also enables me to connect to the Pi via SSH and take over the session, as you can see below. - -![tmux running on Raspberry Pi][7] - -#### Music - -I must say that it's very important to me to be able to listen to music while I'm working or relaxing, so the loss of (S)MPlayer was a major blow. I was able to listen to single MP3s or complete playlists. I was able to stream internet radio. Sigh. Midnight Commander came to the rescue with its ability to handle various file types. The secret is in the Extension File menu, which looks like this for me: - - -``` -shell/i/.mp3 -    Open=/usr/lib/mc/ext.d/sound.sh open mp3 -regex/i/\\.(m3u|pls)$ -        Open=/usr/lib/mc/ext.d/sound.sh open playlist -``` - -And my sound.sh looks like this: - - -``` -#!/bin/bash -do_open_action() { -    filetype=$1 -    case "${filetype}" in -    playlist) -        mpg123 -C -@ "${MC_EXT_FILENAME}" -        ;; -    m3u) -        mpg123 -C -@ "${MC_EXT_FILENAME}" -        ;; -    mp3) -        mpg123 -C "${MC_EXT_FILENAME}" -        ;; -    *) -        ;; -    esac -        } -case "${action}" in -open) -    ("${MC_XDG_OPEN}" "${MC_EXT_FILENAME}" >/dev/null 2>&1) || \ -        do_open_action "${filetype}" -    ;; -*) -    ;; -esac -``` - -Tapping Enter on an MP3 will play the file, or tapping on an M3U playlist will play whatever's in the playlist. I used the **-C** option so that I could have access to mpg123's controls. Sorted! - -#### SFTP/FTP clients - -Midnight Commander again! You can set up a client connection entry with the built-in menu and use **CTL+\** to select it from a drop-down. The FTP site is rendered in one of the panels as a directory structure, and you can just treat it as you would a local filesystem. SFTP is a bit harder, as you have to set it up as an SSH connection and then copy as required; it's OK if you have password authentication, but for public key authentication, I found it less involved to use SFTP from the command line. For reference, this is the syntax: - - -``` -sftp://[user@]machine:[port]/[remote-dir] - -The user, port and remote-dir elements are optional. -``` - -![MC FTP client example][8] - -#### WiFi selector - -In the GUI world, I had had a nice, icon-based WiFi network manager app that I could use to switch between networks. The text-mode alternative is the bizarrely named wicd-curses*.* It's an app that communicates with wicd (wireless control daemon) using cursor keys, and it works very well. I had to disable the dhcpcd service using systemctl to get it to work, but at least it lets me select the appropriate network, including my home network or my phone's wireless hotspot when I'm out on the road. Here's [how to do it][9]. - -![wicd-curses WiFi app][10] - -#### Email and web browsing - -For email and web browsing, I use Mutt (Neomutt) and Links2, respectively, and they just work. - -#### Gopher - -Trust me; you're not old enough to remember Gopher, the text mode forerunner of the WWW. Strictly speaking, it was before my time as well, but I run a thriving Gopher server, so I need a client. Here's what a Gopher server looks like running on a Raspberry Pi. - - -``` -                gopher://gopher.petergarner.net:70 - -__/\\\\\\\\\\\\\\\\\\_______/\\\\\\\\\\\\\\\\\\\\\\\\\\__________________/\\\\\\____ -_/\\\\\///////\\\\\\____\/\\\\\/////////\\\\\\______________/\\\\\\\\\\____ -_\/\\\\\\_____\/\\\\\\___\/\\\\\\_______\/\\\\\\__/\\\\\\_______/\\\\\/\\\\\\____ -_\/\\\\\\\\\\\\\\\\\\\\\/____\/\\\\\\\\\\\\\\\\\\\\\\\\\/___\///______/\\\\\/\/\\\\\\____ -_\/\\\\\//////\\\\\\____\/\\\\\/////////_____/\\\\\\_____/\\\\\/__\/\\\\\\____ -_\/\\\\\\____\//\\\\\\___\/\\\\\\_____________\/\\\\\\____/\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\_ -_\/\\\\\\_____\//\\\\\\__\/\\\\\\_____________\/\\\\\\\\__///////////\\\\\//__ -_\/\\\\\\______\//\\\\\\_\/\\\\\\_____________\/\\\\\\_______________\/\\\\\\___ -_\///________\///__\///______________\///_________________\///___ - -               Welcome to... "The Rpi4 Gopher" -               ... your source for local information, and beyond! - - -->  [14] About this server (and legal)/ - -           -- Content - -      [18] Tech-related/ -      [19] Politics and Propaganda (from all sides)/ -      [20] Cyber and Internet related/ -      [21] Stuff (filed under "miscellany")/ -..... -``` - -### Performance - -Overall, I'm pleased to say that my switch to text mode has been very beneficial with userland tasks handled responsively. As you can see from a typical **top** display, there's plenty of available and cached memory remaining from the original 512MB. Right now, I'm listening to a playlist, writing this article in an SSH-connected tmux session, running top**,** and Mutt is handling emails. - -On a regular basis, that's all I'll probably need to do, but it's great to have the option to develop and test software on the go, if I need to. Here's a simple Python script to get the Pi's CPU serial number (type): - - -``` ->>> #!/usr/bin/env python -... ->>> import subprocess ->>> ->>> def GetCPUserial(): -...     cpuinfo = subprocess.check_output(["/bin/cat", "/proc/cpuinfo"]) -...     cpuinfo = cpuinfo.replace("\t","") -...     cpuinfo = cpuinfo.split("\n") -...     [ legend, cpuserial ] = cpuinfo[11].split(' ') -...     return cpuserial -... ->>> print GetCPUserial() -9000c1 ->>> - -[/code] [code] - -top - 15:55:47 up  5:49,  6 users,  load average: 0.21, 0.25, 0.34 -Tasks: 112 total,   1 running, 110 sleeping,   1 stopped,   0 zombie -%Cpu(s): 3.9 us, 5.8 sy, 0.0 ni, 90.3 id, 0.0 wa, 0.0 hi, 0.0 si,   - -KiB Mem :   493252 total, 37984 free,  73248 used, 382020 buff/cache -KiB Swap:   102396 total, 102392 free,     4 used. 367336 avail Mem -``` - -I take regular backups, of course, using the indispensable [rpi-clone][11]. The beauty of this app is that I can copy the entire microSDHC card to another while the Pi is running. It also has the advantage that if I use a smaller capacity card, it will automatically and safely take this into account. I use a 32GB card, but I can dump it to an 8GB card because I'm only using about 4GB. The converse is true for a larger destination card. If you add only one utility to your Pi, this should be it—it's saved me more grief than _anything_ I've ever used! You can also use it to create distribution copies of your system. - -#### Battery life - -I can only describe the battery life as "impressive." Once the Zero is booted up, it takes an average 0.15A / 0.65W with the following running: - - * System - * Bluetooth - * WiFi - * Audio (HDMI) subsystem - * Video (HDMI) subsystem - - - -I've measured 20 hours of mixed usage from my 6000mAh Jackery Jetpack power bank, and if I disable WiFi and just use it in "local" mode, possibly more. It's certainly practical to use it with my smaller, 3300mAh Anker battery, which unfortunately isn't rechargeable while in use. I also have a 20,000mAh battery for long trips: I have yet to try that out. - -### Taking it on the road - -In terms of computing as a challenge, setting up the Zero has been a really valuable exercise. It's taught me to become acquainted with the operating system and app software at a low level in order to squeeze the maximum amount of memory from the system. It's also taught me that I don't have to invest large amounts of money to build a relatively powerful system that can be taken on the road and used productively. - -Now that I've almost finished setting it up, it's time to actually _take_ it on the road and see how it runs in the field. Hey, maybe I'll actually take into a field and see if I can do some work and listen to music. - -* * * - -_This was originally published on [Peter Garner's blog][12] under a CC BY-NC-ND 4.0 license and is reused here with the author's permission._ - -Having recently co-authored a book about building things with the Raspberry Pi ( Raspberry Pi Hacks... - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/3/raspberry-pi-zero - -作者:[Peter Garner][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/petergarner -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/plane_travel_world_international.png?itok=jG3sYPty (Airplane flying with a globe background) -[2]: https://opensource.com/resources/raspberry-pi -[3]: https://www.petergarner.net/projects/Mac_Mini_to_rpi-part_1.pdf -[4]: https://en.wikipedia.org/wiki/Next_Unit_of_Computing -[5]: http://threatbrief.com/evil-maid-attack/ -[6]: https://opensource.com/sites/default/files/uploads/pi-zero-on-the-road.jpg (Pi Zero W setup) -[7]: https://opensource.com/sites/default/files/uploads/tmux-on-pi.png (tmux running on Raspberry Pi) -[8]: https://opensource.com/sites/default/files/uploads/ftp-client-mc.png (MC FTP client example) -[9]: https://www.raspberrypi.org/forums/viewtopic.php?t=150124#p987430 -[10]: https://opensource.com/sites/default/files/uploads/wifi-selector.png (wicd-curses WiFi app) -[11]: https://github.com/billw2/rpi-clone -[12]: https://petergarner.net/notes/index.php?thisnote=20180202-Travels%20with%20a%20Pi diff --git a/sources/tech/20200313 How to whiteboard collaboratively with Drawpile.md b/sources/tech/20200313 How to whiteboard collaboratively with Drawpile.md deleted file mode 100644 index dba4bce1f8..0000000000 --- a/sources/tech/20200313 How to whiteboard collaboratively with Drawpile.md +++ /dev/null @@ -1,118 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (How to whiteboard collaboratively with Drawpile) -[#]: via: (https://opensource.com/article/20/3/drawpile) -[#]: author: (Seth Kenlon https://opensource.com/users/seth) - -How to whiteboard collaboratively with Drawpile -====== -Need to whiteboard or draw something with others? Give Drawpile a try. -![markers for a whiteboard][1] - -Thanks to applications like [Krita][2] and [MyPaint][3], open source software users have all the tools they need to create stunning digital paintings. They are so good that you can see [art created with Krita][4] in some of your [favorite RPG books][5]. And it's getting better all the time; for example, [GIMP][6] 2.10 adopted MyPaint's brush engine, so users can benefit from MyPaint without even installing the whole application. - -But what about collaborative illustration? What do two or more artists do when they want to work together on one piece? What does your work team use when you need to whiteboard during a business meeting? Those are the questions, and the answer is [Drawpile][7]. - -![Drawpile's UI][8] - -Nyarlathotep by Sophia Eberhard - -Drawpile is a drawing application for Linux, Windows, and macOS. It's got a respectable brush engine and all the basic editorial tools (selection tools, flips and flops, mirror, and so on) to make it a good freehand digital paint application. But its most powerful feature is its easy multi-user mode. If you have Drawpile installed, you can host a drawing session from your computer or on a Drawpile server, allowing other users to join you in your virtual studio. This goes well beyond a screen-share session, which would just allow other users to _view_ your painting, and it's not a remote desktop with just one cursor. Drawpile enables several users, each with their own brush, to work on the same canvas at the same time over a network that can span the globe. - -### Installing Drawpile - -If you're using Linux, Drawpile is available as a [Flatpak][9] from [Flathub.org][10]. - -On Windows and macOS, download and install Drawpile from [Drawpile's download page][11]. When you first launch it on macOS, you must right-click on its icon and select **Open** to accept that it hasn't been signed by a registered Apple developer. - -### Drawing with Drawpile - -The Drawpile interface is simple and minimal. Along the right side of the application window are docked palettes, and along the top is a toolbar. Most of the tools available to you are visible: paint brushes, paint buckets, lines, Bézier curves, and so on. - -For quick access to brushes, Drawpile allows you to assign a unique brush, along with all of its settings (including color), to the number keys **1** through **5** on your keyboard. It's an efficient and easy way to quickly move between drawing tools. The **6** key holds an eraser. - -Drawpile also has layers, so you can keep different parts of your painting separate until you combine them for your final render. If you're an animator, you can even use Drawpile's onion skin and flipbook features (both available in the **Layer** menu) to do rudimentary frame-by-frame animation. Unlike Krita, Drawpile doesn't feature an [animation timeline][12], but it's enough for quick and fun animations. - -### Custom brushes - -Drawpile isn't Krita or MyPaint, so its brush engine is simple in comparison. The preset brushes have the usual properties, though, including: - - * **Opacity** adjusts how your strokes blend with existing paint - * **Hardness** defines the edges of your stroke - * **Smudging** allows existing strokes to be affected by your brush - * **Color pickup** allows your paint to pick up color from existing strokes - * **Spacing** controls how often the full brush cursor is sampled during a stroke - - - -Most of these are pressure-sensitive, so if you're using a drawing tablet (Wacom, for instance), then your brush strokes are dynamic depending upon pen pressure. The tablet support is borrowed from Krita, and it makes a big difference (although it's probably overkill for mock-ups or whiteboarding sessions). - -When you find a brush setting you like, you can add it to your brush set so you can use it again later. To add a brush, click the **Menu** button in the top-right corner of the docked **Brushes** palette and select **Add brush**. - -![Adding a brush in Drawpile][13] - -If the **Brushes** palette isn't visible, go to the **View** menu in the top menu bar and select **Brushes** from the **Docks** submenu. - -### Collaborative drawing - -To participate in a shared drawing session, go to the **Session** menu and click either **Host** to host a session or **Join** to join in on an existing one. - -#### Hosting a session - -If you're hosting a session, give your session a title and an optional password (or leave it blank to allow anyone in). In the **Server** section, set whether you're hosting the session from your computer or from someone else's server. You can host sessions on **pub.drawpile.net** for free, but all of your data will be sent out to the internet, which could affect performance. If you have a good internet connection, the lag is negligible, but if you're not confident in your internet speed or there's no reason to go out to the internet because your collaborators are in the same building as you, then you can host your session locally. - -![Settings for hosting a session][14] - -If you host locally, you must provide your IP address or computer name (ending in **.local**) to your collaborators so their Drawpile apps can find your computer. You can find your computer name in the **Sharing** preferences of the GNOME desktop if you're on Linux: - -![Sharing Drawpile in GNOME][15] - -You must enable Remote Login, and possibly adjust your [firewall settings][16] to allow other users to get through. - -On macOS and Windows, you may be running a firewall, and you may need to provide additional sharing permissions in your control panel or system settings. - -#### Joining a session - -If you're joining a session, you need to know either the URL or the IP address of the session you're trying to join. A URL is like a website address, such as syntheticdreams.net/listing. An IP address is the numerical version of a URL, such as 93.184.216.34. Some IP addresses are internal to your building, while others exist out on the internet. If you haven't been invited to a drawing session, you might be able to find a public group on Drawpile's [Communities][17] page. - -### Drawing with friends - -Open source has always been about sharing. Drawpile is not only software you can share with your friends and colleagues; it's software that allows you to work with them in a fun and creative way. Try Drawpile for your next project or boardroom meeting! - -Nick Hamilton talks about what he loves about the open source digital painting tool, Krita, prior... - -Akkana Peck shares three of her favorite GIMP tools. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/3/drawpile - -作者:[Seth Kenlon][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/seth -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/markers_whiteboard_draw.png?itok=hp6v1gHC (markers for a whiteboard) -[2]: https://krita.org/en/ -[3]: http://mypaint.org -[4]: https://krita.org/en/item/interview-with-alexandru-sabo/ -[5]: https://paizo.com/products/btpy9g9x?Pathfinder-Roleplaying-Game-Bestiary-5 -[6]: https://www.gimp.org/ -[7]: https://drawpile.net -[8]: https://opensource.com/sites/default/files/uploads/drawpile-ui.jpg (Drawpile's UI) -[9]: https://opensource.com/article/19/10/how-build-flatpak-packaging -[10]: https://flathub.org/apps/details/net.drawpile.drawpile -[11]: https://drawpile.net/download/ -[12]: https://opensource.com/life/16/10/animation-krita -[13]: https://opensource.com/sites/default/files/uploads/drawpile-brush-add.jpg (Adding a brush in Drawpile) -[14]: https://opensource.com/sites/default/files/uploads/drawpile-session-host.png (Settings for hosting a session) -[15]: https://opensource.com/sites/default/files/uploads/gnome-sharing.png (Sharing Drawpile in GNOME) -[16]: https://opensource.com/article/19/7/make-linux-stronger-firewalls -[17]: https://drawpile.net/communities diff --git a/sources/tech/20200314 Adding a display to a travel-ready Raspberry Pi Zero.md b/sources/tech/20200314 Adding a display to a travel-ready Raspberry Pi Zero.md deleted file mode 100644 index f8dcb26208..0000000000 --- a/sources/tech/20200314 Adding a display to a travel-ready Raspberry Pi Zero.md +++ /dev/null @@ -1,281 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Adding a display to a travel-ready Raspberry Pi Zero) -[#]: via: (https://opensource.com/article/20/3/pi-zero-display) -[#]: author: (Peter Garner https://opensource.com/users/petergarner) - -Adding a display to a travel-ready Raspberry Pi Zero -====== -A small eInk display turns a Raspberry Pi into a self-contained, -pocket-sized travel computer. -![Pi Zero][1] - -In my earlier article, I explained how I [transformed a Raspberry Pi Zero][2] into a minimal, portable, go-anywhere computer system that, although small, can actually achieve useful things. I've since made iterations that have proved interesting and made the little Pi even more useful. Read on to learn what I've done. - -### After the road trip - -My initial Pi Zero setup [proved its worth][3] on a road trip to Whitby, but afterward, it was largely consigned to the "pending" shelf, waiting for another assignment. It was powered up weekly to apply updates, but other than that, it was idle. Then one day, as I was flicking through emails from various Pi suppliers, I came across a (slightly) reduced e-Ink display offer: hmmm… and there was a version for the Pi Zero as well. What could I do with one? - -ModMyPi was selling a rather neat [display and driver board combination][4] and a [small case][5] with a transparent window on top. I read the usual reviews, and apart from one comment about the _boards being a very tight fit_, it sounded positive. I ordered it, and it turned up a few days later. I had noted from the product description that the display board didn't have GPIO headers installed, so I ordered a Pi Zero WH (wireless + headers pre-installed) to save me the bother of soldering one on. - -### Some assembly required - -As with most of these things, some self-assembly was required, so I carefully opened the boxes and laid out the parts on the desk. The case was nicely made apart from ridiculous slots for a watch strap (?!) and some strange holes in the side to allow tiny fingers to press the five I/O buttons on the display. "_Could I get a top without holes?"_ I inquired on the review page. "_No."_ Okay then. - -With the case unpacked, it was time to open the display box. A nicely designed board was first out, and there were clear instructions on the Pi-Supply website. The display was so thin (0.95mm) that I nearly threw it out with the bubble wrap. - -The first job was to mount the display board on the Pi Zero. I checked to make sure I could attach the display cable to the driver board when it was joined to the Pi and decided that, with my sausage fingers, I'd attach the display first and leave it flapping in the breeze while I attached the driver board to the Pi. I carefully got the boards lined up on the GPIO pins, and, with those in place, I folded over the display "screen" to sit on top of the board. With the piggy-backed boards in place, I then _verrrry_ carefully shoe-horned the assembly into place in the case. Tight fit? Yeah, you're not kidding, but I got it all safely in place and snapped the top on, and nothing appeared to be broken. Phew! - -### How to set up your display - -I'm going to skip a chunk of messing about here and refer you to the maker's [instructions][6] instead. Suffice to say that after a few installs, reboots, and coffees, I managed to get a working e-Ink display! Now all I had to do was figure out what to do with it. - -One of the main challenges of working with a small device like [my "TravelPi"][2] is that you don't have access to as much screen real estate as you would on a larger machine. I like the size and power of the device though, so it's really a compromise as to what you get out of it. For example, there's a single screen accessible via the HDMI port, and I've used tmux to split that into four separate, usable panes. If I really need to view something else urgently, I could always **Ctrl+Z** into another prompt and do the necessary configs, but that's messy. - -I wanted to see various settings and maybe look at some system settings, and the e-Ink display enabled me to do all that! As you can see from the image below, I ended up with a very usable info panel that is updated by a simple(-ish) Python script (**qv**) either manually or by a crontab entry every 10 minutes. The manufacturer states that the update frequency should be "no more than 1Hz if you want your display to last for a long time." Ten minutes is fine, thank you. - -Here's what I wanted to be able to see at a glance: - -Hostname | And device serial number ----|--- -IP address | Current internal IP address -VPN status | Inactive/country/IP address -Tor status | Inactive/IP address -"Usage" | Percentage disk space and memory used -Uptime | So satisfying to see those long uptimes - -And here it is: a display that's the same size as the Pi Zero and 1" deep. - -![PiZero Display][7] - -### How to populate the display - -Now I needed to populate the display. As seems to be the norm these days, the e-Ink support software is in Python, which, of course, is installed as standard with most Linux distros. _Disclaimer:_ Python is not my first (dev) language, but the code below works for me. It'll probably work for you, too. - - -``` -#!/usr/bin/env python - -import os -import sys -import time -import datetime -import socket -import netifaces as ni -import psutil -import subprocess - -from netifaces import AF_INET, AF_INET6, AF_LINK, AF_PACKET -from papirus import PapirusText, PapirusTextPos, Papirus -from subprocess import check_output -from datetime import timedelta - -rot     = 0 -screen  = Papirus(rotation = rot) -fbold   = '/usr/share/fonts/truetype/dejavu/DejaVuSansMono-Bold.ttf' -fnorm   = '/usr/share/fonts/truetype/dejavu/DejaVuSansMono.ttf' -text    = PapirusTextPos(rotation = rot) - -def GetBootTime(): -        return datetime.datetime.fromtimestamp(psutil.boot_time()) - -def GetUptime(): -     with open('/proc/uptime','r') as f: -       uptime_seconds = float(f.readline().split()[0]) -     u = str(timedelta(seconds = uptime_seconds)) -     duration,junk = u.split(".") -     hr,mi,sc = duration.split(":") -     return "%sh %sm %ss" % ( hr,mi,sc ) - -def getHostname(): -        hostname = socket.gethostname() -        return hostname - -def getWiFiIPaddress(): -        try: -                ni.interfaces() -                [ 'wlan0', ] -                return ni.ifaddresses('wlan0')[AF_INET][0]['addr'] -        except: -                return 'inactive' - -def getVPNIPaddress(): -        try: -                ni.interfaces() -                [ 'tun0', ] -                return ni.ifaddresses('tun0')[AF_INET][0]['addr'] -        except: -                return 'inactive' - -def GetTmuxEnv(): -        if 'TMUX_PANE' in os.environ: -                return ' (t)' -        return ' ' - -def GetCPUserial(): -        cpuinfo = subprocess.check_output(["/bin/cat", "/proc/cpuinfo"]) -        cpuinfo = cpuinfo.replace("\t","") -        cpuinfo = cpuinfo.split("\n") -        [ legend, cpuserial ] = cpuinfo[12].split(' ') -        cpuserial = cpuserial.lstrip("0") -        return cpuserial - -def GetMemUsed(): -        memUsed = psutil.virtual_memory()[2] -        return memUsed - -def GetDiskUsed(): -        diskUsed = psutil.disk_usage('/')[3] -        return diskUsed - -def CheckTor(): -        try: -                TS = "active: pid %s" %check_output(['pidof','tor'])    -        except: -                TS = 'inactive' -        return TS       - -def CheckVPN(): -        return VPNlo -# --------------------------------------------------------------------------- -def main(): -        pass - -if __name__ == '__main__': -        main() - -VPNlo = 'inactive' - -if (len(sys.argv) == 2): -        try: -                VPNlo = sys.argv[1] -        except: -                VPNlo = 'inactive' - -text = PapirusTextPos(False,rotation=rot) -text.AddText("%s %s %s"% (getHostname(),GetCPUserial(),GetTmuxEnv()),x=1,y=0,size=12,invert=True,fontPath=fbold) -text.AddText("IP  %s" % getWiFiIPaddress(),x=1,y=16,size=12,fontPath=fnorm) -if ( getVPNIPaddress() == 'inactive' ): -        text.AddText("VPN %s" % CheckVPN(),x=1,y=30,size=12,fontPath=fnorm) -else: -        text.AddText("VPN %s" % getVPNIPaddress(),x=1,y=30,size=12,fontPath=fnorm) -text.AddText("TOR %s" % CheckTor(),x=1,y=44,size=12,fontPath=fnorm) -text.AddText("MEM %s% DISK %s% used" % (GetMemUsed(),GetDiskUsed()),x=1,y=58,size=12,fontPath=fnorm,maxLines=1) -text.AddText("UPTIME %s" % GetUptime(),x=1,y=72,size=12,fontPath=fnorm) -text.WriteAll() - -sys.exit(0) -``` - -Normally, the script runs without any arguments and is called by a series of Bash scripts that I've written to start up various subsystems; these are, in turn, called from a menu system written in Whiptail, which is pretty versatile. In the case of the VPN system, I have a list of access points to choose from and that update the location on the display. Initially, I call the display updater with the location name (e.g., Honolulu), but at that point, I can't display the VPN IP address because I don't know it: - - -``` -   dispupdate.py ${accesspoint} -   openvpn --config $PATH/Privacy-${accesspoint}.conf --auth-user-pass credfile -``` - -When the display updater runs again (outside the VPN startup script), the IP address is readable from the **tun0** interface and the display is updated with the IP address. I may change this later, but it works fine now. I use the **PapirusTextPos** function (rather than **PapirusText**), as this allows multiple lines to be written before the display is updated, leading to a much faster write. The **text.WriteAll()** function does the actual update. - -### Adding more software - -I was very pleased with my initial choice of applications, but since I'd managed to slim the whole installation down to 1.7GB, I had plenty of available space. So, I decided to see if there was anything else that could be useful. Here's what I added: - -Irssi | IRC client ----|--- -FreeBSD games | There are still many text-mode games to enjoy -nmon | A _very_ comprehensive top-alike utility for all aspects of the system -Newsbeuter | Text-mode Atom/RSS feed reader - -And I still have about 300MB free space to take me up to 2GB, so I may add more. - -### We keed to talk about ~~Kevin~~ Bluetooth - -Observant readers will remember my hatred for Bluetooth and trying to pair terminal-based software with a Bluetooth device. When I bought a new Pi, I realized that I had to pair the damn thing up with the keyboards again. Oh, woe is me! But a search-engine session and a calming coffee enabled me to actually do it! It goes something like this: - - -``` -sudo su -bluetoothctl {enter} - -[bluetooth]# - -[bluetooth]# scan on -Discovery started -[CHG] Controller B8:27:EB:XX:XX:XX Discovering: yes - -[bluetooth]# agent on -Agent registered -[NEW] Device B2:2B:XX:XX:XX:XX Bluetooth Keyboard -Attempting to pair with B2:2B:XX:XX:XX:XX -[CHG] Device B2:2B:XX:XX:XX:XX Connected: yes -[agent] PIN code: 834652 -[CHG] Device B2:2B:XX:XX:XX:XX Modalias: usb:v05ACp0220d0001 -[CHG] Device B2:2B:XX:XX:XX:XX UUIDs: zzzzz -[CHG] Device B2:2B:XX:XX:XX:XX UUIDs: yyyyy -[CHG] Device B2:2B:XX:XX:XX:XX ServicesResolved: yes -[CHG] Device B2:2B:XX:XX:XX:XX Paired: yes -Pairing successful -[CHG] Device B2:2B:XX:XX:XX:XX ServicesResolved: no -[CHG] Device B2:2B:XX:XX:XX:XX Connected: no - -[bluetooth]# trust B2:2B:XX:XX:XX:XX -[CHG] Device B2:2B:XX:XX:XX:XX Trusted: yes -Changing B2:2B:XX:XX:XX:XX trust succeeded -[CHG] Device B2:2B:XX:XX:XX:XX RSSI: -53 - -[bluetooth]# scan off -[CHG] Device B2:2B:XX:XX:XX:XX RSSI is nil -Discovery stopped -[CHG] Controller B8:27:EB:XX:XX:XX Discovering: no - -[bluetooth]# exit -Agent unregistered - -$ -``` - -I was gobsmacked! No, really. I paired my other keyboard and am now considering pairing a speaker, but we'll see. I had a beer that night to celebrate my new-found "l33t" tech skills! Here is an [excellent guide][8] on how to do it. - -### One more hardware mod - -Until recently, I've been using as large a good-quality microSDHC card as I could afford, and in case of problems, I created a backup copy using the rsync-based rpi-clone. However, after reading various articles on the 'net where people complain about corrupted cards due to power problems, unclean shutdowns, and other mishaps, I decided to invest in a higher-quality card that hopefully will survive all this and more. This is important if you're traveling long distances and _really_ need your software to work at the destination. - -After a long search, I found the [ATP Industrial-Grade MicroSD/MicroSDHC][9] cards, which are rated military-spec for demanding applications. That sounded perfect. However, with quality comes a cost, as well as (in this case) limited capacity. In order to keep my wallet happy, I limited myself to an 8GB card, which may not sound like a lot for a working computer, but bearing in mind I have a genuine 5.3GB of that 8GB free, it works just fine. I also have a level of reassurance that bigger but lower-quality cards can't give me, and I can create an ISO of that card that's small enough to email if need be. Result! - -### What's next? - -The Zero goes from strength to strength, only needing to go out more. I've gone technically about as far as I can for now, and any other changes will be small and incremental. - -* * * - -_This was originally published on [Peter Garner's blog][10] under a CC BY-NC-ND 4.0 and is reused here with the author's permission._ - -The new issue of the official Raspberry Pi magazine, The MagPi, comes with a free computer stuck to... - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/3/pi-zero-display - -作者:[Peter Garner][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/petergarner -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/zero-osdc-lead.png?itok=bK70ON2W (Pi Zero) -[2]: https://opensource.com/article/20/3/raspberry-pi-zero-w-road -[3]: https://petergarner.net/notes/index.php?thisnote=20180511-Travels+with+a+Pi+%282%29 -[4]: https://www.modmypi.com/raspberry-pi/screens-and-displays/epaper/papirus-zero-epaper--eink-screen-phat-for-pi-zero-medium -[5]: https://www.modmypi.com/raspberry-pi/cases-183/accessories-1125/watch-straps/pi-supply-papirus-zero-case -[6]: https://github.com/PiSupply/PaPiRus -[7]: https://opensource.com/sites/default/files/uploads/pizerodisplay.jpg (PiZero Display) -[8]: https://www.sigmdel.ca/michel/ha/rpi/bluetooth_01_en.html -[9]: https://www.digikey.com/en/product-highlight/a/atp/industrial-grade-microsd-microsdhc-cards -[10]: https://petergarner.net/notes/index.php?thisnote=20190205-Travels+with+a+Pi+%283%29 diff --git a/sources/tech/20200315 How I migrated from a Mac Mini to a Raspberry Pi.md b/sources/tech/20200315 How I migrated from a Mac Mini to a Raspberry Pi.md deleted file mode 100644 index 0e1c7196fa..0000000000 --- a/sources/tech/20200315 How I migrated from a Mac Mini to a Raspberry Pi.md +++ /dev/null @@ -1,184 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (How I migrated from a Mac Mini to a Raspberry Pi) -[#]: via: (https://opensource.com/article/20/3/mac-raspberry-pi) -[#]: author: (Peter Garner https://opensource.com/users/petergarner) - -How I migrated from a Mac Mini to a Raspberry Pi -====== -Learn more about Linux by turning a Raspberry Pi Model 2 into a workable -desktop computer. -![Vector, generic Raspberry Pi board][1] - -Some time ago, I decided to move my computing environment from a Mac Mini PowerPC to a Raspberry Pi Model 2. This article describes my reasons for doing so and how I did it. While it is quite technical in places, if you're considering switching from an existing system to something decidedly lean and mean, there are things that you need to know before making that leap. There are lots of links to click as well, which will lead you to the software and apps that I mention. - -Enjoy! - -## Saying goodbye to the Mac - -I have to admit, I've never really been an Apple fanboi, especially following a short (and ultimately unsatisfactory) fling with a plastic polycarbonate MacBook back in 2006. Although it was beautifully designed, and the software "Just Worked," I was understandably upset when it decided to expire shortly after the warranty period expired (design faults, apparently). Ah well. - -I swore never to "invest" in an Apple machine again—until I discovered a used Mac Mini PowerPC on eBay that could be had for around $100 in 2012. It was new back in 2005 but had apparently been refurbished. "What have I got to lose, especially at that price?" I asked myself. Nobody answered, so I placed a last-minute bid, won it, and invested about the same sum of money again in bumping the memory up to 1GB and buying the OS on DVD. The OS X version was 10.4.7 Tiger, and the architecture was Power PC. It was sedate but reliable, and I was happy. It didn't take a lot of power either; some 60 watts at full load, so that was a bonus. I spent many happy hours tinkering with it and trying to find software that was supported on a device that old. - -Predictably though, as my computing requirements grew and the Mac got older, it started to get noticeably slower, and I was aware that even simple tasks—such as asking it to run a web browser and display an HTTPS page—were causing it problems. When I finally managed to find antivirus software for it, I became aware of just how noisy the Mini's cooling fan was as the CPU struggled with the extra load. - -A quick check of the performance monitors revealed thousands of memory-paging faults, and I realized that my old friend was soon destined for the knackers yard. Of course, that meant searching for a replacement, and that's when the fun started. - -## A(nother) small computer - -My main problem was that I didn't have a big budget. I looked at eBay again and found a number of Mac Minis for sale, all around the $500 mark, and many of those were early basic-spec Intel units that, like my old Mac, people had simply grown out of. Essentially, I wanted something like the old Mini, ideally with similar power consumption. A new one was out of the question, obviously. - -Let me state that my computer requirements are pretty undemanding, and for photo/graphics work, I have another computer that consumes power like there's no tomorrow and gives off enough heat to keep me warm in winter. And then I got to thinking about the [Raspberry Pi Model 2][2]. Now before you laugh, I have around six of the things running various servers, and they do just fine. One runs a small web server, another runs a mail server, and so on. Each one costs around $30, and most use a cheap microSDHC card, so if one fails, I can easily swap it out for another, and I can usually buy a suitable card at a local supermarket—try doing that when your laptop drive fails! I also have a Netgear ReadyNAS 102 with a couple of 2TB hard drives to act as my bulk storage. - -Suddenly, my plan looked as though it might be viable after all! - -## Spec'ing it out - -The specification was a bit of a no-brainer: The Model 2 Pi comes with 1GB of memory standard, the Ethernet runs at 100Mbps maximum, the clock speed is 900MHz, there are four USB ports, and that's yer lot, mate. You can overclock it, but I've never wanted to try this for various reasons. - -I had a Pi in my spares drawer, so no problem there. I ordered a posh aluminum case made by [Flirc][3] that was on offer for $20 and duly slotted in the Pi. The power supply unit (PSU) had to be a genuine two-amp device, and again, I had a spare lying around. If you take your Pi ownership seriously, I recommend the [Anker 40W][4] five-port desktop charger: it has intelligent power management, and I'm running five Pis from one unit. Incidentally, if you inadvertently use a PSU that can't deliver the required current, you'll keep seeing a square, multi-colored icon in the top-right corner of your screen, so be warned. - -The microSDHC "disk" was more of an issue, though. I always use SanDisk, and this time I wanted something fast, especially as this was to be a "desktop" machine. In the end, I went for a [SanDisk 8GB Extreme Pro UHS-1][5] card that promised up to 90 to 95 Mbps write/read performance. "8GB? That's not a lot of space," I hear you Windows users cry, and because this is Linux, there doesn't need to be. - -The way I envisioned it, I'd set up the Pi normally and use it primarily as a boot disk. I'd host all my documents and media files on the network-attached storage (NAS) box, and all would be well. The NAS shares would be accessed via network filesystem (NFS), and I'd just mount them as directories on the Pi. - -Quite early on, I elected to move my entire home directory onto the NAS, and this has worked well, with some quirks. The problem I faced was a Pi quirk, and although I was sure there was a fix, I wanted to get it up and running before the Mac finally crapped out. When the Pi boots, it seems to enable the networking part quite late in the sequence, and I found that I couldn't do my NFS mounts because the networking interface hadn't come up yet. Rather than hack around with tricky scripts, I decided to simply mount the NFS shares by hand after I'd logged in after a successful boot. This seemed to work, and it's the solution I'm using now. Now that I had a basic strategy, it was time to implement it on the "live" machine. - -That's the beauty of working with the Raspberry Pi—you can quickly hack together a testbed and have a system up and running in under 30 minutes. - -Regarding video, I bought an HDMI-to-DVI cable to use with my Dell monitor, and in GUI desktop mode, this comes up as 1280x1024—plenty good enough for my use. If you have a monster flat-screen TV, you can always use that instead. - -## My software environment - -### Operating system - -I ultimately decided on [Arch Linux for ARM][6] 7H as the operating system. I'm a [Raspbian][7] veteran, but I didn't need the educational software that comes with it (I have other Pis for that). Arch provides a minimal environment but is full-featured, well-supported, and powerful; it also has bucket-loads of software available. After its initial installation, I'd used just over 1.2GB of space, and even now, with all my software on the microSDHC, I'm only using 2.8GB of my 8GB card. Please note that the Pi 2 is officially Arch Linux ARM 7, not 6. - -### Desktop - -I wanted a graphical desktop environment (even though I'm a command-line sorta guy), but it needed to be in keeping with the lean and mean ethos. I'd used [LXDE][8] before and was happy with it, so I installed it; GNOME and KDE were just too big. - -### Web browser - -The web browser was a bit of a problem, but after trying the default Midori, Epiphany, and a couple of others, I decided on [Firefox][9]. It's a bit flabby, but it follows standards well, and if you're going to digitally sign LibreOffice ODT documents, you'll need it anyway. One problem on a machine of this power is the tremendous toll that web-based ads place on the overall memory usage. In fact, a badly ad'ed page can make the browser stop completely, so I had to make those ads disappear. One way would be to install an ad-blocker plugin, but that's another hit on available memory, so a simpler method was called for. - -As this is a Linux box, I simply downloaded an [ad-blocking hosts file][10]. This is an amazing piece of community work that consists of over 15,000 hostnames for basically any server that spits out ads. All the entries point to an IP address of 0.0.0.0, so there's no time wasted and your bandwidth's your own again. It's a free download and can be added to the end of an existing hosts file. Of course, the major value, as far as I'm concerned, is that page load times are much quicker. - -The screen capture below shows an ad-free Firefox overlaid with the same page in [ELinks][11]. - -![Firefox and eLinks browsers on Raspberry Pi][12] - -No ads in either, but if you don't need all the eye candy rendered by Firefox, ELinks will provide a super-clean experience. (Normally, all that whitespace in the Firefox image is filled with ads.) The ELinks browser is an interesting hybrid browser that is primarily text-based and is similar to the classic pure-text Lynx browser. - -### Messaging - -It would be overkill, and undesirable from a security point of view, to have Microsoft Skype on the Pi, so I decided on a Jabber/XMPP client, [Psi][13]. Psi has the advantage of not having a multitude of dependencies, and it also works really well. It's easy to take part in multi-user chats, and I have another Pi hosting a Jabber server to test it on. There's no character-mode version, unfortunately, and most of the text-based clients I tried had problems, so it's a GUI-only situation at the moment. No matter; it works well and doesn't use a lot of resources. - -### Email - -I also tried a number of email applications: this was easily the most important application. Eventually, I chose [Claws Mail][14]. Sadly, it doesn't do HTML mail, but it's rock-solid reliable. I have to say that I can't get the GNU Privacy Guard (GPG) plugin working properly yet due to some unresolved version issues, but I can always encrypt messages in a terminal, if need be. - -### Audio - -Music is important to me, and I chose [SMPlayer][15] as my media player. It supports many options, including playlists for local and networked files and internet radio streaming. It does the job well. - -### Video - -I'll not go into the video player in any great detail. Bearing in mind the hardware specs of the Pi, reliably playing back a video stream, even on the same network, was problematic. I decided that if I wanted to watch videos, I had other devices more suited to it. I did try and experiment with the **gpu_mem** setting in the **[/boot/config.txt][16]**, switching it from the default 64MB to 96MB. I was prepared to borrow a bit of application memory for the video player, but even that didn't seem to make it work well. In the end, I kept that setting so that the desktop environment would run more smoothly, and so far, I haven't had problems. The irony of this is that I have another Pi that has a [DLNA][17] server installed, and this can stream video exceedingly well—not just to one client, but several. In its defense, though, it doesn't have a desktop environment to contend with. So, for now, I don't bother trying to play video. - -### Image processing - -I need to do simple, lightweight photo and image editing, and I knew from prior experience that GIMP and similar packages would bring the Pi to its knees. I found an app called [Pinta][18], which resembles an enhanced Microsoft Paint, but with more cojones. As someone with a large image collection, I also needed a slideshow application. After much evaluation, I decided on [feh][19]. Normally run from a terminal within the GUI desktop, it has an incredible array of options that can help you produce an image slideshow, and again, it has low memory requirements. - -### Office suite - -And then there was an office suite. On the old Mac Mini, I was happily (and legally) running a copy of Microsoft Mac Office 2004, and I was truly sorry to lose that. I just needed a Microsoft Word and Excel equivalent, but I had to bear in mind the Pi's limitations. Sure, there are standalone versions of word-processor and spreadsheet applications, but there was nothing that really gave me confidence that I could edit a full-featured document. - -I already knew of [LibreOffice][20], but I had my doubts about it because of its Java Runtime Environment (JRE) requirement, or so I thought. Thankfully, JRE was optional, and as long as I didn't want to use (database) connection pooling of macros, there was no need to enable it. I also used as many built-in options as possible, rejecting skins and themes; this brought the overall memory footprint down to a reasonable level, and hey, I'm writing this on LibreOffice Writer now! I adopted the attitude that if it has a built-in theme, use it! - -Here's the current [memory overview][21] (in MB) from within the GUI desktop: - -![Raspberry Pi GUI memory usage][22] - -### Miscellaneous - -Other desktop software I've installed (not much as I wanted in order to keep this a minimal installation) is: - - * [FileZilla][23]: SFTP/FTP client - * [PuTTY][24]: SSH/telnet terminal frontend - * [Mousepad][25]: A versatile plain-text editor, similar to Wordpad or Notepad, but much more powerful **[Note: this link was broken. Is this ok?]** - - - -Overall, the entire setup works as intended. I've found that it performs well, if a little slow sometimes, but this is to be expected, as it's running on a Raspberry Pi with a 900MHz clock speed and 1GB of memory. As long you're aware of and prepared to accept the limitations, you can have a cheap, very functional system that doesn't take up all your desk space. - -## Lacking in characters - -Life with a Pi desktop is not all about the GUI; it's a very competent command-line environment too, should you need one. As a Linux developer and geek, I am very comfortable in a character-mode environment, and this is where the Pi really comes into its own. The performance you can expect in the command-line environment, at least in my configuration, is dependent on a number of factors. I'm limited to a certain extent by the Pi's network-interface speed and the overall performance of my Netgear ReadyNAS 102, another slightly underpowered, consumer-grade ARM box. The one thing that did please me, though, was the noticeable increase in speed over the Mac Mini! - -Running in a native terminal environment, this is the typical memory usage (in MB) you might expect: - -![Raspberry Pi terminal memory usage][26] - -One thing to note is the lack of a swap partition. It's generally accepted that any type of swap system on a Raspberry Pi is a Very Bad Thing™ and will wear out your SD card in no time. I considered setting up a swap partition on the NAS box, but I ruled this out early on, as it would very negatively impact the network as a whole, and as with the NFS mount issue, the swap partition would need to be mounted before the network came up. So no go. - -Having lived with Raspberry Pis for some time now, let's just say that one has to learn to set things up carefully in the first place to avoid the need, and ultimately, it can teach you to manage computers better. - -As part of my efforts to make the Pi as useful as possible, I had to envision a scenario where whatever I was working on was either so resource-hungry that I couldn't run a GUI desktop or the GUI was just not required. That meant reproducing as many of the desktop-only apps in a character-mode environment. In fact, this was easier than finding the equivalent desktop apps. - -Here is my current lineup: - - * **File manager:** [Midnight Commander][27]; if you're old enough to remember Norton Commander, you'll know what it looks like. - * **File transfer:** SSH/SFTP; normally handled by PuTTY and FileZilla on the desktop, you just use these two commands as provided. - * **Web browser:** Lynx or Links are classic character-mode browsers that significantly speed up the internet experience. - * **Music player:** Yes, you can play music in a character-mode terminal! [Mpg123][28] is the name of the app, and when it's run as **mpg123 -C**, it allows full keyboard control of all playback functions. If you want to be really cool, you can alter the way Midnight Commander handles MP3 files by editing **/etc/mc/mc.ext** and adding the code snippet below. This allows you to browse and play your music collection with ease. [code] shell/i/.mp3 -      Open=/usr/bin/mpg123 -C %f -      View=%view{ascii} /usr/lib/mc/ext.d/sound.sh view mp3 -``` - * **Office:** Don't be silly! Oh wait, though; I installed the character-mode spreadsheet app called **sc** (Supercalc?), and there's always Vi if you want to edit a text document, but don't expect to able to edit any Microsoft files. If your need is truly great, you can install a supplementary application called Antiword, which will let you view a .doc file. - * **Email:** A bit of a problem, as the Claws Mail mailbox format is not directly compatible with my character-mode app of choice, Mutt. There's a workaround, but I'm only going to do it if I get some spare time. For sending quick emails, I installed ssmtp, which is described as "a send-only sendmail emulator for machines which normally pick their mail up from a centralized mail hub." The setup is minimal, and overhead is practically nil, as normally it's invoked only when mail is being sent. So, you can do things like typing **echo "The donuts are on my desk" | mail -s"Important News" [everybody@myoffice.com][29]** from the command line without firing up a GUI mail app. - - - -For everything else, it's just a question of flipping back to the GUI desktop. Speaking of which… - -![Raspberry Pi GUI desktop environment][30] - -Quite a busy screen, but the Raspberry Pi handles it well. Here, I'm using LibreOffice to write this article, there's a network status box, Firefox is on the mpg123 website, and there's a terminal running top showing how much memory (isn't) being used. The drop-down menu on the left shows the office suite apps. - -## Other scenarios and thoughts - -### What's where - -With any hybrid system like this, it's important to remember what is located where so that, in the event of any problems, recovery will be easier. In my current configuration, the microSDHC card contains only the operating system, and as much as possible, any system-configuration files are also on there. Your own userland data will be on the NAS in your home directory. Ideally, you should be to replace or update the software on the microSDHC without having any adverse effects on your computing environment as a whole, but in IT, it's never that straightforward. - -In the X11 GUI desktop system, although there is a default config file in **/etc/X11**, you will invariably have a customized version containing your own preferences. (This is by design.) Your own file on the NAS, however, will reference files on the microSDHC: - -![Location of files][31] - -The overall effect is that if you change one environment for another, you will invariably experience a change (or loss) in functionality. Hopefully, the changes will be minor, but you do need to be aware of the sometimes ambiguous links. - -Please remember that the **root** user will _always_ be on the microSDHC, and if your NAS box fails for any reason, you'll still be able to boot your system and at least do some recovery work. - -### NAS alternatives - -While I'm in my home office, I have full access to my NAS box, which represents what (in today's terminology) would be a personal cloud. I much prefer this solution to a commercial cloud that is invariably managed by a company of unknown origin, location, security, and motives. For those reasons, I will always host my data where I can see it and physically get to it as required. Having said that, you may not be as paranoid as I am and will want to hook up your Pi desktop to an external cloud share. - -In that case, using an NFS mount as a basis for your home directory should mean that it's simply a matter of editing your **/etc/fstab** to point the NFS client at a different location. In my setup, the NAS box is called, er, NASBOX, and the local NFS share mountpoint is called **/NASmount**. When you create your non-root user, you'll simply move their home directory to an existing directory called **/NASmount**: -``` - - -NASBOX:/data/yourshare /NASmount nfs -nfsvers=3,rsize=8192,wsize=8192,timeo=60,intr,auto 0 0 - -mount -t nfs -v NASBOX:/data/yourshare /NASmount - -``` -and then your directory tree could look like this: -``` -`/NASmount/home/user` -``` -So, by simply changing the **/etc/fstab** entry, you could quickly be hooked up to someone else's cloud. This, as they say, is left as an exercise for the re \ No newline at end of file diff --git a/sources/tech/20200316 How to test failed authentication attempts with test-driven development.md b/sources/tech/20200316 How to test failed authentication attempts with test-driven development.md deleted file mode 100644 index abe34d97e2..0000000000 --- a/sources/tech/20200316 How to test failed authentication attempts with test-driven development.md +++ /dev/null @@ -1,288 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (How to test failed authentication attempts with test-driven development) -[#]: via: (https://opensource.com/article/20/3/failed-authentication-attempts-tdd) -[#]: author: (Alex Bunardzic https://opensource.com/users/alex-bunardzic) - -How to test failed authentication attempts with test-driven development -====== -Mountebank makes it easier to test the "less happy path" in your code. -![Programming keyboard.][1] - -Testing often begins with what we hope happens. In my [previous article][2], I demonstrated how to virtualize a service you depend on when processing the "happy path" scenario (that is, testing the outcome of a successful login attempt). But we all know that software fails in spectacular and unexpected ways. Now's the time to take a closer look into how to process the "less happy paths": what happens when someone tries to log in with the wrong credentials? - -In the first article linked above, I walked through building a user authentication module. (Now is a good time to review that code and get it up and running.) This module does not do all the heavy lifting; it mostly relies on another service to do those tougher tasks—enable user registration, store the user accounts, and authenticate the users. The module will only be sending HTTP POST requests to this additional service's endpoint; in this case, **/api/v1/users/login**. - -What do you do if the service you're dependent on hasn't been built yet? This scenario creates a blockage. In the previous post, I explored how to remove that blockage by using service virtualization enabled by [mountebank][3], a powerful test environment. - -This article walks through the steps required to enable the processing of user authentication in cases when a user repeatedly attempts to log in. The third-party authentication service allows only three attempts to log in, after which it ceases to service the HTTP request arriving from the offending domain. - -### How to simulate repeat requests - -Mountebank makes it very easy to simulate a service that listens on a network port, matches the method and the path defined in the request, then handles it by sending back an HTTP response. To follow along, be sure to get mountebank running as we [did in the previous article][2]. As I explained there, these values are declared as JSONs that are posted to ****, mountebank's endpoint for processing authentication requests. - -But the challenge now is how to simulate the scenario when the HTTP request keeps hitting the same endpoint from the same domain. This is necessary to simulate a user who submits invalid credentials (username and password), is informed they are invalid, tries different credentials, and is repeatedly rejected (or foolishly attempts to log in with the same credentials that failed on previous attempts). Eventually (in this case, after a third failed attempt), the user is barred from additional tries. - -Writing executable code to simulate such a scenario would have to model very elaborate processing. However, when using mountebank, this type of simulated processing is extremely simple to accomplish. It is done by creating a rolling buffer of responses, and mountebank responds in the order the buffer was created. Here is an example of one way to simulate repeat requests in mountebank: - - -``` -{ -    "port": 3001, -    "protocol": "http", -    "name": "authentication imposter", -    "stubs": [ -        { -            "predicates": [ -                { -                    "equals": { -                        "method": "post", -                        "path": "/api/v1/users/login" -                    } -                } -            ], -            "responses": [ -                { -                    "is": { -                        "statusCode": 200, -                        "body": "Successfully logged in." -                    } -                }, -                { -                    "is": { -                        "statusCode": 400, -                        "body": "Incorrect login. You have 2 more attempts left." -                    } -                }, -                { -                    "is": { -                        "statusCode": 400, -                        "body": "Incorrect login. You have 1 more attempt left." -                    } -                }, -                { -                    "is": { -                        "statusCode": 400, -                        "body": "Incorrect login. You have no more attempts left." -                    } -                } -            ] -        } -    ] -} -``` - -The rolling buffer is simply an unlimited collection of JSON responses where each response is represented with two key-value pairs: **statusCode** and **body**. In this case, four responses are defined. The first response is the happy path (i.e., user successfully logged in), and the remaining three responses represent failed use cases (i.e., wrong credentials result in status code 400 and corresponding error messages). - -### How to test repeat requests - -Modify the tests as follows: - - -``` -using System; -using Xunit; -using app; -namespace tests -{ -    public class UnitTest1 -    { -        Authenticate auth = [new][4] Authenticate(); -        [Fact] -        public void SuccessfulLogin() -        { -            var given = "valid credentials"; -            var expected = " Successfully logged in."; -            var actual= auth.Login(given); -            Assert.Equal(expected, actual); -        } -        [Fact] -        public void FirstFailedLogin() -        { -            var given = "invalid credentials"; -            var expected = "Incorrect login. You have 2 more attempts left."; -            var actual = auth.Login(given); -            Assert.Equal(expected, actual); -        } -        [Fact] -        public void SecondFailedLogin() -        { -            var given = “invalid credentials"; -            var expected = "Incorrect login. You have 1 more attempt left."; -            var actual = auth.Login(given); -            Assert.Equal(expected, actual); -        } -        [Fact] -        public void ThirdFailedLogin() -        { -            var given = " invalid credentials"; -            var expected = "Incorrect login. You have no more attempts left."; -            var actual = auth.Login(given); -            Assert.Equal(expected, actual); -        } -    } -} -``` - -Now, run the tests to confirm that your code still works: - -![Failed test][5] - -Whoa! The tests now all fail. Why? - -If you take a closer look, you'll see a revealing pattern: - -![Reason for failed test][6] - -Notice that ThirdFailedLogin is executed first, followed by the SuccessfulLogin, followed by FirstFailedLogin, followed by SecondFailedLogin. What's going on here? Why is the third test running before the first test? - -The testing framework ([xUnit][7]) is executing all tests in parallel, and the sequence of execution is unpredictable. You need tests to run in order, which means you cannot test these scenarios using the vanilla xUnit toolkit. - -### How to run tests in the right sequence - -To force your tests to run in a certain sequence that you define (instead of running in an unpredictable order), you need to extend the vanilla xUnit toolkit with the NuGet [Xunit.Extensions.Ordering][8] package. Install the package on the command line with: - - -``` -`$ dotnet add package Xunit.Extensions.Ordering --version 1.4.5` -``` - -or add it to your **tests.csproj** config file: - - -``` -`` -``` - -Once that's taken care of, make some modifications to your **./tests/UnitTests1.cs** file. Add these four lines at the beginning of your **UnitTests1.cs **file: - - -``` -using Xunit.Extensions.Ordering; -[assembly: CollectionBehavior(DisableTestParallelization = true)] -[assembly: TestCaseOrderer("Xunit.Extensions.Ordering.TestCaseOrderer", "Xunit.Extensions.Ordering")] -[assembly: TestCollectionOrderer("Xunit.Extensions.Ordering.CollectionOrderer", "Xunit.Extensions.Ordering")] -``` - -Now you can specify the order you want your tests to run. Initially, simulate the happy path (i.e., the **SuccessfulLogin()**) by annotating the test with: - - -``` -[Fact, Order(1)] -public void SuccessfulLogin() { -``` - -After you test a successful login, test the first failed login: - - -``` -[Fact, Order(2)] -public void FirstFailedLogin() -``` - -And so on. You can add the order of the test runs by simply adding the **Order(x)** (where **x** denotes the order you want the test to run) annotation to your Fact. - -This annotation guarantees that your tests will run in the exact order you want them to run, and now you can (finally!) completely test your integration scenario. - -The final version of your test is: - - -``` -using System; -using Xunit; -using app; -using Xunit.Extensions.Ordering; -[assembly: CollectionBehavior(DisableTestParallelization = true)] -[assembly: TestCaseOrderer("Xunit.Extensions.Ordering.TestCaseOrderer", "Xunit.Extensions.Ordering")] -[assembly: TestCollectionOrderer("Xunit.Extensions.Ordering.CollectionOrderer", "Xunit.Extensions.Ordering")] -namespace tests -{ -    public class UnitTest1 -    { -        Authenticate auth = [new][4] Authenticate(); -        [Fact, Order(1)] -        public void SuccessfulLogin() -        { -            var given = "[elon_musk@tesla.com][9]"; -            var expected = "Successfully logged in."; -            var actual= auth.Login(given); -            Assert.Equal(expected, actual); -        } -        [Fact, Order(2)] -        public void FirstFailedLogin() -        { -            var given = "[mickey@tesla.com][10]"; -            var expected = "Incorrect login. You have 2 more attempts left."; -            var actual = auth.Login(given); -            Assert.Equal(expected, actual); -        } -        [Fact, Order(3)] -        public void SecondFailedLogin() -        { -            var given = "[mickey@tesla.com][10]"; -            var expected = "Incorrect login. You have 1 more attempt left."; -            var actual = auth.Login(given); -            Assert.Equal(expected, actual); -        } -        [Fact, Order(4)] -        public void ThirdFailedLogin() -        { -            var given = "[mickey@tesla.com][10]"; -            var expected = "Incorrect login. You have no more attempts left."; -            var actual = auth.Login(given); -            Assert.Equal(expected, actual); -        } -    } -} -``` - -Run the test again—everything passes! - -![Passing test][11] - -### What are you testing exactly? - -This article has focused on test-driven development (TDD), but let's review it from another methodology, Extreme Programming (XP). XP defines two types of tests: - - 1. Programmer tests - 2. Customer tests - - - -So far, in this series of articles on TDD, I have focused on the first type of tests (i.e., programmer tests). In this and the previous article, I switched my lenses to examine the most efficient ways of doing customer tests. - -The important point is that programmer (or producer) tests are focused on precision work. We often refer to these precision tests as "micro tests," while others may call them "unit tests." Customer tests, on the other hand, are more focused on a bigger picture; we sometimes refer to them as "approximation tests" or "end-to-end tests." - -### Conclusion - -This article demonstrated how to write a suite of approximation tests that integrate several discrete steps and ensure that the code can handle all edge cases, including simulating the customer experience when repeatedly attempting to log in and failing to obtain the necessary clearance. This combination of TDD and tools like xUnit and mountebank can lead to well-tested and thus more reliable application development. - -In future articles, I'll look into other usages of mountebank for writing customer (or approximation) tests. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/3/failed-authentication-attempts-tdd - -作者:[Alex Bunardzic][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/alex-bunardzic -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/programming_keyboard_coding.png?itok=E0Vvam7A (Programming keyboard.) -[2]: https://opensource.com/article/20/3/service-virtualization-test-driven-development -[3]: http://www.mbtest.org/ -[4]: http://www.google.com/search?q=new+msdn.microsoft.com -[5]: https://opensource.com/sites/default/files/uploads/testfails_0.png (Failed test) -[6]: https://opensource.com/sites/default/files/uploads/failurepattern.png (Reason for failed test) -[7]: https://xunit.net/ -[8]: https://www.nuget.org/packages/Xunit.Extensions.Ordering/# -[9]: mailto:elon_musk@tesla.com -[10]: mailto:mickey@tesla.com -[11]: https://opensource.com/sites/default/files/uploads/testpasses.png (Passing test) diff --git a/sources/tech/20200320 Run a command on binary files with this script.md b/sources/tech/20200320 Run a command on binary files with this script.md deleted file mode 100644 index a01e3e2ef0..0000000000 --- a/sources/tech/20200320 Run a command on binary files with this script.md +++ /dev/null @@ -1,772 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Run a command on binary files with this script) -[#]: via: (https://opensource.com/article/20/3/run-binaries-script) -[#]: author: (Nick Clifton https://opensource.com/users/nickclifton) - -Run a command on binary files with this script -====== -Try this simple script to easily run a command on binary files -regardless of their packaging. -![Binary code on a computer screen][1] - -Examining files from the command-line is generally an easy thing to do. You just run the command you want, followed by a list of files to be examined. Dealing with binary files, however, is more complicated. These files are often packaged up into archives, tarballs, or other packaging formats. The run-on-binaries script provides a convenient way to run a command on a collection of files, regardless of how they are packaged. - -The invocation of the script is quite simple: - - -``` -`run-on-binaries ` -``` - -So, for example: - - -``` -`run-on-binaries /usr/bin/ls foo.rpm` -``` - -will list all of the files inside the **foo.rpm** file, while: - - -``` -`run-on-binaries /usr/bin/readelf -a libc.a` -``` - -will run the **readelf** program, with the **-a** command-line option, on all of the object files inside the **libc.a library**. - -If necessary, the script can be passed a file containing a list of other files to be processed, rather than specifying them on the command line—like this: - - -``` -`run-on-binaries --files-from=foo.lst /usr/bin/ps2ascii` -``` - -This will run the **ps2ascii** script on all of the files listed in **foo.lst**. (The files just need to be separated by white space. There can be multiple files on a single line if desired). - -Also, a skip list can be provided to stop the script from processing specified files: - - -``` -`run-on-binaries --skip-list=skip.lst /usr/bin/wc *` -``` - -This will run the **wc** program on all of the files in the current directory, except for those specified in **skip.lst**. - -The script does not recurse into directories, but this can be handled by combining it with the **find** command, like this: - - -``` -`find . -type f -exec run-on-binaries @ ;` -``` - -or - - -``` -`find . -type d -exec run-on-binaries @/* ;` -``` - -The only difference between these two invocations is that the second one only runs the target program once per directory, but gives it a long command-line of all of the files in the directory. - -Though convenient, the script is lacking in several areas. Right now, it does not examine the PATH environment variable to find the command that it is asked to run, so a full path must be provided. Also, the script ought to be able to handle recursion on its own, without needing help from the find command. - -The run-on-binaries script is part of the annobin package, which is available on Fedora. The sources for annobin can also be obtained from the git repository at . - -### The script - - -``` -#!/bin/bash - -# Script to run another script/program on the executables inside a given file. -# -# Created by Nick Clifton.  <[nickc@redhat.com][2]> -# Copyright (c) 2018 Red Hat. -# -# This 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, or (at your -# option) any later version. - -# It 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. -# -# Usage: -#   run-on-binaries-in [options] program [options-for-the-program] file(s) -# -# This script does not handle directories.  This is deliberate. -# It is intended that if recursion is needed then it will be -# invoked from find, like this: -# -#   find . -name "*.rpm" -exec run-on-binaries-in <script-to-run> {} \; - -version=1.0 - -help () -{ -  # The following exec goop is so that we don't have to manually -  # redirect every message to stderr in this function. -  exec 4>&1    # save stdout fd to fd #4 -  exec 1>&2    # redirect stdout to stderr - -  cat <<__EOM__ - -This is a shell script to run another script/program on one or more binary -files.  If the file(s) specified are archives of some kind (including rpms) -then the script/program is run on the binary executables inside the archive. - -Usage: $prog {options} program {options-for-the-program} files(s) - -  {options} are: -  -h         --help               Display this information and then exit. -  -v         --version            Report the version number of this script. -  -V         --verbose            Report on progress. -  -q         --quiet              Do not include the script name in the output. -  -i         --ignore             Silently ignore files that are not executables or archives. -  -p=<TEXT>  --prefix=<TEXT>      Prefix normal output with this string. -  -t=<DIR>   --tmpdir=<DIR>       Temporary directory to use when opening archives. -  -f=<FILE>  --files-from=<FILE>  Process files listed in <FILE>. -  -s=<FILE>  --skip-list=<FILE>   Skip any file listed in <FILE>. -  --                              Stop accumulating options. - -Examples: - -  $prog hardened foo.rpm -                              Runs the hardened script on the executable -                              files inside foo.rpm. - -  $prog check-abi -v fred.tar.xz -                              Runs the check-abi script on the decompressed -                              contents of the fred.tar.xz archive, passing the -                              -v option to check-abi as it does so.       - -  $prog -V -f=list.txt readelf -a -                              Runs the readelf program, with the -a option on -                              every file listed in the list.txt.  Describes -                              what is being done as it works. - -  $prog -v -- -fred -a jim -b bert -- -c harry -                              Runs the script "-fred" on the files jim, bert, -                              "-c" and harry.  Passes the options "-a" and -                              "-b" to the script (even when run on jim). -                              Reports the version of this script as well. - -__EOM__ -  exec 1>&4   # Copy stdout fd back from temporary save fd, #4 -} - -main () -{ -    init -    -    parse_args ${1+"$@"} - -    if [ $failed -eq 0 ]; -    then -        run_script_on_files -    fi - -    if [ $failed -ne 0 ]; -    then -        exit 1 -    else -        exit 0 -    fi -} - -report () -{ -    if [ $quiet -eq 0 ]; -    then -        echo -n $prog": " -    fi -    -    echo ${1+"$@"} -} - -ice () -{ -    report "Internal error: " ${1+"$@"} -    exit 1 -} - -fail () -{ -    report "Failure:" ${1+"$@"} -    failed=1 -} - -verbose () -{ -    if [ $verbose -ne 0 ] -    then -        report ${1+"$@"} -    fi -} - -# Initialise global variables. -init () -{ -    files[0]="";   -    # num_files is the number of files to be scanned. -    # files[0] is the script to run on the files. -    num_files=0; - -    script="" -    script_opts=""; - -    prog_opts="-i" - -    tmpdir=/dev/shm -    prefix=""     -    files_from="" -    skip_list="" - -    failed=0 -    verbose=0 -    ignore=0 -    quiet=0 -} - -# Parse our command line -parse_args () -{ -    abs_prog=$0; -    prog=`basename $abs_prog`; - -    # Locate any additional command line switches -    # Likewise accumulate non-switches to the files list. -    while [ $# -gt 0 ] -    do -        optname="`echo $1 | sed 's,=.*,,'`" -        optarg="`echo $1 | sed 's,^[^=]*=,,'`" -        case "$optname" in -            -v | --version) -                report "version: $version" -                ;; -            -h | --help) -                help -                exit 0 -                ;; -            -q | --quiet) -                quiet=1; -                prog_opts="$prog_opts -q" -                ;; -            -V | --verbose) -                if [ $verbose -eq 1 ]; -                then -                    # This has the effect of cancelling out the prog_opts="-i" -                    # in the init function, so that recursive invocations of this -                    # script will complain about unrecognised file types. -                    if [ $quiet -eq 0 ]; -                    then -                        prog_opts="-V -V" -                    else -                        prog_opts="-V -V -q" -                    fi -                else -                    verbose=1; -                    prog_opts="$prog_opts -V" -                fi -                ;; -            -i | --ignore) -                ignore=1 -                ;; -            -t | --tmpdir) -                if test "x$optarg" = "x$optname" ; -                then -                    shift -                    if [ $# -eq 0 ] -                    then -                        fail "$optname needs a directory name" -                    else -                        tmpdir=$1 -                    fi -                else -                    tmpdir="$optarg" -                fi -                ;; -            -p | --prefix) -                if test "x$optarg" = "x$optname" ; -                then -                    shift -                    if [ $# -eq 0 ] -                    then -                        fail "$optname needs a string argument" -                    else -                        prefix=$1 -                    fi -                else -                    prefix="$optarg" -                fi -                ;; -            -f | --files_from) -                if test "x$optarg" = "x$optname" ; -                then -                    shift -                    if [ $# -eq 0 ] -                    then -                        fail "$optname needs a file name" -                    else -                        files_from=$1 -                    fi -                else -                    files_from="$optarg" -                fi -                ;; -            -            -s | --skip-list) -                if test "x$optarg" = "x$optname" ; -                then -                    shift -                    if [ $# -eq 0 ] -                    then -                        fail "$optname needs a file name" -                    else -                        skip_list=$1 -                    fi -                else -                    skip_list="$optarg" -                fi -                ;; -            -            --) -                shift -                break; -                ;; -            --*) -                fail "unrecognised option: $1" -                help -                ;; -            *) -                script="$1"; -                if ! [ -a "$script" ] -                then -                    fail "$script: program/script not found" -                elif  ! [ -x "$script" ] -                then -                    fail "$script: program/script not executable" -                fi -                # After we have seen the first non-option we stop -                # accumulating options for this script and instead -                # start accumulating options for the script to be -                # run. -                shift -                break; -                ;; -        esac -        shift -    done - -    # Read in the contents of the --file-from list, if specified. -    if test "x$files_from" != "x" ; -    then -        if ! [ -a "$files_from" ] -        then -            fail "$files_from: file not found" -        elif ! [ -r "$files_from" ] -        then -            fail "$files_from: file not readable" -        else -            eval 'files=($(cat $files_from))' -            num_files=${#files[*]} -        fi -    fi -    skip_files[foo]=bar - -    # Check that the skip list exists, if specified. -    if test "x$skip_list" != "x" ; -    then -        if ! [ -a "$skip_list" ] -        then -            fail "$skip_list: file not found" -        elif ! [ -r "$skip_list" ] -        then -            fail "$files_from: file not readable" -        fi -    fi - -    # Accumulate any remaining arguments separating out the arguments -    # for the script from the names of the files to scan. -    while [ $# -gt 0 ] -    do -        optname="`echo $1 | sed 's,=.*,,'`" -        optarg="`echo $1 | sed 's,^[^=]*=,,'`" -        case "$optname" in -            --) -                shift -                break; -                ;; -            -*) -                script_opts="$script_opts $1" -                ;; -            *) -                files[$num_files]="$1"; -                let "num_files++" -                ;; -        esac -        shift -    done - -    # Accumulate any remaining arguments without processing them. -    while [ $# -gt 0 ] -    do -        files[$num_files]="$1"; -        let "num_files++"; -        shift -    done - -    if [ $num_files -gt 0 ]; -    then -        # Remember that we are counting from zero not one. -        let "num_files--" -    else -        fail "Must specify a program/script and at least one file to scan." -    fi -} - -run_script_on_files () -{ -    local i - -    i=0; -    while [ $i -le $num_files ] -    do -        run_on_file i -        let "i++" -    done -} - -# syntax: run <command> [<args>] -#  If being verbose report the command being run, and -#   the directory in which it is run. -run () -{ -  local where - -  if test "x$1" = "x" ; -  then -    fail "run() called without an argument." -  fi - -  verbose "  Running: ${1+$@}" - -  ${1+$@} -} - -decompress () -{ -    local abs_file decompressor decomp_args orig_file base_file - -    # Paranoia checks - the user should never encounter these. -    if test "x$4" = "x" ; -    then -        ice "decompress called with too few arguments" -    fi -    if test "x$5" != "x" ; -    then -        ice "decompress called with too many arguments" -    fi - -    abs_file=$1 -    decompressor=$2 -    decomp_args=$3 -    orig_file=$4 - -    base_file=`basename $abs_file` - -    run cp $abs_file $base_file -    run $decompressor $decomp_args $base_file -    if [ $? != 0 ]; -    then -        fail "$orig_file: Unable to decompress" -    fi - -    rm -f $base_file -} - -run_on_file () -{ -    local file - -    # Paranoia checks - the user should never encounter these. -    if test "x$1" = "x" ; -    then -        ice "scan_file called without an argument" -    fi -    if test "x$2" != "x" ; -    then -        ice "scan_file called with too many arguments" -    fi - -    # Use quotes when accessing files in order to preserve -    # any spaces that might be in the directory name. -    file="${files[$1]}"; - -    # Catch names that start with a dash - they might confuse readelf -    if test "x${file:0:1}" = "x-" ; -    then -        file="./$file" -    fi - -    # See if we should skip this file. -    if test "x$skip_list" != "x" ; -    then -        # This regexp looks for $file being the first text on a line, either -        # on its own, or with additional text separated from it by at least -        # one space character.  So searching for "fred" in the following gives: -        #  fr         <\- no match -        #  fred       <\- match -        #  fredjim    <\- no match -        #  fred bert  <\- match -        regexp="^$file[^[:graph:]]*" -        grep --silent --regexp="$regexp" $skip_list -        if [ $? = 0 ]; -        then -            verbose "$file: skipping" -            return -        fi -    fi - -    # Check the file. -    if ! [ -a "$file" ] -    then -        fail "$file: file not found" -        return -    elif ! [ -r "$file" ] -    then -        if [ $ignore -eq 0 ]; -        then -            fail "$file: not readable" -        fi -        return -    elif [ -d "$file" ] -    then -        if [ $ignore -eq 0 ]; -        then -            if [ $num_files -gt 1 ]; -            then -                verbose "$file: skipping - it is a directory" -            else -                report "$file: skipping - it is a directory" -            fi -        fi -        return -    elif ! [ -f "$file" ] -    then -        if [ $ignore -eq 0 ]; -        then -            fail "$file: not an ordinary file" -        fi -        return -    fi - -    file_type=`file -b $file` -    case "$file_type" in -        *"ELF "*) -            verbose "$file: ELF format - running script/program" -            if test "x$prefix" != "x" ; -            then -                report "$prefix:" -            fi -            run $script $script_opts $file -            return -            ;; -        "RPM "*) -            verbose "$file: RPM format." -            ;; -        *" cpio "*) -            verbose "$file: CPIO format." -            ;; -        *"tar "*) -            verbose "$file: TAR archive." -            ;; -        *"Zip archive"*) -            verbose "$file: ZIP archive." -            ;; -        *"ar archive"*) -            verbose "$file: AR archive." -            ;; -        *"bzip2 compressed data"*) -            verbose "$file: contains bzip2 compressed data" -            ;; -        *"gzip compressed data"*) -            verbose "$file: contains gzip compressed data" -            ;; -        *"lzip compressed data"*) -            verbose "$file: contains lzip compressed data" -            ;; -        *"XZ compressed data"*) -            verbose "$file: contains xz compressed data" -            ;; -        *"shell script"* | *"ASCII text"*) -            if [ $ignore -eq 0 ]; -            then -                fail "$file: test/scripts cannot be scanned." -            fi -            return -            ;; -        *"symbolic link"*) -            if [ $ignore -eq 0 ]; -            then -                # FIXME: We ought to be able to follow symbolic links -                fail "$file: symbolic links are not followed." -            fi -            return -            ;; -        *) -            if [ $ignore -eq 0 ]; -            then -                fail "$file: Unsupported file type: $file_type" -            fi -            return -            ;; -    esac -    -    # We now know that we will need a temporary directory -    # so create one, and create paths to the file and scripts. -    if test "x${file:0:1}" = "x/" ; -    then -        abs_file=$file -    else -        abs_file="$PWD/$file" -    fi -    -    if test "x${abs_prog:0:1}" != "x/" ; -    then -        abs_prog="$PWD/$abs_prog" -    fi - -    if test "x${script:0:1}" = "x/" ; -    then -        abs_script=$script -    else -        abs_script="$PWD/$script" -    fi -    -    tmp_root=$tmpdir/delme.run.on.binary -    run mkdir -p "$tmp_root/$file" - -    verbose "  Changing to directory: $tmp_root/$file" -    pushd "$tmp_root/$file" > /dev/null -    if [ $? != 0 ]; -    then -        fail "Unable to change to temporary directory: $tmp_root/$file" -        return -    fi -                          -    # Run the file type switch again, although this time we do not need to -    # check for unrecognised types.  (But we do, just in case...) -    # Note since are transforming the file we re-invoke the run-on-binaries -    # script on the decoded contents.  This allows for archives that contain -    # other archives, and so on.  We normally pass the -i option to the -    # invoked script so that it will not complain about unrecognised files in -    # the decoded archive, although we do not do this when running in very -    # verbose mode.  We also pass an extended -t option to ensure that any -    # sub-archives are extracted into a unique directory tree. - -    case "$file_type" in -        "RPM "*) -            # The output redirect confuses the run function... -            verbose "  Running: rpm2cpio $abs_file > delme.cpio" -            rpm2cpio $abs_file > delme.cpio -            if [ $? != 0 ]; -            then -                fail "$file: Unable to extract from rpm archive" -            else -                # Save time - run cpio now. -                run cpio --quiet --extract --make-directories --file delme.cpio -                if [ $? != 0 ]; -                then -                    fail "$file: Unable to extract files from cpio archive" -                fi -                run rm -f delme.cpio -            fi -            ;; - -        *" cpio "*) -            run cpio --quiet --extract --make-directories --file=$abs_file -            if [ $? != 0 ]; -            then -                fail "$file: Unable to extract files from cpio archive" -            fi -            ;; - -        *"tar "*) -            run tar --extract --file=$abs_file -            if [ $? != 0 ]; -            then -                fail "$file: Unable to extract files from tarball" -            fi -            ;; - -        *"ar archive"*) -            run ar x $abs_file -            if [ $? != 0 ]; -            then -                fail "$file: Unable to extract files from ar archive" -            fi -            ;; - -        *"Zip archive"*) -            decompress $abs_file unzip "-q" $file -            ;; -        *"bzip2 compressed data"*) -            decompress $abs_file bzip2 "--quiet --decompress" $file -            ;; -        *"gzip compressed data"*) -            decompress $abs_file gzip "--quiet --decompress" $file -            ;; -        *"lzip compressed data"*) -            decompress $abs_file lzip "--quiet --decompress" $file -            ;; -        *"XZ compressed data"*) -            decompress $abs_file xz "--quiet --decompress" $file -            ;; -        *) -            ice "unhandled file type: $file_type" -            ;; -     esac - -    if [ $failed -eq 0 ]; -    then -        # Now scan the file(s) created in the previous step. -        run find . -type f -execdir $abs_prog $prog_opts -t=$tmp_root/$file -p=$file $abs_script $script_opts {} + -    fi - -    verbose "  Deleting temporary directory: $tmp_root" -    rm -fr $tmp_root - -    verbose "  Return to previous directory" -    popd > /dev/null -} - -# Invoke main -main ${1+"$@"} -``` - -  - -Git has extensions for handling binary blobs such as multimedia files, so today we will learn how... - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/3/run-binaries-script - -作者:[Nick Clifton][a] -选题:[lujun9972][b] -译者:[rakino](https://github.com/rakino) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/nickclifton -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/binary_code_computer_screen.png?itok=7IzHK1nn (Binary code on a computer screen) -[2]: mailto:nickc@redhat.com diff --git a/sources/tech/20200326 How to detect outdated Kubernetes APIs.md b/sources/tech/20200326 How to detect outdated Kubernetes APIs.md deleted file mode 100644 index a45a9b2add..0000000000 --- a/sources/tech/20200326 How to detect outdated Kubernetes APIs.md +++ /dev/null @@ -1,234 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (How to detect outdated Kubernetes APIs) -[#]: via: (https://opensource.com/article/20/3/deprek8) -[#]: author: (Tyler Auerbeck https://opensource.com/users/tylerauerbeck) - -How to detect outdated Kubernetes APIs -====== -Deprek8 and Conftest alert you about deprecated APIs that threaten to -slip into your codebase. -![Ship captain sailing the Kubernetes seas][1] - -Recently, deprecated APIs have been wreaking havoc on everyone's [Kubernetes][2] manifests. Why is this happening?!? It's because the objects that we've come to know and love are moving on to their new homes. And it's not like this happened overnight. Deprecation warnings have been in place for quite a few releases now. We've all just been lazy and thought the day would never come. Well, _it's here_! - -So, maybe it caught up to us this time. But we'll be prepared next time, right?!? Yeah, that's what we said last time. But what if we could put something in place that makes sure that this doesn't happen? - -### What is Deprek8? - -[Deprek8][3] is a set of [Open Policy Agent][4] (OPA) policies that allow you to check your repository for deprecated API versions. These policies offer a way to provide warnings and errors when something is in the process of being or has already been deprecated. But **Deprek8** is just a set of policies that define what to watch for. How do you actually actively use these policies in order to monitor for deprecations? - -There are a number of ways and tools that can do this; one way is to use the OPA Deprek8 policy. - -### What is the OPA Deprek8 policy? - -OPA is "an open source, general-purpose policy engine that enables unified, context-aware policy enforcement." In other words, OPA provides a means of establishing and enforcing a set of policies based upon a policy file. The policies are defined in a file (or set of files) using the [Rego query language][5]. This use case won't necessarily rely on the OPA application, but more specifically, it uses this query language to do the heavy lifting. By using Rego, you can check whether various manifests match certain criteria and then either warn or error them out based on your definition. For example, in Kubernetes 1.16, the Deployment object can no longer be served from the **extensions/v1beta1 apiVersion**. So in your .rego file, you could have something like: - - -``` -_deny = msg { -  resources := ["Deployment"] -  input.apiVersion == "extensions/v1beta1" -  input.kind == resources[_] -  msg := sprintf("%s/%s: API extensions/v1beta1 for %s is no longer served by default, use apps/v1 instead.", [input.kind, input.metadata.name, input.kind]) -} -``` - -This would alert that you have a deprecated manifest and print a message like: - -> Deployment/myDeployment: API extensions/v1beta1 for Deployment is no longer served by default, use apps/v1 instead. - -That's great! This is exactly what you need in order to avoid having old manifests lying around. But these are just the policies; you need something that will check these policies and put them into action. - -### Conftest - -This is where [Conftest][6] comes in. Conftest is a utility that allows you to put Rego policies into action against any number of configuration files. According to the repo, Conftest currently supports: - - -``` - - YAML - - JSON - - INI - - TOML - - HOCON - - HCL - - CUE - - Dockerfile - - HCL2 (Experimental) - - EDN - - VCL - - XML -``` - -It has some fairly strict defaults (i.e., expecting policy files to be in certain locations), but they can be overridden with the appropriate flags if you have a layout that you prefer. If you want to know more about those specifics, please consult the [documentation][7] in the repository. - -For example, you can run any policy file on Conftest with a command like: - - -``` -`helm template --set podSecurityPolicy.enabled=true --set server.ingress.enabled=true . | conftest -p mypolicy.rego -` -``` - -This would generate the appropriate output from a Helm template and pipe it directly to the Conftest utility. Conftest inspects that output against any policies defined in the **mypolicy.rego** file and then gives any appropriate warnings or errors for objects that match against those policies. You can, of course, swap out any templating tooling of your choice, or you can feed specific files directly to the Conftest tool. - -So now you have the tools to set your policies and enforce them against your configuration files. But how do you tie these two things together? Better yet: How do you automate this process to continuously monitor the codebase to make sure you never fall behind the deprecation line again? - -### Using Git to run checks - -There are many methods and tools to run checks against code. By adding similar steps to your continuous integration (CI) tooling (e.g., Jenkins, Tekton, etc.), you can accomplish the same goal. In this very basic use case, I used [GitHub Actions][8], a new feature of GitHub repositories. - -GitHub Actions allows you to automate your entire workflow, so you don't have to sit in front of your keyboard and hack all of this together. With Actions, you can string together any number of steps into a workflow (or multiple workflows) by either rolling your own Actions if you're doing something custom or, in most cases, using something that already exists in the [Marketplace][9]. Luckily, others have provided Actions to do the things you need to do for this example, so you can lean on the community's expertise to pull your workflow together. - -As described in the steps above, the workflow looks something like: - - 1. Retrieve the Deprek8 policy you need and store it somewhere for later use. - 2. Run Conftest against the appropriate files/charts with the policy file you grabbed in step 1. - - - -What does this boil down to? Well, all you really need to do is to use curl to pull your policy file and then run it through Conftest after pointing to your code, using the [curl][10] and [Conftest][11] Actions. Since these Actions already exist, you don't need to write any custom code! And as I'm sure you can tell by the names, they allow you to run the associated commands without having to do any custom work to pre-process anything or pull down any binaries. - -Now that you have the Actions you need to use, how do you pull them together? This is where your workflow comes into play. While Actions are the pieces of code that get things done, they're useless without a way to string them together so that they can be triggered by some event. A GitHub Action workflow will look something like this: - - -``` -name: Some Awesome Workflow Name -on: An Event That Triggers Our Workflow -jobs: -  awesome-job-name: -    runs-on: ubuntu-latest -    steps: -      - uses: actions/checkout@master -      - name: awesome-step-name -        uses: someorg/someaction@version -        with: -          args: some args that I might pass to someaction -``` - -Now you have a workflow that has multiple steps, can be triggered by a specific GitHub event, and can be passed a set of parameters (if that is applicable to that specific Action). This example is _extremely basic_. But luckily, the workflow you're trying to put together is equally simple. This shouldn't be taken as a comprehensive example of a GitHub Action, as there are many more complicated (and elegant) things you can do. If you're interested in learning more, take a look at the [GitHub Actions documentation][12]. - -Now that you have an idea of what a workflow looks like and know what Actions you're interested in using, take a run at plugging the two together. For this example, you want to make sure that whenever your code is updated, it's checked to make sure it's not using any deprecated APIs. - -First, rig up your workflow with some names and the events that you want to trigger off of. Give your workflow and job a useful name that will help you identify it (and what it does). - - -``` -name: API Deprecation Check -on: pull_request, push -jobs: - deprecation-check: -``` - -Next, you need to tell your workflow that you want to trigger these Actions based on any **pull_request** or **push** that happens to this repository because these are the two main events that get new code into a repository. You can do this by utilizing the **on** keyword. - - -``` -name: API Deprecation Check -on: pull_request, push -jobs: -  deprecation-check: -    runs-on: ubuntu-latest -    steps: -      - uses: actions/checkout@master -``` - -Then, add where you want these Actions to run and how the Action can get the code. You can tell the Action where to run by using the **runs-on** keyword. You have a few options here: Windows, Mac, or Ubuntu. In most cases, using Ubuntu is fine, as you'll frequently rely on Actions that run inside their own container (versus running on the base OS that you define here). It's also very important to understand that an Action does not check out code by default. When you need to do something that interacts with your code, make sure to use the Action **actions/checkout**. When this is included, your code will be available within your Action, and you can pass that through to the next step in your workflow. - - -``` -name: API Deprecation Check -on: pull_request, push -name: API Deprecation Check -jobs: -  deprecation-check: -    runs-on: ubuntu-latest -    steps: -      - uses: actions/checkout@master -      - name: curl -        uses: wei/curl@master -        with: -          args: > /github/home/deprek8.rego -``` - -Now that your code is checked out, you can start preparing to do something with it. As mentioned, before you can check code for deprecations, you first need the file that contains the policies that you want to check for, so just retrieve the file using the **curl** Action. This is a fairly straightforward Action, in that it accepts whatever parameters you would normally pass into the curl command. If you were doing something more complicated, this is where you could pass in things like specific HTTP Actions, headers, etc. However, in this case, you're just trying to retrieve a file, so the only thing you need to pass to your Action is the URL you want to retrieve (in this case, the one that contains your raw policy file) and then tell it where you want to write that file. In this case, you're going to have it write to **/github/home**. Why? It's because this filesystem persists between steps and will allow you to use the policy file within this next step. - - -``` -name: API Deprecation Check -on: pull_request, push -jobs: -  deprecation-check: -    runs-on: ubuntu-latest -    steps: -      - uses: actions/checkout@master -      - name: curl -        uses: wei/curl@master -        with: -          args: > /github/home/deprek8.rego -      - name: Check helm chart for deprecation -        uses: instrumenta/conftest-action/helm@master -        with: -          chart: nginx-test -          policy: /github/home/deprek8.rego -``` - -Now that you have your policy file, it's just a matter of running it against the code via **conftest**. Similar to the **curl** Action, the **conftest** Action just expects a series of parameters to understand how it should run against the code. In the example above, it runs against a Helm chart, but it can run against a specific file (or set of files) by changing the **uses** value to **instrumenta/[conftest-action@master][13]**. Just point to the path where your chart sits in the repository and then provide the path to your policy file (specified in the previous step). Once you have all of this together, you have a complete workflow. But what does this look like (assuming there's some bad code in your Helm chart)? To find out, take a look at the [example repository][14]. - -In the Nginx Helm chart, you'll notice that one of the templates is a [statefulset][15]. You may also notice that the apiVersion the StatefulSet is using is **apps/v1beta1**. This API was deprecated in Kubernetes 1.16 and is now hosted in **apps/v1**. So when your GitHub Actions workflow runs, it should detect this issue and serve an error like: - - -``` -FAIL - StatefulSetf/web: API apps/v1beta1 is no longer served by default, use apps/v1 instead. -Error: plugin "conftest" exited with error -##[error]Docker run failed with exit code 1 -``` - -The Action indicates there is something wrong and then fails the rest of the Action. You can see the [full workflow][16] if you are interested. - -### Wrapping up - -This workflow will save some future heartache by alerting you to any deprecated APIs that slip into your codebase. To be clear, this is an _alerting_ mechanism. This won't prevent you from merging bad code into your codebase. But, as long as you pay attention, you should be completely aware prior to (or just after) merging problematic code. - -Where do you go from here? Well, there are a few things to keep in mind. Currently, Deprek8 is up to date as of Kubernetes 1.16. If you're interested in more recent versions, I'm sure Deprek8 would be happy to accept your [pull request][3]. - -The other shortcoming of this method is that the **conftest** and GitHub Actions are a bit limited in that they only allow you to point at specific files or a single chart at a time. What if you want to point at multiple directories of manifests or have multiple charts inside your repository? Currently, the only way to get around that is to either list out every single file you're interested in (in the case of having multiple charts) or have multiple steps inside your workflow. Other scenarios could become problematic, like other templating engines that require some custom logic to pair the parameters and template files together. But a simple workaround for that could be to have a step in your workflow that pulls down Conftest along with a tiny inline script to loop through some of this. I'm sure there are more elegant solutions (and if you come up with one, I'm sure these projects would be more than happy to take a look at your PR). - -Regardless, you now have a mechanism that should allow you to sleep a bit easier when checking in your code! And hopefully, this method will help you build even more robust workflows to protect your code. - -* * * - -_This was originally published in [Tyler Auerbeck's GitHub repository][17] and is reposted, with edits, with permission._ - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/3/deprek8 - -作者:[Tyler Auerbeck][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/tylerauerbeck -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/ship_captain_devops_kubernetes_steer.png?itok=LAHfIpek (Ship captain sailing the Kubernetes seas) -[2]: https://opensource.com/resources/what-is-kubernetes -[3]: https://github.com/naquada/deprek8 -[4]: https://github.com/open-policy-agent/opa -[5]: https://blog.openpolicyagent.org/opas-full-stack-policy-language-caeaadb1e077 -[6]: https://github.com/instrumenta/conftest -[7]: https://github.com/instrumenta/conftest/tree/master/docs -[8]: https://github.com/features/actions -[9]: https://github.com/marketplace?type=actions -[10]: https://github.com/marketplace/actions/github-action-for-curl -[11]: https://github.com/instrumenta/conftest-action -[12]: https://help.github.com/en/actions -[13]: mailto:conftest-action@master -[14]: https://github.com/tylerauerbeck/deprek8-example -[15]: https://raw.githubusercontent.com/tylerauerbeck/deprek8-example/master/nginx-test/templates/statefulset.yaml -[16]: https://github.com/tylerauerbeck/deprek8-example/runs/426774566?check_suite_focus=true -[17]: https://github.com/tylerauerbeck/writing/blob/master/opa/deprek8.md diff --git a/sources/tech/20200327 KubeCF Is What DevOps Wanted- Marrying Cloud Foundry with Kubernetes.md b/sources/tech/20200327 KubeCF Is What DevOps Wanted- Marrying Cloud Foundry with Kubernetes.md deleted file mode 100644 index f306d94bc7..0000000000 --- a/sources/tech/20200327 KubeCF Is What DevOps Wanted- Marrying Cloud Foundry with Kubernetes.md +++ /dev/null @@ -1,79 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (KubeCF Is What DevOps Wanted: Marrying Cloud Foundry with Kubernetes ) -[#]: via: (https://www.linux.com/articles/kubecf-is-what-devops-wanted-marrying-cloud-foundry-with-kubernetes/) -[#]: author: (Swapnil Bhartiya https://www.linux.com/author/swapnil/) - -KubeCF Is What DevOps Wanted: Marrying Cloud Foundry with Kubernetes  -====== - -[![][1]][2] - -There are times when solutions that  seem to compete against each other turn out to be complementary. [This is exactly what happened with Cloud Foundry and Kubernetes. ][3] - -“Enterprises have moved on from the debate around Cloud Foundry Application Runtime or PaaS experience versus Kubernetes-based experience, and have opted to adopt both. The PaaS experience that Cloud Foundry offers is about optimizing developer time by allowing them to focus on business problems. Let them focus on the app they’re trying to build, not on the plumbing underneath it,” says Chip Childers, CTO at Cloud Foundry ​Foundation. - -“There are plenty of use cases that don’t fit into a PaaS-style architecture. If you look at the breadth of architectures that a typical enterprise deals with, there are tons of applications that you need to just wrap the thing in a container and operate it that way,” he says. - -**Integrating Cloud Foundry and Kubernetes ** - -To incorporate Kubernetes into the Cloud Foundry architecture so Cloud Foundry users can use Kubernetes as an alternative to Diego/Garden to orchestrate application container instances, Cloud Foundry Foundation kickstarted an initiative called [Project Eirini][4]. - -Similarly, [Project Quarks][5] is another incubating effort within the Cloud Foundry Foundation that is focused on packaging the Cloud Foundry Application Runtime as a set of containers instead of virtual machines, enabling easier deployment to Kubernetes. - -“Project Quarks took some code from SUSE called Fizzle. It would take the type of release artifact that our project teams were generally releasing for their component of the system, and work it into a usable Docker image. Then they would use Helm and some scripts to deploy that into Kubernetes,” said Childers. - -There was, however, one crucial piece of the jigsaw missing. - -“There was this code that SUSE had been working on. It was the basis of the SUSE product called SCF (SUSE Cloud Foundry). SCF became [KubeCF][6]. It creates a Kubernetes native distribution of Cloud Foundry,” reveals Childers. - -KubeCF recently hit its 1.0 release. So, where does KubeCF go from here? - -“Presenty, we can look at it as the easiest path to a Kubernetes-native Cloud Foundry for pure open search users. There are some other efforts that are happening in parallel that are taking a look at each component of the Cloud Foundry architecture. Project architects are working towards allowing people to take KubeCF, deploy the whole system to Kubernetes, and take advantage of the simplicity that gets enabled as code gets modified,” says Childers. - -**Developers First: Ensuring Seamless UX** - -One of the strengths of the Cloud Foundry community is that it has always offered a distribution. There is still a distribution called CF deployment, which is based on a VM-centric architecture that uses the Cloud Foundry BOSH platform to orchestrate infrastructures and service environments (or virtualized environments like V-sphere) to deploy VMs and then run the system on top of it. - -However, distribution also entails members of the ecosystem packaging it or dictating with their own offerings. In such a scenario, how can developers expect consistency across the distros? - -“The commonality between both upstream releases — the CF deployment and KubeCF — lies in the components that they sew together to create the Cloud Foundry platform. The Cloud Foundry Platform certification continues to be based on the idea that a certified distribution uses those components in an unmodified way, and integrates them to create that developer experience,” Childers explains. - -“So, regardless of whether you’re deploying to Kubernetes or you’re deploying to virtual machines, regardless of the certified vendor that you use, or if you use upstream distributions, you should have that same developer experience. That’s what Platform Certification ensures,” he says. - -Operational consistency is less a concern for the ecosystem and the community because many of these providers are offering it as a service. “Those that do it as subscription-based software delivery have a lot of tooling around operations that’s specific to them plus all of the other values that they bring together,” Childers avers. - -**Evolution Unabated** - -The KubeCF distribution has finally put the debate of ‘Do I use Kubernetes or do I use Cloud Foundry?’ to rest. - -“The answer should’ve always been ‘You use both.’ The architecture fits one on top of the other very nicely, and overcomes the concerns of dual stacks,” says Childers. - -With the ‘either-or’ debate over, Chip intends to further evolve this architecture, thereby offering an enormous amount of value to enterprises trying to deal with container-centric infrastructure management and developer productivity. - -“We’ve completely re-converged as an ecosystem around embracing the Kubernetes-based infrastructure as being the most popular and rising approach. We’ve been evolving this architecture as a community for years now,” he says. - -“There are huge engineering and commercial teams supporting Kubernetes. VMware has an enormous investment in Kubernetes, and it continues to increase that investment. With the acquisition of Pivotal, VMware also has a huge amount of investment in Cloud Foundry. It’s working aggressively on the mission of bringing the two together. We see the same traction with SAP, IBM, and SUSE, which presents a lot of opportunities for everybody,” adds Childers. - --------------------------------------------------------------------------------- - -via: https://www.linux.com/articles/kubecf-is-what-devops-wanted-marrying-cloud-foundry-with-kubernetes/ - -作者:[Swapnil Bhartiya][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://www.linux.com/author/swapnil/ -[b]: https://github.com/lujun9972 -[1]: https://www.linux.com/wp-content/uploads/2020/03/color-3580779_1920-1068x667.jpg (color-3580779_1920) -[2]: https://www.linux.com/wp-content/uploads/2020/03/color-3580779_1920.jpg -[3]: https://www.tfir.io/kubecf-a-kubernetes-native-distribution-of-cloud-foundry-chip-childers-cto-cloud-foundry-%e2%80%8bfoundation/ -[4]: https://www.cloudfoundry.org/project-eirini/ -[5]: https://www.cloudfoundry.org/project-quarks/ -[6]: https://github.com/cloudfoundry-incubator/kubecf diff --git a/sources/tech/20200328 Open source fights against COVID-19, Google-s new security tool written in Python, and more open source news.md b/sources/tech/20200328 Open source fights against COVID-19, Google-s new security tool written in Python, and more open source news.md deleted file mode 100644 index dce9c83a0e..0000000000 --- a/sources/tech/20200328 Open source fights against COVID-19, Google-s new security tool written in Python, and more open source news.md +++ /dev/null @@ -1,82 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Open source fights against COVID-19, Google's new security tool written in Python, and more open source news) -[#]: via: (https://opensource.com/article/20/3/news-march-28) -[#]: author: (Scott Nesbitt https://opensource.com/users/scottnesbitt) - -Open source fights against COVID-19, Google's new security tool written in Python, and more open source news -====== -Catch up on the biggest open source headlines from the past two weeks. -![][1] - -In this edition of our open source news roundup, we take a look open source solutions for COVID-19, Google's new security tool, code cleanup software from Uber, and more! - -### Using open source in the fight against COVID-19 - -When COVID-19 started its march around the world, open source [stepped up][2] to try to help stop it. That includes using open data to [create tracking dashboards and apps][3], designing ventilators, and developing protective gear. - -Scientists at the University of Waterloo in Canada have teamed with artificial intelligence firm DarwinAI to create an open source tool "[to identify signs of Covid-19 in chest x-rays][4]." Called COVID-Net, it's neural network "that is particularly good at recognizing images." The dataset the researchers are using is [available on GitHub][5], which includes a link the software. - -Additionally, many [open source hardware projects][6] are underway to expedite the search for a cure.  - -### Google releases tool to fight USB keystroke injection attacks - -One of the sneakiest and potentially most malicious ways to hack a computer is a USB keystroke injection attack. Using a compromised USB device connected to a computer, a hacker can run commands without you even noticing. Google's making it easier for Linux users to fight back against these kinds of attacks by releasing [an open source detection tool][7]. - -Called USB Keystroke Injection Protection, the tool detects "if the keystrokes have been made without human involvement". It does that by measuring "the timing of keystrokes coming from connected USB devices." Sebastian Neuner of Google's Information Security Engineering Team said that while the USB Keystroke Injection Protection tool isn't the last word in defense against these kinds of attacks, but offers "another layer of protection and to defend a user sitting in front of their unlocked machine by them seeing the attack happening." - -You can find the Python source code for the tool [on GitHub][8]. - -### Uber makes code deletion tool open source - -As applications get bigger, they often contain code that's either no longer used or which is obsolete. That added code make software more difficult to maintain. To help solve the problem of quickly finding that redundant code, Uber recently [open sourced a tool called Pirhana][9]. - -Pirhana scans code for [feature flags][10], looking for ones that are no longer used. The software then deletes the unused flags from the code. At the moment, Pirhana works with software written in the Objective-C, Swift, and Java languages. Uber's developers hope the number of supported languages will increase "now that outside developers have an opportunity to contribute to the project." - -You can grab [Pirhana's source code][11] from its repository on GitHub - -#### In other news - - * [Singapore government to open source contact-tracing protocol][12] - * [European Commission to use open source messaging service Signal][13] - * [Spanish software to computerize healthcare in Cameroon and India][14] - * [ING Open-Sources Lion, Its White-Label Web Component Library][15] - * [Open Source Goes Mainstream – How Sharing Is Shaping The Future Of Music][16] - - - -Thanks, as always, to Opensource.com staff members and [Correspondents][17] for their help this week. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/3/news-march-28 - -作者:[Scott Nesbitt][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/scottnesbitt -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/weekly_news_roundup_tv.png?itok=tibLvjBd -[2]: https://jaxenter.com/covid-19-open-source-170237.html -[3]: https://opensource.com/article/20/3/open-source-software-covid19 -[4]: https://www.technologyreview.com/s/615399/coronavirus-neural-network-can-help-spot-covid-19-in-chest-x-ray-pneumonia/ -[5]: https://github.com/lindawangg/COVID-Net -[6]: https://opensource.com/article/20/3/open-hardware-covid19 -[7]: https://www.zdnet.com/article/google-linux-systems-can-use-this-new-tool-against-usb-keystroke-injection-attacks/ -[8]: https://github.com/google/ukip -[9]: https://siliconangle.com/2020/03/17/ubers-open-source-piranha-tool-hunts-redundant-application-code/ -[10]: https://en.wikipedia.org/wiki/Feature_toggle -[11]: https://github.com/uber/piranha -[12]: https://www.computerweekly.com/news/252480501/Singapore-government-to-open-source-contact-tracing-protocol -[13]: https://joinup.ec.europa.eu/collection/open-source-observatory-osor/news/signal-messaging-service -[14]: https://intallaght.ie/spanish-software-to-computerize-healthcare-in-cameroon-and-india/ -[15]: https://www.infoq.com/articles/ing-open-sources-lion-web-component/ -[16]: https://www.forbes.com/sites/andreazarczynski/2020/03/19/open-source-goes-mainstream--how-sharing-is-shaping-the-future-of-music/#9e1ca1290013 -[17]: https://opensource.com/correspondent-program diff --git a/sources/tech/20200329 Nextcloud- The Swiss Army Knife of Remote Working Tools.md b/sources/tech/20200329 Nextcloud- The Swiss Army Knife of Remote Working Tools.md deleted file mode 100644 index 82d84f984b..0000000000 --- a/sources/tech/20200329 Nextcloud- The Swiss Army Knife of Remote Working Tools.md +++ /dev/null @@ -1,154 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Nextcloud: The Swiss Army Knife of Remote Working Tools) -[#]: via: (https://itsfoss.com/nextcloud/) -[#]: author: (Abhishek Prakash https://itsfoss.com/author/abhishek/) - -Nextcloud: The Swiss Army Knife of Remote Working Tools -====== - -Remote working culture has been booming for past few years in coding, graphics and other IT related fields. But the recent [Coronavirus pandemic][1] has made it mandatory for the companies to work from home if it’s possible for them. - -While there are tons of tools to help you and your organization in working from home, let me share one open source software that has the features of several such tools combined into one. - -### Nextcloud Hub: A Suite of Essential Tools for Remote Collaboration - -[Nextcloud][2] is an open source software that can be used to store files, photos and videos for personal usage like Dropbox. But it’s more than just a private [cloud service][3]. - -You can add more than one users in Nextcloud and turn it into a collaboration platform for editing files in real time, chat with users, manage calendars, assign and manage tasks and more. - -This video gives a good overview of its main features: - -[Subscribe to our YouTube channel for more Linux videos][4] - -### Main Features of Nextcloud - -Let me highlight the main features of Nextcloud: - -#### Sync files and share - -![Nextcloud Files][5] - -You can create workspaces based on user groups and share files in those folders. Users can create private files and folders and share them with selected users internally or externally (if they are allowed to). You can lock files in read only mode as well. - -It also has a very powerful search feature that lets you search files from their name or tags. You can comment on files to provide feedback. - -Text files can be edited in real time thanks to its builtin markdown editor. You can use OnlyOffice or Collabora to allow editing of docs, spreadsheet and presentations in real time. - -It also has version control for the files so that you can revert changes easily. - -#### Text Chat, Audio Chat, Video Chat and Web Meetings - -![Nextcloud Video Call][6] - -With NextCloud Talk, you can interact with other users by text messaging, audio calls, video calls and group calls for web meetings. You can also take meeting minutes during the video calls and share your screen for presentations. There is also a mobile app to stay connected all the time. - -You can also create Slack like channels (known as circles) to communicate between members concerned with a specific topic. - -#### Calendar, Contacts & Mail - -![Calendar Nextcloud][7] - -You can manage all of your organization’s contact, divide them into groups based on departments. - -With the calendar, you can see when someone is free or what meetings are taking place, like you do on Outlook. - -You can also use the Mail feature and import the emails from other providers to use them inside Nextcloud interface. - -#### Kanban project management with Deck - -![][8] - -Like Trello and Jira, you can create boards for various projects. You can create cards for each tasks, assign them to users and they can move it between the list based on the status of the task. It’s really up to you how you create boards to manage your projects in Kanban style. - -#### Plenty of add-ons to get more out of Nextcloud - -![Password Manager][9] - -Nextcloud also has several add-ons (called apps). Some are developed by Nextcloud teams while some are from third-party developers. You may use them to extend the capability of Nextcloud. - -For example, you can add a [Feedly style feed reader][10] and read news from various sources. Similarly, the [Paswords addon][11] lets you use Netxcloud as a password manager. You can even share common passwords with other Nextcloud users. - -You can explore [all the apps on its website][12]. You’ll also notice the ratings of apps that will help you decide if you should use an app or not. - -#### Many more features - -Let me summarize all the features here: - - * Open source software that lets you own your data on your own servers - * Seamlessly edit office documents together with others - * Communicate with other members of your organization and do audio and video calls and held web meetings - * Calendar lets you book meetings, brings busy view for meetings and resource booking and more - * Manage users locally or authenticate through LDAP / Active Directory, Kerberos and Shibboleth / SAML 2.0 and more - * Secure data with powerful file access control, multi-layer encryption, machine-learning based authentication protection and advanced ransomware recovery capabilities - * Access existing storage silos like FTP, Windows Network Drives, SharePoint, Object Storage and Samba shares seamlessly through Nextcloud. - * Automation: Automatically turn documents in PDFs, send messages to chat rooms and more! - * Built in ONLYOFFICE makes collaborative editing of Microsoft Office documents accessible to everyone - * Users can install desktop and mobile apps or simply use it in web browser - - - -### How to get Nextcloud - -![][13] - -NextCloud is free and open source software. You can download it and install it on your own server. - -You can use cloud server providers like [Linode][14] or [DigitalOcean][15] that allow you to deploy a brand new Linux server within minutes. And then you can use Docker to install NextCloud. At It’s FOSS, we use [Linode][14] for our NextCloud instance. - -If you don’t want to do that, you can [signup with one of the Nextcloud partners][16] that provide you with configured Nextcloud instance. Some providers also provide a few GB of free data to try it. - -Nextcloud also has an [enterprise plan][17] where Nextcloud team itself handles everything for the users and provide premium support. You can check their pricing [here][18]. - -If you decide to use Nextcloud, you should refer to its documentation or community forum to explore all its features. - -### Conclusion - -At It’s FOSS, our entire team works remote. We have no centralized office anywhere and all of us work from our home. Initially we relied on non-open source tools like Slack, Google Drive etc but lately we are migrating to their open source alternatives. - -Nextcloud is one of the first software we tried internally. It has features of Dropbox, Google Docs, [Slack][19], [Trello][20], Google Hangout all combined in one software. - -NextCloud works for most part but we found it struggling with the video calls. I think that has to do with the fact that we have it installed on a server with 1 GB of RAM that also runs some other web services like [Ghost CMS][21]. We plan to move it to a server with better specs. We’ll see if that should address these issues. - -Since the entire world is struggling with the Coronavirus pandemic, using a solution like Nextcloud could be helpful for you and your organization in working from home. - -How are you coping during the Coronavirus lockdown? Like [Linus Torvalds’ advice on remote working][22], do you also have some suggestion to share with the rest of us? Please feel free to use the comment section. - --------------------------------------------------------------------------------- - -via: https://itsfoss.com/nextcloud/ - -作者:[Abhishek Prakash][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://itsfoss.com/author/abhishek/ -[b]: https://github.com/lujun9972 -[1]: https://en.wikipedia.org/wiki/2019%E2%80%9320_coronavirus_pandemic -[2]: https://nextcloud.com/ -[3]: https://itsfoss.com/cloud-services-linux/ -[4]: https://www.youtube.com/c/itsfoss?sub_confirmation=1 -[5]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/03/nextcloud_files.png?ssl=1 -[6]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/03/nextcloud_video_call.jpg?ssl=1 -[7]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/03/calendar_nextcloud.jpeg?ssl=1 -[8]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/03/nextcloud_kanban_project_management_app.jpeg?ssl=1 -[9]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/03/passman.png?fit=800%2C389&ssl=1 -[10]: https://apps.nextcloud.com/apps/news -[11]: https://apps.nextcloud.com/apps/passwords -[12]: https://apps.nextcloud.com/ -[13]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/03/nextcloud-feature.jpg?ssl=1 -[14]: https://www.linode.com/?r=19db9d1ce8c1c91023c7afef87a28ce8c8c067bd -[15]: https://m.do.co/c/d58840562553 -[16]: https://nextcloud.com/signup/ -[17]: https://nextcloud.com/enterprise/ -[18]: https://nextcloud.com/pricing/ -[19]: https://slack.com/ -[20]: https://trello.com/ -[21]: https://itsfoss.com/ghost-3-release/ -[22]: https://itsfoss.com/torvalds-remote-work-advice/ diff --git a/sources/tech/20200330 Access control lists and external drives on Linux- What you need to know.md b/sources/tech/20200330 Access control lists and external drives on Linux- What you need to know.md deleted file mode 100644 index 079e775ce1..0000000000 --- a/sources/tech/20200330 Access control lists and external drives on Linux- What you need to know.md +++ /dev/null @@ -1,233 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Access control lists and external drives on Linux: What you need to know) -[#]: via: (https://opensource.com/article/20/3/external-drives-linux) -[#]: author: (Seth Kenlon https://opensource.com/users/seth) - -Access control lists and external drives on Linux: What you need to know -====== -Learn how to use external drives correctly on Linux. -![Penguin driving a car with a yellow background][1] - -While cloud storage offers many advantages, there's nothing quite like having your data on a physical hard drive. When you save data to a drive, you know exactly where your data is, and it's always available when you need it. When you save data to an external portable drive like a USB thumb drive, it's even better—not only do you know where your data is, but you can take your data with you everywhere you go. If you're new to [Linux][2], or you're trying to use a Linux file system on an external drive, you might find external drives confusing, being prone to permission errors or conflicts, or even losing metadata. - -There are two "right" answers to this: - -### ExFAT - -Formerly, ExFAT was a file system fraught with legal threats from Microsoft because they own the code. They've sued companies and organizations before to defend their ownership of FAT, so it was commonly feared that they could do the same over ExFAT. However, recently. Microsoft made the specifications for ExFAT open source. They didn't provide a driver, unfortunately, but there's an existing drive to make it function on Linux, and, now that developers have access to the full specs, improvements are inevitable. - -The advantage of ExFAT is that it's cross-platform (Windows, Mac, and many portable devices use it), and it's designed without the overhead of file permissions. You can attach a drive formatted as ExFAT to any computer, and all files are available to anyone. Whether that's good or bad depends on your use case, but for portable media, that's often exactly the intent. - -### Access control lists (ACL) - -If you prefer to use a Linux file system on your portable drive, then you can do that, but to make sharing files seamless, you should use access control lists (ACL). - -When you create a file or directory on a drive, there are defaults on your system determining what file permissions it gets. For most cases, those defaults make sense—when you create a file in your home directory, you probably don't want other users to have access to that file. However, when you're creating a file on an external drive, there's a high likelihood that it's because you need to share that file with someone else (even if that someone is you on another computer). - -You can override default permissions for file viewing with an ACL, and you can control default file creation mode by setting a sticky bit. An ACL is a layer of security policies in the extended attributes of directories and files. It allows you to specify exceptions to what the file system permissions indicate. Most notably, this allows you to transcend the single-owner and single-group model of traditional UNIX permissions. - -For instance, while the **seth** (ID 1000) account might own a directory created on my desktop, **seth** (ID 500) on my laptop does not, because the user IDs are different. - -The same could be true for a group. If a directory with group ID 1000 is assigned to a directory on one computer, then a group with an ID 500 or 10922 doesn't have access to it on another computer. But an ACL can add secondary owners and groups to directories and files. - -#### View the current ACL - -Any directory and file on any common Linux filesystem has ACL rules by default. They're stored in extended attributes, a kind of metadata that you don't normally see. - -You can view them in the terminal: - - -``` -$ getfacl ./example -# file: /run/media/drive/example -# owner: seth -# group: users -user::rwx -group::rwx -other::r-- -``` - -The commented lines are just for your reference; they tell you the path, and the owner and group, of the file or directory you're viewing information about. The next lines display the rules applied to the file or directory. In this example, the user permissions are set to **rwx**, the group to **r-x**, and other to **r-x**. These permissions are reflected by a normal filesystem list: - - -``` -$ ls -lA /run/media/drive -drwxrwxr-- 26 seth users 4096 Jan 16 21:04 example -$ id -uid=1000(seth) gid=100(users) groups=100(users)... -``` - -As long as user **seth** (UID 1000) or a member of **group** (GID 100) interacts with the **example** directory, full access is granted. Any other account, however, has only read (**r**) permission. - -#### Setting an ACL - -To modify an ACL, you use the **setfacl** command or use a file manager with ACL support. You can be very specific or very generic when setting your ACL. - -To just modify the filesystem permission settings, you can use either **chmod** or **setfacl**. This is a very generic ACL setting because you're not adding anything to the permissions already available to UNIX from the filesystem specification. - - -``` -$ setfacl --modify g::r example -$ getfacl ./example | grep "group::" -group::r-- -$ ls -l . | grep example -drwxr--r-- 26 seth users 4096 Jan 16 21:04 example -``` - -The same effect is available through **chmod**: - - -``` -$ chmod g+x example -$ getfacl ./example | grep "group::" -group::r-x -$ ls -l . | grep example -drwxr-xr-- 26 seth users 4096 Jan 16 21:04 example -``` - -#### Adding users and groups - -To really benefit from an ACL is to use it for permissions outside the scope of native UNIX permissions. If I'm logged into my desktop as **seth** with user ID 1000, and I know that a directory on my portable drive needs to be usable by **seth** with ID 500 on my laptop, then just declaring **seth** as owner isn't enough because the user IDs aren't the same. - -You can add a user or user ID to an access control list: - - -``` -$ setfacl --modify u:500:rwx example -$ getfacl example -# file: /run/media/drive/example -# owner: seth -# group: users -user::rwx -user:500:rwx -[...] -``` - -A new entry, specific to user ID 500, has been added to the list. Attaching the drive to another Linux or UNIX computer now allows the user with ID 500 to access the **example** folder. - -You can also add users by account name, or groups by either group name or group ID. The IDs are what really count with permissions, though, so if you're in a mixed environment (RHEL servers and Elementary clients, for example), you should verify the user IDs and group IDs lurking behind accounts that seem, on the surface, identical. - -#### Setting default ACL rules - -If you treat access control as a one-time setting, you'll quickly run into problems once your different user accounts start creating files and directories. Any new file or directory created by each user inherits the system's default permissions (and ACL). This means that once laptop user **seth** with ID 500 creates a file in a directory, it could be off-limits to desktop user **seth** with ID 1000 because the owner of the file is set to UID 500. - -A default ACL can be applied to directories so that files and subdirectories created within them inherit the parent ACL. You can set the default ACL of a directory with the **–default** option: - - -``` -$ setfacl --default --modify u:500:rwx example -$ setfacl --default --modify u:1000:rwx example -$ getfacl --omit-header example -user::rwx -user:500:rwx -group::rw- -mask::rwx -other::r-x -default:user::rwx -default:group::rw- -default:group:500:rwx -default:group:1000:rwx -default😷:rwx -default:other::r-x -``` - -When a user creates a new directory within the **example** directory, the inherited ACL is the same as its parent: - - -``` -$ cd example -$ mkdir penguins -$ getfacl --omit-header penguins -user::rwx -group::rw- -group:500:rwx -group:1000:rwx -mask::rwx -other::r-x -default:user::rwx -default:group::rw- -default:group:500:rwx -default:group:1000:rwx -default😷:rwx -default:other::r-x -``` - -This means that any directory or file created inherits the same ACL, so neither user 500 or 1000 are ever excluded from access. - -#### Pragmatic ACL for external drives - -When using a Linux filesystem for external drives, the easy method of ensuring it works with all the users who expect to use the portable drive is to set an ACL on a single top-level directory. - -For instance, assume you have formatted a USB drive called **mydrive** as an ext4 filesystem. You want your account on your laptop and your desktop, as well as your colleague Alice, to be able to access the files. - -First, create a directory at the top level of the drive: - - -``` -$ mkdir /mnt/mydrive/umbrella -``` - -Then apply an ACL to the top-level directory to grant all-important users access: - - -``` -$ setfacl --modify \ -  u:500:rwx,u:1000:rwx,u:alice:rwx \ -  /mnt/mydrive/umbrella -``` - -Finally, apply a default ACL so that all directories and files created within the top-level directory **umbrella** inherit the same default ACL (note that this command uses the short version of **–modify**): - - -``` -$ setfacl --default -m u:500:rwx,u:1000:rwx,u:alice:rwx \ -  /mnt/mydrive/umbrella -``` - -#### Applying defaults to an existing system - -If you need to apply ACL settings to many files that already exist, you can accomplish that with the **find** command. - -First, find all directories and apply ACL rules: - - -``` -$ find /mnt/mydrive/umbrella -type d | \ -  parallel --max-args=6 setfacl \ -  --default -m u:500:rwx,u:1000:rwx,u:alice:rwx -``` - -It's not wise to indiscriminately set all file permissions to executable, so next, find all files and set permissions to **re**. Files that require an executable bit can be set manually or by file extension: - - -``` -$ find /mnt/mydrive/umbrella -type f | \ -  parallel --max-args=6 setfacl \ -  --default -m u:500:rw,u:1000:rw,u:alice:rw -``` - -Adjust the logic of these commands to suit your individual need (don't run a command that removes the executable bit on **/usr**, for instance, or on a directory containing nothing but executable programs). - -### External drives - -Don't let confusion around external drives on Linux get the best of you, and don't limit yourself to traditional UNIX permissions. Put access control lists to work for you, and feel free to use native journaled Linux filesystems on your portable drives. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/3/external-drives-linux - -作者:[Seth Kenlon][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/seth -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/car-penguin-drive-linux-yellow.png?itok=twWGlYAc (Penguin driving a car with a yellow background) -[2]: https://opensource.com/resources/linux diff --git a/sources/tech/20200401 How does kanban relate-to DevOps.md b/sources/tech/20200401 How does kanban relate-to DevOps.md deleted file mode 100644 index 3f37c35a4c..0000000000 --- a/sources/tech/20200401 How does kanban relate-to DevOps.md +++ /dev/null @@ -1,117 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (How does kanban relate to DevOps?) -[#]: via: (https://opensource.com/article/20/4/kanban-devops) -[#]: author: (Willy-Peter Schaub https://opensource.com/users/wpschaub) - -How does kanban relate to DevOps? -====== -Reduce waste, optimize the flow of value, and continuously deliver value -to delighted users. -![two women kanban brainstorming and brainmapping with post-it notes on a whiteboard ][1] - -Kanban is nothing new; in fact, it predates most readers of this article. Its age becomes apparent when we add the year Toyota introduced kanban in its main plant machine shop (1953) to the timeline image from our [analyzing the DNA of DevOps][2] article. - -![DevOps timeline][3] - -I have intuitively been using kanban, in one form or the other, for more than two decades to track personal plans, engineering projects, and digital transformations. Only in the past few weeks have I pondered the origins, power, and synergy of kanban with other frameworks and systems, while introducing teams to kanban and helping them embrace it as a powerful system in our common engineering system. - -### What is kanban? - -Kanban means "visual signal" and has its roots in the Toyota manufacturing industry. It was developed by [Taiichi Ohno][4] to improve manufacturing efficiency. When we jump a few decades into the future, kanban complements agile and lean, often used with frameworks such as scrum, Scaled Agile Framework, and Disciplined Agile to visualize and manage work. - -![Kanban complements agile and lean][5] - -You can explore the many interpretations of kanban on the internet, in books, and in vibrant discussions with other engineers who have embraced the system. In the context of our common collaboration and engineering system, kanban delivers four pivotal practices: - - * **Visualize work:** We visualize all work and look for triggers such as cards turning **red** when the work they represent is blocked or has been dormant for more than two days. - * **Limit work in progress:** We agree on and enforce (soft) work-in-progress limits to encourage reduced batch sizes and manage queue lengths. - * **Focus on flow:** We _pull_ not push work, which helps us to defer commitment until we meet our definition of done (_DoD_) and we have the capacity to commit to the next _activity_. - * **Continuous improvement:** It is important to measure work from when it enters our backlog, how long it takes to get through the process (lead time), and how efficient we are working (cycle/lead time). This enables us to continuously inspect and improve how we work and track progress. - - - -![Kanban practices and terminology][6] - -We use colorful, visual cards to represent activities that flow through one or more _activities_ in one of many _swim lanes_. Each kanban column represents an activity, and each swim lane represents a person, group, or another bucket to segment the cards. There are no rules for the color of the cards, but **red** typically signals a problem. But remember to combine color with a meaningful icon to visualize special states for users who are color-blind. - -> "_We should defer commitment until our Definition of Ready (DOR) is met so that we can ensure that our Definition of Done (DOD) is achieved sooner and with high quality. I like the two distinct terms (DOR and DOD) because the [project owner] should be accountable for the DOR while the team can take ownership of the DOD_." —[Mathew Mathai][7] - -I often use this analogy to explain the difference between _lead_ and _cycle_ time to new teams: Imagine you walk into a restaurant. You sit down, study the menu, and decide what you would like to drink and eat. When the waiter takes your order, the _lead_ cycle time starts ticking. When the bar starts pouring your favorite potion and the kitchen starts preparing your meal, the _cycle_ time starts ticking. As the order arrives at your table, both the lead and cycle time are stopped if (and only if) you are satisfied. - -Therefore, the _lead_ time measures how long you, the customer, had to wait until you received your order. The _cycle_ time measures the process time of an activity to prepare your order. From a customer perspective, the _lead_ time is important. - -It is important to _make your policies explicit_, such as when you start measuring lead and cycle times. Some customers start their "impatience" clock when they enter the restaurant, while others start the clock when they place their order. In both cases, they need to understand how you measure your flow to avoid misunderstandings, unfeasible expectations, and disappointment. - -This image is extracted from one of our information transfer posters, and it summarizes key learnings when we started adopting the kanban system. - -![Key kanban learnings][8] - -### What about DevOps? - -In _[Using PowerShell to automate Linux, macOS, and Windows processes][9]_, we briefly introduced value-stream mapping. It enables us to measure individual and total lead times, cycle times, efficiency, and quality and unearth different activities, groups, and silos that cancel out each other. - -![value-stream mapping][10] - -You will notice a similarity between the kanban board and the value-stream mapping images. Both _visualize_ and _focus_ on the flow of activities represented by individual cards pulled across a visual board. - -![Continuous delivery pipeline][11] - -Continuous flow and efficiency are core to a healthy DevOps mindset. It transforms into a continuous delivery pipeline, as shown above, which unites different teams, such as business, development, security, and quality assurance, to implement ideas from ideation to production. Continuously measuring and streamlining the delivery pipeline not only helps improve the flow of value, but also the quality of value. - -It should be evident that (similar to kanban) the focus here is on flow. Flipping back and forth between activities is frowned upon in kanban and impractical with continuous delivery pipelines. It reminds me of a recent whiteboard discussion where we discussed the challenge of visualizing and managing the flow of work that requires two teams. - -![Dividing a job between two teams][12] - -As shown here, we slice a job that requires team X to perform activities, then team Y, and again team X, into three stories. The three stories are visualized by three cards on two kanban boards, flowing from A to B to C, with clear ownership by team X and Y, which we can measure independently as lead and cycle time. - -We are drifting into another exciting topic of flow optimization … let's get back to the original question. - -### What is the relationship between kanban and DevOps? - -[Donovan Brown][13] defines DevOps as "_the union of people, process, and products to enable continuous delivery of value to our end users._" - -When we unpack this definition, we realize that the core of the DevOps [mindset][14] is to continuously deliver value and delight our customers. - - * _"Feedback from stakeholders is essential."_ - * _"Improve beyond the limits of today's processes."_ - * _"No new silos to break down silos."_ - * _"Knowing your customers means cross-organization collaboration."_ - * _"Inspire adoption through enthusiasm."_ - - - -The kanban system helps us visualize and improve the efficiency of value delivery, resulting in delighted customers. I argue that if you are comfortable with kanban, you will enjoy the full benefits of DevOps through _visualization_, _flow improvement_, _feedback_, and _continuous innovation_. - -We have collaboration at its finest—_synergy_**,** or is that _symbiosis_? - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/4/kanban-devops - -作者:[Willy-Peter Schaub][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/wpschaub -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/whiteboard-brainstorming-brainmapping-design-thinking-postits-kanban.png?itok=Is2Tg1Jk (Brainstorming with post-it notes on a whiteboard) -[2]: https://opensource.com/article/18/11/analyzing-devops -[3]: https://opensource.com/sites/default/files/uploads/devops-timeline.png (DevOps timeline) -[4]: https://en.wikipedia.org/wiki/Taiichi_Ohno -[5]: https://opensource.com/sites/default/files/uploads/kanban-agile-lean-devops.png (Kanban complements agile and lean) -[6]: https://opensource.com/sites/default/files/uploads/kanban-practices-terms.png (Kanban practices and terminology) -[7]: https://opensource.com/users/anicheinc -[8]: https://opensource.com/sites/default/files/uploads/kanban-key-learnings.png (Key kanban learnings) -[9]: https://opensource.com/article/20/2/devops-automation -[10]: https://opensource.com/sites/default/files/uploads/value-stream-mapping.png (value-stream mapping) -[11]: https://opensource.com/sites/default/files/uploads/cd-pipeline.png (Continuous delivery pipeline) -[12]: https://opensource.com/sites/default/files/uploads/splitting-jobs.png (Dividing a job between two teams) -[13]: https://www.donovanbrown.com/post/what-is-devops -[14]: https://opensource.com/article/19/5/values-devops-mindset diff --git a/sources/tech/20200403 Building a sensing prosthetic with the Raspberry Pi.md b/sources/tech/20200403 Building a sensing prosthetic with the Raspberry Pi.md deleted file mode 100644 index 0eef549525..0000000000 --- a/sources/tech/20200403 Building a sensing prosthetic with the Raspberry Pi.md +++ /dev/null @@ -1,85 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Building a sensing prosthetic with the Raspberry Pi) -[#]: via: (https://opensource.com/article/20/4/raspberry-pi-sensebreast) -[#]: author: (Kathy Reid https://opensource.com/users/kathyreid) - -Building a sensing prosthetic with the Raspberry Pi -====== -SenseBreast is an early prototype of a sensing mastectomy prosthetic -based on open hardware. -![Open source doctor.][1] - -_Content advisory: this article contains frank discussions of breast cancer._ - -What's the first question you ask your surgeon when you're discussing reconstruction options after breast cancer? - -"How many USB ports can you give me?" is probably not the one that comes to mind for many people! - -Although the remark was said jokingly, it sparked a thread that would ultimately become [SenseBreast][2]—an early prototype of a sensing mastectomy prosthetic, based on open hardware. - -### How did SenseBreast come about? - -All technology has a history—an origin story of experimentation, missteps, successes, setbacks, and breakthroughs. SenseBreast is no different. SenseBreast was developed as a term project for the Masters of Applied Cybernetics—a highly selective course at the Australian National University's [3A Institute][3]. The mission of the 3Ai is to bring artificial intelligence and cyber-physical systems safely, responsibly, and sustainably to scale. The purpose of the assignment was to explore the nexus between the electronic, virtual world, and the physical, tactile world. - -### What is SenseBreast? - -SenseBreast combines two distinct elements: a cyber component—electronics, sensors, and storage for gathering data, and a physical component—a breast form designed to be worn inside a mastectomy bra. SenseBreast is a rudimentary cyber-physical system. In cyber-physical systems, physical and software components are deeply intertwined and interact in different ways depending on context. - -The SenseBreast draws on a rich heritage of open source hardware and software. Based on the Raspberry Pi 3B+, it uses the Debian-flavored Raspbian operating system, Python to interact with the onboard sensors, and d3.js to visualize the data that the sensors generate. - -Early versions of the SenseBreast used the SenseHAT, but in the true spirit of open source collaboration, I partnered with Australian open source luminary Jon Oxer to develop a custom SenseBreast board. This contains an inertial motion unit (IMU) and temperature, humidity, and pressure sensors, just like the SenseHAT, but in addition, it contains the BME680 volatile gas sensor and a breakout for a heart rate monitor. - -![SenseBreast open hardware board developed by Jon Oxer and Kathy Reid][4] - -SenseBreast is wearable tech, so the physical form of the cyber-physical system is also important. Factors like comfort, texture, and fit in clothing are important in the design of wearables because technology isn't better unless it's better for people! The early attempts at building a housing for SenseBreast were spectacular failures; in fact, the very first iteration was put together using acrylic render and linen cloth, and held together with paper clips—in true hacker style! It wasn't comfortable to wear at all, but it served as a proof point for further exploration. - -![First attempt at creating a breast form using acrylic render covered in linen cloth][5] - -Later iterations used a different approach. This involved taking a cast of a breast, using quick-dry silicone supported by a plaster cast. The resulting mold was then used with slow-setting silicone to create a true-to-life shape. A recess was carved into the form to house the electronic components, and an additional silicone layer was added to protect the wearer's skin from contact with electronics. - -### What did we learn from SenseBreast? - -The key learning from SenseBreast is that data is partial. It only tells part of a story. It can be misleading and untrustworthy, which makes the decisions based on that data unreliable too. For example, the sensor data gathered by SenseBreast was affected by how hard the CPU was working. The graph below plots a sequence of 5 minutes of data from SenseBreast, just after the device has booted. You can see that the temperature decreases over time; this is because the CPU has to work harder as the Raspberry Pi boots, and then cools down after the boot operations are completed. - -![Data visualisation of the readings in SenseBreast using the d3.js library][6] - -These sorts of learnings have implications on a broader scale. - -What if the SenseBreast were not an open source device, but a commercial wearable that stored data about me? What if part of the business model of that company was to sell the data that was harvested? What if my health insurer had access to that data? Or prospective employers? Now, more than ever, it's important that we have private, open solutions for sensing data about ourselves. - -### What's next for the SenseBreast project? - -The SenseBreast is a very early prototype, but it has the potential to develop through many different arcs. It could be used to assess range of movement post-surgery, to research how different garments and fabrics adjust to temperature and humidity, and to identify correlations between ambient air pressure and conditions such as lymphoedema. The path SenseBreast takes will be dependent on the passion, needs, and dedication of the incredible global open source community. - -You can learn more about SenseBreast at [https://sensebreast.org][2] and see my presentation at [linux.conf.au][7] 2020 [here][8]. - -The code for SenseBreast is available on [GitHub][9]. - -Health IT has been surprisingly unwilling to deeply support open source software. Despite the huge... - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/4/raspberry-pi-sensebreast - -作者:[Kathy Reid][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/kathyreid -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/osdc_520x292_opensourcedoctor.png?itok=fk79NwpC (Open source doctor.) -[2]: https://sensebreast.org/ -[3]: https://3ainstitute.cecs.anu.edu.au/ -[4]: https://opensource.com/sites/default/files/uploads/49427571178_bb5df37c3a_c.jpg (SenseBreast open hardware board developed by Jon Oxer and Kathy Reid) -[5]: https://opensource.com/sites/default/files/uploads/49641040471_6d0cc91619_c.jpg (First attempt at creating a breast form using acrylic render covered in linen cloth) -[6]: https://opensource.com/sites/default/files/uploads/49640513813_5a7d63803a_c.jpg (Data visualisation of the readings in SenseBreast using the d3.js library) -[7]: http://linux.conf.au -[8]: https://www.youtube.com/watch?v=G3QfZ11DCpc. -[9]: https://github.com/KathyReid/sensebreast diff --git a/sources/tech/20200407 Love or hate chat- 4 best practices for remote teams.md b/sources/tech/20200407 Love or hate chat- 4 best practices for remote teams.md deleted file mode 100644 index 855c622e49..0000000000 --- a/sources/tech/20200407 Love or hate chat- 4 best practices for remote teams.md +++ /dev/null @@ -1,92 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Love or hate chat? 4 best practices for remote teams) -[#]: via: (https://opensource.com/article/20/4/chat-tools-best-practices) -[#]: author: (Jen Wike Huger https://opensource.com/users/jen-wike) - -Love or hate chat? 4 best practices for remote teams -====== -Plus, learn about a few open source alternatives for chat. -![Chat via email][1] - -Chat is a part of most people's daily lives, especially if you work in tech, and especially if you work with teammates located in different parts of the world. It can be a great way to achieve these goals: - - * **to connect**; to share with teammates on a personal level - * **to get work done**; to communicate with teammates about work in progress - * **to share**; to give notes and feedback from experiences, meetings, and interactions outside of the group that may be relevant to your work or interests - - - -I encourage you to explore [open source alternatives to chat][2] like [Mattermost][3], [Rocket.Chat][4], and [Riot][5]. - -### To chat or not to chat, that is the question - -First, it's important to make time to have a discussion with each member of your team focused on answering whether they are comfortable with using a chat platform to keep in touch throughout the workday. Some people enjoy chat and see it as a vital part of their workday, getting things done and communicating with teammates who they rely on to get that work done and move forward with projects. Others struggle with chat as a way of getting work done and prefer to use it when they feel like having more casual conversations with teammates on topics less focused on work and more on social interaction and personal sharing. Some people wish chat would burn in a fire. - -Gather these opinions and talk through these feelings with each person. You can do this as a group or one-on-one if that feels more appropriate. - -Why? Because communication is important and always will be, and your team will find a way to chat no matter what you do. We're human, and need various levels and types of interaction with each other throughout our days and lives. And when it comes to our work colleagues, it's helpful to put some structure in place to guide your team. - -### Best practices for team chat - -If you have decided to use chat in some form, the next step is to place structure around when and how to use it and **not** use it. These best practices work well for teams who are working remotely and at home, as well as in the office. - -**1\. Create rooms and threads to focus your conversations.** - -My team has a room for each of our sub-teams who work on a particular project together. We also have an at-large room for all of us to banter and share. - -Additionally, we use threads to focus on one topic at a time which is helpful when you have several to dozens of teammates in one room together. It helps conversations to continue and not stop prematurely because they were lost in the mix of other conversations. - -**2\. Decide when your team will be signed in and available to talk.** - -Is it throughout the workday (whatever hours those are for you), during a set timeframe, or as desired? - -My team has set the expectation that they will be signed in and available to chat at some point during the workday **about work-related topics**, and that at that time they will check for and respond to messages that were sent to them while they were away. So, we are using it as an asynchronous way to communicate about work. - -For us, asynchronous chat helps us plan and schedule each day how we see fit with the goal of being productive and serving our project in the best we can _that day_. - -If a teammate does **not** plan on signing in and responding to messages one day, that is OK, and we set the expectation that they will send a message to let the team know. For my team, almost no communication is wrong (see guideline #4), but it should be communicated. We also review our schedules for the following week in a team meeting the week before so we know when someone will be away from their desk, not working, or blocking out a chunk of time for a project. - -**3\. Decide when your teammates are responsible for responding (and when they are not).** - -Use @ mentions if you want someone to see and respond to your question or comment in chat. Don't expect them to be watching every thread and conversation.  - -And I would recommend that you take it a step further and define when teammates should be responsible for responding and when they should not. This type of decision is meant to free you and your teammates, not hold you down. The more you understand the expectations, the freer you are to operate within the same understood universe. When you are unsure of the rules, you may act and make decisions in fear or trepidation instead, like staying signed in to chat all day when you really just need to block it out to get something done. - -Our team has decided that it's nice if you can respond in chat when you are mentioned, but if you don't that is OK. Perhaps you were AFK during that time and lost track of the notification. For us, if you definitely want a response to something from someone, send them an email.  - -**4\. Communicate clearly and with kindness.** - -The way we interpret messages when we are chatting via text is different than when we are chatting verbally, in-person or over video. - -My team uses a lot of humor, emojis, and clear, concise messages to chat with each other. - -We also hold weekly in-person or video conference meetings so that we can get to know each other better. The more you trust someone, the easier it is to give them the benefit of the doubt when you're confused by a message and the better you are at understanding what they are saying and what their intention is behind the text coming through to you. - -### Signing off - -What best practices does your team use? Do you love or hate chat, and why?  - -For all kinds of teams today, chat is a special part of how we stay connected, working, and sharing with each other. Finding ways to do that in a healthy and committed way is part of everyone's responsibility. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/4/chat-tools-best-practices - -作者:[Jen Wike Huger][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/jen-wike -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/email_chat_communication_message.png?itok=LKjiLnQu (Chat via email) -[2]: https://opensource.com/alternatives/slack -[3]: https://mattermost.com/ -[4]: https://rocket.chat/ -[5]: https://riot.im/app/ diff --git a/sources/tech/20200409 GNOME Announces Community Engagement Challenge Offering up to -65,000 in Rewards.md b/sources/tech/20200409 GNOME Announces Community Engagement Challenge Offering up to -65,000 in Rewards.md deleted file mode 100644 index 63de71fec7..0000000000 --- a/sources/tech/20200409 GNOME Announces Community Engagement Challenge Offering up to -65,000 in Rewards.md +++ /dev/null @@ -1,84 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (GNOME Announces Community Engagement Challenge Offering up to $65,000 in Rewards) -[#]: via: (https://itsfoss.com/gnome-community-engagement-challenge/) -[#]: author: (Ankush Das https://itsfoss.com/author/ankush/) - -GNOME Announces Community Engagement Challenge Offering up to $65,000 in Rewards -====== - -It’s always good to see several competitions or challenges trying to promote Free and Open-Source Software (FOSS) more than ever. - -In a recent effort by GNOME with the help of [Endless][1], they announced the inaugural GNOME Community Engagement Challenge. - -This Community Challenge is a part of their original announcement of [coding education challenge for which GNOME was granted $500,000 funding by Endless][2] last year. - -The three-phase challenge aims to attract new developers to engage with FOSS and potentially create new/unique solutions that would gain more traction from the next-gen coders. - -The challenge will involve up to $65,000 in cash prizes. Sounds exciting, right? Let’s take a look at some of the details involved in the challenge. - -![][3] - -### Why The GNOME Community Engagement Challenge? - -In their official [press release][4], they mentioned their primary motive for the challenge: - -> “Through the Challenge we hope to reach a diverse audience, to encourage beginning coders to get involved with the FOSS community to help ensure that free software is available long into the future,” said Neil McGovern, GNOME Foundation Executive Director. “What better way to do that than to reach out to the community itself to come up with creative ways to inspire the next generation?” - -As Neil mentioned above, it’s definitely a good idea to reach out to more people (community) to look for creative ways to promote and work on FOSS projects that will leave a significant impact on the open-source community. - -And, rewarding for the ideas in the form of a challenge will easily get the attention needed. - -### Here’s How The Community Challenge Works - -To quote the official announcement: - -> The Challenge will ask entrants to devise creative ways to promote open-source software to coders typically in high school and college. How a submission will achieve this goal has deliberately been left open-ended to encourage unique, novel approaches. - -So, there’s no particular constraint for the type of ideas or projects you can propose and submit. But, it would be wise to read the usual [terms and conditions][5] to know about the submission rules, eligibility, requirements, prize details, and more. - -Here are the key information about the three phases of the challenge as per the announcement: - - * The **first phase** of the Challenge asks entrants to submit a written proposal for their concept no later than **July 1, 2020**. Twenty entries will be chosen to move to the next round and receive **$1000 each**. - * The **second phase** of the Challenge will require proof of concept, with four entries receiving **$5000** and moving onto the final round. - * The final round will call for a deliverable end product, with the winner receiving **$15,000** and the second place finisher receiving **$10,000**. - - - -They plan to announce the winner of the challenge in the spring of 2021. - -You can take a look at their [challenge FAQ][6] and the [official webpage][7] for more details before starting to submit your entry on **April 9th**. The last date of submission is **July 1, 2020**. - -Head to their website to get started and explore more about the challenge. - -[GNOME Community Engagement Challenge][7] - -### Wrapping Up - -I think this is a perfect opportunity for developers to get started with FOSS projects that will end up rewarding them with a good amount of money and help the community at the same time. - -What do you think about the community engagement challenge by GNOME? Feel free to let me know your thoughts in the comments below. - --------------------------------------------------------------------------------- - -via: https://itsfoss.com/gnome-community-engagement-challenge/ - -作者:[Ankush Das][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://itsfoss.com/author/ankush/ -[b]: https://github.com/lujun9972 -[1]: https://www.endlessnetwork.com/ -[2]: https://itsfoss.com/endless-gnome-coding-education-challenge/ -[3]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/04/gnome-community-challenge.png?ssl=1 -[4]: https://www.gnome.org/news/2020/04/gnome-foundation-and-endless-launch-inaugural-community-engagement-challenge/ -[5]: https://www.gnome.org/challenge/terms/ -[6]: https://www.gnome.org/challenge/faq/ -[7]: https://www.gnome.org/challenge/ diff --git a/sources/tech/20200409 Print double-sided documents at home with this simple Bash script.md b/sources/tech/20200409 Print double-sided documents at home with this simple Bash script.md deleted file mode 100644 index daacfa8365..0000000000 --- a/sources/tech/20200409 Print double-sided documents at home with this simple Bash script.md +++ /dev/null @@ -1,152 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Print double-sided documents at home with this simple Bash script) -[#]: via: (https://opensource.com/article/20/4/print-duplex-bash-script) -[#]: author: (Jim Hall https://opensource.com/users/jim-hall) - -Print double-sided documents at home with this simple Bash script -====== -Use this script and save yourself the hassle and wasted paper of trying -to manually load and print double-sided documents. -![bash logo on green background][1] - -We have a laser printer at home. This Hewlett Packard LaserJet Pro CP1525nw Color Printer is an older model, but it has been a great workhorse that prints reliably and in color. I [put it on our home network][2] a few years ago using our [Raspberry Pi][3] as a print server. - -The LaserJet has been a great addition to my home office. Since [I launched my company][4] last year, I have relied on this little laser printer to print handouts and other materials for client meetings, workshops, and training sessions. - -My only gripe with this printer is that it prints single-sided only. If you want to print double-sided, you need to set up a custom print job to do it yourself. That's inconvenient and requires manual steps. In LibreOffice, I need to specifically set up the print job to print the odd-numbered pages first, then reload the paper before printing the even-numbered pages on the other side—but in reverse order. - -![LibreOffice print dialog][5] - -If I need to print a PDF that someone has sent me, the process is the same. For a four-page document, I first need to print pages 1 and 3, then reload the paper and print pages 2 and 4 in reverse order. In the GNOME print dialog, you need to select "Page Setup" to print odd pages or even pages. - -![Gnome print dialog][6] - -![Gnome page setup][7] - -Regardless of how I print, the overall process is to print the odd-numbered pages, reload the stack of printed pages into the paper tray, then print the even-numbered pages in reverse order. If I'm printing a four-page document, printing the even-numbered pages in reverse order means page 4 prints on the back of page 3 and page 2 prints on the back of page 1. Imagine my frustration in those few instances when I forgot to select the option to print in reverse order when printing the even-numbered pages and ruined a long print job. - -Similarly, it's easy to forget how to deal with documents that have an odd number of pages. In a five-page document, you first print pages 1, 3, and 5. But when you reload the printed pages into the printer, you don't want page 5. Instead, you only want to load pages 1 and 3. Otherwise, page 4 will print on the back of page 5, page 2 will print on the back of page 3, and nothing gets printed on the back of page 1. - -To make things easier and more reliable, I wrote a simple Bash script that automates printing duplex. This is basically a wrapper to print odd-numbered pages, remind me to reload the pages (and remove the last page if needed), then print the even-numbered pages. - -Whenever I need to print a document as duplex, I first convert the document to PDF. This is very easy to do. In LibreOffice, there's a toolbar icon to export directly as PDF. You can also navigate under **File— Export As—Export as PDF** to do the same. Or in any other application, there's usually a **Save to PDF** feature. When in doubt, GNOME supports printing to a PDF file instead of a printer. - -![Libre Office toolbar][8] - -![Export as PDF][9] - -### How it works - -Once I've saved to PDF, I let my Bash script do the rest. This really just automates the **lpr** commands to make printing easier. It prints odd pages first, prompts me to reload the paper, then prints the even pages. If the document has an odd number of pages, it also reminds me to remove the last page when I reload the printed pages. It's pretty simple. - -The only "programming" part of the script is determining the page count, and figuring out if that's an even or odd number. Both of those are easy to do. - -To determine the page count, I use the **pdfinfo** command. This generates useful info about a PDF document. Here's some sample output: - - -``` -$ pdfinfo All\ training\ -\ catalog.pdf -Creator:        Writer -Producer:       LibreOffice 6.3 -CreationDate:   Fri Oct 18 16:06:07 2019 CDT -Tagged:         no -UserProperties: no -Suspects:       no -Form:           none -JavaScript:     no -Pages:          11 -Encrypted:      no -Page size:      612 x 792 pts (letter) -Page rot:       0 -File size:      65623 bytes -Optimized:      no -PDF version:    1.5 -``` - -That output is very easy to parse. To get the page count, I use an AWK one-line script to look for **Pages:** and print the second field. - - -``` -`pages=$( pdfinfo "$1" | awk '/^Pages:/ {print $2}' )` -``` - -To figure out if this is an odd or even number, I use the modulo (**%**) arithmetic operator to divide by two and tell me the remainder. The modulo of two will always be zero for an even number, and one for an odd number. I use this simple test to determine if the document has an odd number of pages, so I'll need to remove the last page before printing the rest of the document: - - -``` -`if [ $(( $pages % 2 )) -ne 0 ] ; then` -``` - -With that, writing the **print-duplex.sh** Bash script is a simple matter of calling **lpr** with the correct options to send output to my printer (**lpr -P "HP_LaserJet_CP1525nw"**), to print odd-numbered pages (**-o page-set=odd**) or even-numbered pages (**-o page-set=even**), and to print in reverse order (**-o outputorder=reverse**). - -### Bash script - - -``` -#!/bin/sh -# print-duplex.sh -# simple wrapper to print duplex - -cat<<EOF -$1 ($pages pages) -\------------------------------------------------------------------------------- -Printing odd pages first -Please wait for job to finish printing... -\------------------------------------------------------------------------------- -EOF - -lpr -P "HP_LaserJet_CP1525nw" -o page-set=odd "$1" -sleep $pages - -cat<<EOF -=============================================================================== -Put paper back into the printer in EXACT OUTPUT ORDER (face down in tray) -then press ENTER -=============================================================================== -EOF - -pages=$( pdfinfo "$1" | awk '/^Pages:/ {print $2}' ) - -if [ $(( $pages % 2 )) -ne 0 ] ; then -  echo '!! Remove the last page - this document has an odd number of pages' -fi - -echo -n '>' -read x - -cat<<EOF -\------------------------------------------------------------------------------- -Printing even pages -Please wait for job to finish printing... -\------------------------------------------------------------------------------- -EOF - -lpr -P "HP_LaserJet_CP1525nw" -o page-set=even -o outputorder=reverse "$1" -``` - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/4/print-duplex-bash-script - -作者:[Jim Hall][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/jim-hall -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/bash_command_line.png?itok=k4z94W2U (bash logo on green background) -[2]: https://opensource.com/article/18/3/print-server-raspberry-pi -[3]: https://opensource.com/resources/raspberry-pi -[4]: https://opensource.com/article/19/9/business-creators-open-source-tools -[5]: https://opensource.com/sites/default/files/uploads/print_dialog_-_libreoffice_0.png (LibreOffice print dialog) -[6]: https://opensource.com/sites/default/files/uploads/print_dialog_-_gnome_0.png (Gnome print dialog) -[7]: https://opensource.com/sites/default/files/uploads/print_dialog_-_gnome_-_page_setup.png (Gnome page setup) -[8]: https://opensource.com/sites/default/files/uploads/toolbar_-_export_as_pdf_-_libreoffice.png (Libre Office toolbar) -[9]: https://opensource.com/sites/default/files/uploads/file_-_export_as_pdf_-_libreoffice.png (Export as PDF) diff --git a/sources/tech/20200409 Use Emacs Org mode to easily create LaTeX documents.md b/sources/tech/20200409 Use Emacs Org mode to easily create LaTeX documents.md deleted file mode 100644 index 461c52a8a5..0000000000 --- a/sources/tech/20200409 Use Emacs Org mode to easily create LaTeX documents.md +++ /dev/null @@ -1,142 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Use Emacs Org mode to easily create LaTeX documents) -[#]: via: (https://opensource.com/article/20/4/emacs-org-mode) -[#]: author: (Peter Prevos https://opensource.com/users/danderzei) - -Use Emacs Org mode to easily create LaTeX documents -====== -You can use LaTeX for scientific and technical documents without all of -the confusing commands and syntax you would normally need. -![Filing cabinet for organization][1] - -LaTeX is a powerful system, especially for writing scientific and technical documents. But writing documents in LaTeX can be confusing because you need to know a lot of commands, and your text is littered with backslashes, curly braces, and other syntax distractions. But being productive as a writer requires that you focus on the text's content instead of how it looks. Fortunately, the [GNU Emacs][2] Org mode extension makes it easy to write plain-text documents and seamlessly export them to LaTeX and PDF. - -[Org mode][3] is a built-in Emacs extension that helps you keep notes, maintain to-do lists, manage projects, and author documents with a fast and effective plain-text system. Emacs also comes with [AUCTeX][4], an extensible package for writing TeX files in Emacs. AUCTeX has a preview module that shows the results of what you type, but I find it distracting because it draws my attention away from the document's content to its design. Writing text in Org mode is my preferred option because the source remains a plain-text file with minimal typesetting elements. The text is independent of its result because Org mode can export it to multiple formats, including LaTeX and PDF. - -Emacs is known for being difficult to use with a steep learning curve. But Emacs is only difficult when you want to fine-tune the default settings. By following a minimalist approach to using the vanilla GNU Emacs, this article will get you quickly and easily on your way to writing beautiful documents without any complex configuration. - -### First steps - -Before you begin, [install Emacs][5] and a fully functioning version of [LaTeX][6] on your computer. - -Next, you need to learn some conventions. In Emacs lingo, the abbreviation **C-c** means to enter **Ctrl+C** on your keyboard. The abbreviation **M-x** means **Alt+X**. The M stands for the mod key, which no longer exists in modern systems. The **S** prefix indicates the **Shift** key. - -The **find-file** function, which you start with the **C-x C-f** keystroke combination, creates a new document or opens an existing document. Entering this function opens a dialog in the mini-buffer at the bottom of the screen, which is where Emacs communicates with the user. Type the name of the file you want to create or open into the mini-buffer. Emacs is sensitive to file extensions, so make sure that the name of your document ends in **.org**. - -In Emacs speak, opening or creating a file is called ["visiting" a file][7]. Visiting a file means reading its contents into an Emacs buffer so that it is available for editing. Emacs generates a new buffer for each file you visit. - -### Writing prose with Org mode - -Once you're visiting a file, you can start typing your text the same way you would in any text editor or word processor. Some conventions: Begin the file with **#+TITLE:** to denote the title of the document and **#+AUTHOR** for your name. These options are used when exporting the file. Org mode recognizes a range of [export settings][8] to configure the output. For example, to suppress the table of contents, enter **#+OPTIONS: toc:nil**. - -Org mode has its own Markdown-like conventions to format your document. [Headlines][9] start with one or more asterisks. Org mode can [collapse a headline][10] to render parts of it invisible with the **TAB** or **S-TAB** keys. You can make words ***bold***, **/italic/**, **_underlined_**, or **=verbatim=**. The Org manual describes the many options for [rich text][11]. - -One minor issue with plain-vanilla Emacs that you will quickly notice is it does not wrap lines at the end of the visible screen. Emacs has several line-wrapping functions, and [Visual Line mode][12] is the most useful for writing long-form text. To activate this mode, use **M-x** and enter **visual-line-mode** in the mini-buffer at the bottom of the screen. The **M-x** keyboard shortcut enables executing functions for which there is no direct keyboard shortcut. - -Adding [images][13] is as easy as adding a link to the image file within double square brackets: - - -``` -`[[file:path_to_image.png]]` -``` - -Org has a great system for [formatting tables][14] in plain ASCII. Any line with **|** is considered part of a table. The vertical line is also the column separator. A line starting with **|-** is rendered as a horizontal rule, and rows before the first horizontal rule are header lines. A table might look like this in the source file: - - -``` -| Name  |   id | Age | -|-------+------+-----| -| Peter | 1234 |  50 | -| Sue   | 4321 |  54 | -``` - -Both images and tables are preceded with **#+CAPTION:** to add a [caption][15]. Advanced options are also available to control float placement and size of figures. - -Emacs has extensive [editing functions][16] to make you more efficient when typing text. Spell checking, thesaurus, auto-completion, and an undo tree are just some of the tools that help you write efficiently. - -### Adding LaTeX snippets to Org - -In addition to the text itself, Org mode-text can include simple LaTeX commands, such as **\newpage**, within the text. Equations in standard LaTeX syntax are placed between dollar signs **$e^{i\pi} + 1 = 0$**. The **org-latex-preview** function (**C-c C-x C-l**) shows a [preview][17] of any LaTeX equations within the text buffer. Last, you can also add complete LaTeX snippets to insert complex content. The code has to be placed in an export block: - - -``` -#+BEGIN_EXPORT latex -\setlength{\unitlength}{1cm} -\thicklines -\begin{picture}(10,6) -\put(2,2.2){\line(1,0){6}} -\put(2,2.2){\circle{2}} -\put(6,2.2){\oval(4,2)[r]} -\end{picture} -#+END_EXPORT -``` - -### Exporting to LaTeX - -Org mode includes a powerful export module to convert your files to many formats using the powerful [Pandoc][18] software. Start the export module with the **org-export-dispatch** function, which you can run with the **C-c C-e** keyboard shortcut. The dispatch will split your screen and provide a range of options. - -First, Pandoc converts the Org mode file to a LaTeX file. Then you can choose to open the LaTeX file in a new buffer or save it as a file. Org mode can also directly render a PDF file, which you can view within Emacs or save to disk. - -![Emacs with Org mode source and PDF preview][19] - -### Advanced use - -This article provides a first taste of writing prose in Org mode and LaTeX. Org mode has numerous configuration options to fine-tune your document or to change default settings. - -By default, Org mode uses the article style to export documents, but you can change this with export settings. These settings can also be used to add commands to the document header, for example: - - -``` -#+LATEX_CLASS: report -#+LATEX_CLASS_OPTIONS: [a4paper] -#+LATEX_HEADER: \usepackage{times} -``` - -If you write scientific documents, the [org-ref][20] package by John Kitchin provides Org-mode modules for citations, cross-references, and bibliographies in Org mode and useful BibTeX tools to go with it. - -The Org mode manual's [LaTex export][21] section provides a detailed discussion of the functionality available. - -### Conclusion - -Org mode is a perfect editor for writing LaTeX. The main advantage is that you lose the clutter of LaTeX syntax and can focus on the text. This comes at no cost because you can still add LaTeX code as much as you need, and you get access to the powerful editing functions in Emacs. - -Using Org to write books and articles allows you to focus on the text as you combine two of the oldest and most powerful pieces of open source software. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/4/emacs-org-mode - -作者:[Peter Prevos][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/danderzei -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/files_documents_organize_letter.png?itok=GTtiiabr (Filing cabinet for organization) -[2]: https://opensource.com/article/20/3/getting-started-emacs -[3]: https://orgmode.org -[4]: https://www.gnu.org/software/auctex/ -[5]: https://www.gnu.org/software/emacs/ -[6]: https://www.latex-project.org/get/ -[7]: https://www.gnu.org/software/emacs/manual/html_node/emacs/Visiting.html -[8]: https://orgmode.org/manual/Export-Settings.html -[9]: https://orgmode.org/manual/Headlines.html#Headlines -[10]: https://orgmode.org/manual/Global-and-local-cycling.html#Global-and-local-cycling -[11]: https://orgmode.org/manual/Markup-for-Rich-Contents.html#Markup-for-Rich-Contents -[12]: https://www.gnu.org/software/emacs/manual/html_node/emacs/Visual-Line-Mode.html -[13]: https://orgmode.org/manual/Images.html -[14]: https://orgmode.org/manual/Built_002din-Table-Editor.html#Built_002din-Table-Editor -[15]: https://orgmode.org/manual/Captions.html#Captions -[16]: https://www.gnu.org/software/emacs/manual/html_node/emacs/Basic.html#Basic -[17]: https://orgmode.org/manual/Previewing-LaTeX-fragments.html -[18]: https://pandoc.org/ -[19]: https://opensource.com/sites/default/files/uploads/org-mode-latex-screenshot.png (Emacs with Org mode source and PDF preview.) -[20]: https://github.com/jkitchin/org-ref -[21]: https://orgmode.org/manual/LaTeX-Export.html#LaTeX-Export diff --git a/sources/tech/20200410 How Kubernetes saved my desktop application.md b/sources/tech/20200410 How Kubernetes saved my desktop application.md deleted file mode 100644 index ecbd6ee273..0000000000 --- a/sources/tech/20200410 How Kubernetes saved my desktop application.md +++ /dev/null @@ -1,55 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (How Kubernetes saved my desktop application) -[#]: via: (https://opensource.com/article/20/4/kubernetes-desktop-application) -[#]: author: (Chris Hermansen https://opensource.com/users/clhermansen) - -How Kubernetes saved my desktop application -====== -Keep this fix in mind if you have a broken Java desktop application but -aren't a crypto expert. -![Puzzle pieces coming together to form a computer screen][1] - -Recently, fellow Opensource.com scribe James Farrell wrote a wonderful article entitled _[How Ansible brought peace to my home][2]_. In addition to the great article, I really liked the title, one of those unexpected phrases that I’m sure brought a smile to many faces. - -I recently had a weird but positive experience of my own that begs a similar sort of unexpected label. I’ve been grappling with a difficult problem that arose when upgrading some server and networking infrastructure that broke a Java application I’ve been supporting since the early 2000s. Strangely enough, I found the solution in what appears to be a very informative and excellent article on Kubernetes, of all things. - -Without further ado, here is my problem: - -![][3] - -I’m guessing that most readers will look at that message and think things like, "I hope there’s more info in the log file," or "I’m really glad I’ve never received a message like that." - -Unfortunately, there isn’t a lot of info in the log file, just the same message, in fact. In an effort to debug this, I did three things: - - 1. I searched online for the message. Interestingly, or perhaps ominously, there were only 200 or so hits on this string, [one of which suggested][4] [turn][4][ing][4] [on more debugging output][4], which involved adding the setting - - -``` -**-Djavax.net.debug=ssl:handshake:verbose**[/code] to the **java** command running the application. - - 2. I tried that suggestion, which resulted in a lot of output (good), most of which only vaguely made sense to me as I’m no kind of expert in the underlying bits of stuff like SSL. But one thing I did notice is that there was no information regarding a response from the server in the midst of all of that output; - - 3. So I searched some more. - - - - -Another interesting part of this problem is that the code ran fine when executed by the Java command bundled in the OpenJDK, but failed with this error when using a customized runtime [created from the same OpenJDK in this way][5]. So the relatively modest number of apparently similar problems turned up from search #1 above were actually not all that relevant since they all seemed to be dealing mostly with bad SSL certificates on the server in conjunction with the PostgreSQL JDBC’s ability to check the server’s credentials. - -I should also mention that it took me quite some time to realize that the problem was introduced by using the custom Java runtime, as I managed to check many other possibilities along the way (and indeed, I did fix a few minor bugs while I was at it). My efforts included things like getting the latest OpenJDK, checking and re-checking all the URLs in case one had a typo, and so forth. - -As often happens, after putting the problem aside for a few hours, an idea occurred to me—perhaps I was missing some module in the customized Java runtime. While I didn’t receive any errors directly suggesting that problem, the observable fact that the standard OpenJDK environment worked while the custom one failed seemed to hint at that possibility. I took a quick look in the **jmods/** folder in the OpenJDK installation, but there are some 70 modules there and nothing jumped out at me. - -But again, what seemed odd was, with debugging turned on (see #1 above), there was no indication of what the server would accept, just what the client mostly couldn’t offer, many lines like this: -``` -`Ignoring unavailable cipher suite: TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA` -``` -So I was at least thinking by this time that maybe what was missing was the module that offered those kinds of cipher suites. So I started searching with strings like "jdbc crypto," and in the midst of that, the most unlikely article showed up: [Optimizing Kubernetes Services—Part 2: Spring Web][6], written by [Juan Medina][7]. Midway down the article, I spotted the following: - -![][8] - -Huh! Imagine that, his script is creating a custom Java runtime, just like mine. But he says he needs to add in manually the module **jdk.crypto.ec** in order t \ No newline at end of file diff --git a/sources/tech/20200412 Use this helpful Bash script when stargazing.md b/sources/tech/20200412 Use this helpful Bash script when stargazing.md deleted file mode 100644 index f9e39e5632..0000000000 --- a/sources/tech/20200412 Use this helpful Bash script when stargazing.md +++ /dev/null @@ -1,121 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Use this helpful Bash script when stargazing) -[#]: via: (https://opensource.com/article/20/4/linux-astronomy) -[#]: author: (Alan Formy-Duval https://opensource.com/users/alanfdoss) - -Use this helpful Bash script when stargazing -====== -Keep your eyes on the stars by putting your Linux machine in night -vision mode with xcalib. -![Computer laptop in space][1] - -We often talk about [Linux][2] being used on servers and by developers, but it is used in many other fields too, including astronomy. There are a lot of astronomy tools available for Linux, such as sky maps, star charts, and interfaces to telescope drive systems for controlling your telescope. But one challenge for astronomers is using a computer while keeping their eyes working in the dark. - -When working out in the field at night, astronomers need to preserve their night vision. It can take up to 30 minutes for the human eye to fully dilate and adjust to low light levels, and doing things like checking a phone or laptop at the regular color and brightness levels can cause the eyes to lose their adjustment. This reduces the ability to see in the dark. An example anyone can understand: if you're reading something on your phone in bed at night and get up to go to the bathroom, you know how difficult it can be to see any obstacles that might be in your way. - -### A solution - -I'd like to present a nifty little script to help the astronomer in your family keep "their eyes" in the dark. It relies on a utility called [xcalib][3], a "tiny monitor calibration loader for X.org." It can be installed easily using your Linux package manager. - -On Fedora, for example: - - -``` -$ sudo dnf info xcalib -$ sudo dnf install xcalib -``` - -Or Ubuntu: - - -``` -`$ sudo apt-get install xcalib` -``` - -The xcalib application works only with X11, so it is not functional on Wayland systems. But Wayland has this functionality built-in, so you can get the same results through GNOME Settings. If you're using X11, xcalib is an easy way to change the color temperature of your display. - -### The script - -I discovered [Redscreen][4], a night vision filter script written by Jeff Jahr in 2014. The original script is written for the C shell, but Bash is the common default these days. In fact, the C shell is not installed by default on my current Fedora Linux workstation. So, I decided to write an updated version of the Redscreen script aimed at the newest Bash syntax, but I made one major change: utilizing a case statement. - - -``` -#!/usr/bin/bash -# redscreen.sh Fri Feb 28 11:36 EST 2020 Alan Formy-Duval -# Turn screen red - Useful to Astronomers -# Inspired by redscreen.csh created by Jeff Jahr 2014 -# () - -# This program 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. - -# This program 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 this program.   -# If not, see <[http://www.gnu.org/licenses/\>][5]. - -case $1 in -            on) -            # adjust color, gamma, brightness, contrast -            xcalib -green .1 0 1 -blue .1 0 1 -red 0.5 1 40 -alter -            exit 1 -        ;; -        off) -                xcalib -clear -            exit 1 -            ;; -        inv) -            # Invert screen -                xcalib -i -a -                    exit 1 -        ;; -        dim) -            # Make the screen darker -                xcalib -clear -            xcalib -co 30 -alter -            exit 1       -        ;; -        *) -                echo "$0 [on | dim | inv | off]" -                    exit 1 -        ;; -esac -``` - -![Skychart for Linux Version 4.2.1 on Fedora workstation][6] - -A lot of astronomy programs include a "night-mode" function, but not all do. Also, this script provides a way to affect the entire screen, not just a specific application. This allows you to use your Linux system out in the field at night for other things than just stargazing—such as checking email or reading Opensource.com—without ruining your night vision. - -Whether you are an astronomer or just an amateur stargazer, you can spend all night admiring the heavens using Linux and open source! - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/4/linux-astronomy - -作者:[Alan Formy-Duval][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/alanfdoss -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/computer_space_graphic_cosmic.png?itok=wu493YbB (Computer laptop in space) -[2]: https://opensource.com/resources/linux -[3]: http://xcalib.sourceforge.net/ -[4]: http://www.jeffrika.com/~malakai/redscreen/index.html -[5]: http://www.gnu.org/licenses/\> -[6]: https://opensource.com/sites/default/files/uploads/starchart_in_red.png (A star chart displayed in red screen mode) diff --git a/sources/tech/20200414 How young people can help fight COVID-19 with code.md b/sources/tech/20200414 How young people can help fight COVID-19 with code.md deleted file mode 100644 index 73705b5a62..0000000000 --- a/sources/tech/20200414 How young people can help fight COVID-19 with code.md +++ /dev/null @@ -1,139 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (How young people can help fight COVID-19 with code) -[#]: via: (https://opensource.com/article/20/4/covid19-hackathon) -[#]: author: (Melissa Sasi https://opensource.com/users/mesassi) - -How young people can help fight COVID-19 with code -====== -Youth developers are invited to submit ideas by April 15 to counter the -educational, informational, social, and health challenges uncovered by -the COVID-19 pandemic. -![woman on laptop sitting at the window][1] - -More than 91% of students around the world are impacted by school closures due to COVID-19, and most governments have temporarily closed academic institutions. That's nearly [1.6 billion young people in 188 countries][2]. Also, most of the learning platforms available online today aren't practical, engaging, or interactive, and lack true virtual collaboration. - -This big and wicked challenge got me thinking about how these circumstances are impacting my children, their friends, and my passions of empowering youth, fostering tech entrepreneurship, and inspiring under-represented communities to find their purpose through building digital skills. These all came together in [CodeTheCurve][3], "a global, virtual hackathon for students, educators, teachers, and the research community to build tech skills, entrepreneurial spirit, and professional competencies to build digital creativity and cooperation to mobilize the world." - -We hope you'll want to participate, but you need to act fast: the deadline to submit proposals is April 15. - -### My story - -The passions mentioned above stem from a deeply personal journey: My children and I are victims of parental kidnapping, and access to the internet and digital literacy are my pathways to being a mother from afar. My children, Zahra (age 13), Zahran (15), and Youmna (18), are safe and healthy, and we are frequently connected. They're living the same life youth all over the world are living these days, trying to social distance and remain in good health while figuring out this school thing (or lack thereof)—only one of my children has access to formal virtual learning during to COVID-19 school closures. The other two, without school-driven online learning options, tend to stay up all night playing Fortnight and making TikTok videos. - -I have always been passionate about digital inclusion and empowering the world through computer science, and the effects of COVID-19 have increased my desire to make a difference. About four years ago, I created a non-profit organization, [MentorNations][4], to inspire youth and the world via technology. My non-profit has taught tens of thousands of young people in 12 countries to code. In my work at IBM as a developer advocate, I focus on empowering early-stage entrepreneurs, developers, and students with access to tech skills, professional development, and entrepreneurial thinking. My major focus areas include inspiring students to discover their career potential in enterprise computing while recognizing that we are all ANDs and not ORs. - -Teaching the next generation about the power of collaboration, teamwork, problem-solving, and critical thinking that happen through open source code and principles empowers them to be creators and innovators who focus on solving relevant and real-world problems. - -Looking through the lens of my children, my non-profit work, my roles within a variety of United Nations Task Forces, and my position as IEEE Chair over the Digital Skills Working Group, I wondered, _**what can I do to make a difference with open source technology?**_ So I reached out to my network, and the world responded in a much bigger way than I had ever imagined. - -### CodeTheCurve - -In response, we launched UNESCO's [CodeTheCurve][3] hackathon in collaboration with 14 partners, including UN EQUALS, SAP, iHackOnline, Angel Hack, Internet Society, and YPO. Participants are invited to bring their open source ideas to combat the current and future environment and challenges relating to COVID-19. This initiative is centered around youth empowerment, gender inclusion, and making the world a better place for our communities, including for people we may not directly encounter daily. - -CodeTheCurve is for anyone above the age of 16. To ensure gender, age, and experience diversity, teams must include a developer or data scientist (early-stage chops are fine); at least one person under the age of 25; and at least one male and one female. The 40 teams selected to participate in CodeTheCurve will have access to more than 80 business and technical mentors (experts!) from around the world to help turn their ideas into reality. - -My vision for this hackathon is to train young talent; enable them with free, online resources and access to real people with real answers; and encourage the creation of real-world problem solving in real-time. The results of the hackathon, I hope, will be open source utilities and information that can be used, in some way, to combat COVID-19. - -#### Week-long learning, bootcamp, and hacking experience - -CodeTheCurve is a three-day virtual hackathon experience guided by expert business and technical mentors. Before the hackathon proper, participants begin with two days of self-paced, online learning from content curated by CodeTheCurve collaborators, followed by a two-day, instructor-led learning journey where the 40 selected teams will collaborate in virtual breakout rooms with activity kits, hands-on computing resources in machine learning, and expert-guided plenary sessions. - -#### CodeTheCurve hackathon themes - -CodeTheCurve includes three themes: - - * Education - * Information and data management - * Current and post-COVID-19 health and social issues - - - -#### Professional development, entrepreneurship, and hands-on open source skills - -The 40 teams will be empowered with expert-guided, engaging activities, including the following skill-building opportunities: - - * **Hand-on tech skills** - * Using Jupyter Notebooks for data science - * Data protection, privacy, security, and encryption - * Machine learning and artificial intelligence - * Architectural diagrams and frameworks - * Technical roadmaps - * **Professional development** - * Design thinking - * Personal branding - * Communication skills - * How not to feel like an imposter - * Conflict resolution - * Working in global, virtual teams - * Media literacy - * Ethics in machine learning and artificial intelligence - * **Entrepreneurship** - * Problem statements - * Mission and vision statements - * Value propositions - * Audience and target markets - * Business model canvassing - * Pitch decks - * Pitch practice - - - -### April 15: CodeTheCurve deadline - -Did I mention that the initial application deadline is April 15? Here's the full timeline: - - * Video submission deadline: **April 15** - * 40 selected teams announced: **April 20** - * Learning resources for pre-collaboration: **April 20-21** - * Instructor-led learning: **April 22-23** - * Hacking: **April 24-26** - * CodeTheCurve winners announced: **April 30** - - - -#### Prizes. Prizes. Prizes. - -Prizes include free access to [IBM LinuxONE Community Cloud][5] for one year, free training courses from SAP, four pitch opportunities at IBM and SAP events, free access to enterprise-grade IBM Z and its machine learning suite for six months, and one-on-one technical and business mentorship for a full year with industry experts. - -### How to apply - -Interested in applying? Know someone who should apply? Simply [submit a video][6] of your **amazing** open source idea, the problem you're trying to solve, and who you expect to reach. - -If you'd like to learn more, here are some other articles about CodeTheCurve: - - * [UN News CodeTheCurve article][7] - * [UNESCO CodeTheCurve blog][8] - * [Forbes CodeTheCurve article][9] - * [IBM CodeTheCurve blog][10] - - - -I cannot wait to see all the amazing open source ideas the world brings our way! - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/4/covid19-hackathon - -作者:[Melissa Sasi][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/mesassi -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/lenovo-thinkpad-laptop-window-focus.png?itok=g0xPm2kD (young woman working on a laptop) -[2]: https://en.unesco.org/covid19/educationresponse -[3]: https://www.codethecurve.org/ -[4]: https://mentornations.org/ -[5]: https://developer.ibm.com/linuxone/ -[6]: http://ibm.biz/codethecurve-apply -[7]: https://news.un.org/en/story/2020/04/1061142 -[8]: http://ibm.biz/unesco-pr -[9]: https://www.forbes.com/sites/danielnewman/2020/04/10/digital-transformation-for-good-shines-as-we-fight-covid-19/#78d51a4c4946 -[10]: http://ibm.biz/codethecurve diff --git a/sources/tech/20200414 Try this Kubernetes HTTP router and reverse proxy.md b/sources/tech/20200414 Try this Kubernetes HTTP router and reverse proxy.md deleted file mode 100644 index fc78ee9bce..0000000000 --- a/sources/tech/20200414 Try this Kubernetes HTTP router and reverse proxy.md +++ /dev/null @@ -1,196 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Try this Kubernetes HTTP router and reverse proxy) -[#]: via: (https://opensource.com/article/20/4/http-kubernetes-skipper) -[#]: author: (Sandor Szücs https://opensource.com/users/sszuecs) - -Try this Kubernetes HTTP router and reverse proxy -====== -Skipper is designed to handle large numbers of HTTP route definitions, -beyond what you would want to manage in Nginx or Apache. -![Traffic circle with arrows pointing which way to go][1] - -Skipper is an open source HTTP router and reverse proxy for service composition. As its [GitHub page][2] states, it's designed to handle large amounts of dynamically configured HTTP route definitions (>600,000 routes) with detailed lookup conditions and flexible augmentation of the request flow with filters. It can be used out of the box or extended with custom lookup, filter logic, and configuration sources. - -### Proxies - -When some people think of a proxy, they imagine a webpage that serves as a gateway to an intranet or a suspicious-looking webpage designed to unblock social media sites on a school or work network. A forward proxy is one that operators of desktop infrastructure use to save internet bandwidth, enforce parental controls, or limit social media access. Another kind of proxy is one in which an individual user navigates to a page, provides credentials, and is then forwarded to a protected intranet resource. The inverse of that kind of proxy is the reverse proxy, which accepts all traffic and forwards it to a specific resource, like a server or container. That's the kind of work Skipper does for infrastructure. - -When I read [Matt Klein's post][3] on modern network load balancing and proxying, I realized that we, as [Skipper][4] maintainers, should explain more features and details about why and how you can leverage HTTP proxies. In this article, I will treat the terminology "HTTP (reverse) proxy" and "HTTP router" as the same. - -### HTTP routing - -According to [Wikipedia][5]: "Routing is the process of selecting a path for traffic in a network." This definition refers to routing at [OSI layer 3][6], most commonly based on [IP][7] with routing protocols like [BGP][8] or [OSPF][9]. Since this article isn't about one of those, I will try to explain what HTTP routers are about. But first, I want to introduce Skipper, an [OSI layer 7][10] HTTP router library written in [Go][11] and a core component of retailer [Zalando][12]'s e-commerce shop and the [Kubernetes][13] Ingress infrastructure. - -At Zalando, we use Skipper as a [Kubernetes Ingress][14] controller to support our users with visibility, reliability, security, and additional features to offload common applications. - -Any organization running HTTP services, often in a microservice architecture, needs to route HTTP requests to the right applications. HTTP routers route based on information provided by the HTTP request. For example, the following shows an HTTP/1.1 request. - - -``` -GET /details HTTP/1.1 -Host: [www.zalando.de][15] -User-Agent: curl/7.49.0 -Accept: */* -Authorization: Bearer <token> -... -``` - -We can route based on the method **GET**, the path **/details**, the **Host** header [**www.zalando.de**][16], or any arbitrary part of the request. - -One common problem an application owner faces is splitting an API into multiple applications, so you need to split the responsibility of a component into subcomponents. Another common task is to support refactoring; maybe you have rewritten one part of your app, and you want to deploy it separately now. - -For example, imagine you you have a store that has a list of products and their details, and you need to split it into _shop_ and _product_ backend applications. At **/**, your shop shows the list of products, and at **/details**, it shows product details, such as color, size, sustainability, and price. - -![Figure 1: shop][17] - -You need to split the responsibility of the product detail into its own application, such that **/** stays in the _shop_ application and **/details** is refactored to the _product_ application. - -![Figure 2: product and shop][18] - -To make sure an HTTP proxy finds the right backend for an incoming request, it uses a routing table to check the destination to make sure it's correct. - -### Routing tables - -In Skipper, the routing table is created by pulling information generated by [dataclients][19] from different sources. One source can be a [routes file][20], similar to what you may see in more popular HTTP servers, like Apache or Nginx. - -Depending on the size of your organization—or better, the number of backend applications—the routing table can grow quite large. Skipper implements the routing table as a tree that can scale beyond 600,000 routes (far more than you'd want to manage in an Nginx or Apache config). - -Following along with the example application above, Table 1 shows the routing table from [Figure 2][21]. The store **/** should be routed to **shop,** and the **/detail** routed to the **product** application. - -path | app ----|--- -/ | shop -/detail | product - -Table 1: Routing table - -The available dataclients in Skipper fetch routes from different sources and what a route consists of. - -### Dataclient - -The routing configuration in Skipper's routes file [dataclient][22] is similar to what you might know from HTTP proxies in Nginx or Apache. In Skipper, a routes file specifies all routes in [eskip][23] syntax, as shown in Figure 3. - - -``` -r1: P1() && P2() && .. && PN() -    -> f1() -    -> f2() -    ... -    -> fN() -    -> <backend>; -r2: ... -... -``` - -Figure 3: Routes file in eskip - -In the above: - - * **r1, r2, ...** are unique routeIDs. - * **P1, P2,..,PN** are predicates that define the matching. - * **f1, f2,..,fN** are filters that are applied after the route was selected. Filters can change the request and response. - * Finally, the Skipper backend is defined. This can be a single URL, a list of load-balanced URLs, and others for special cases such as [direct response][24]. - - - -The [routes string][25] is another dataclient that is handy for tests. For example, if you need a pseudo backend for your demo that replies a green background with HTML, you could use: - - -``` -$ skipper -routes-string='* --> inlineContent( -      "<html><body style=\"background-color: green;\"></body></html>" -   )' -``` - -Skipper's most popular dataclient, by far, is the Kubernetes dataclient, which is used to fetch information from a [Kubernetes API server][26] and create a routing table from [Skipper Ingress][27] resources and the [RouteGroup][28] custom resource definition (CRD). - -To summarize the above, dataclients fetch information from different providers to build Skipper's routing table. Table 1 shows a routing table for the shop/description example, and Skipper uses predicates to select the route to process the request. - -### Predicates - -In Skipper, an incoming request is matched to [predicates][29] of all the routes to find the best matching route for an incoming request. Predicates are functions that match based on the incoming request. In the example from Figure 2 and Table 1, Skipper would have a routing table similar to Figure 4: - - -``` -shop: Path("/") -    -> ""; -product: Path("/detail") -    -> ""; -``` - -Figure 4: Skipper routing table - -This means HTTP requests with a path **/** would be matched by the **Path("/")** predicate, such that Skipper will execute the shop route. Requests with a path **/detail** would be matched by **Path("/detail")** and routed to the product application. - -In general, routing behavior can be changed by predicates. There are a lot of predicates you can choose from. For example, **Method("POST")** will be true only if a POST request would be passed. A route with more predicates is considered more specific. Also, a route with more predicates has more weight in the route selection than one that has less. - -Special cases are **Path()** and **PathSubtree()**, which is matched first in a tree and reduces the number of routes, which are scanned as a list. For example, the tree structure shown in Figure 5 helps to scale the number of routes to more than 600,000 in one of Zalando's production setups. - -![Skipper tree example][30] - -### Filters - -After a route is selected, the request [filters][31] are applied. Filters work on request or response; they can change the incoming request to the backend, and they can change the response to the client. - -For example, **setRequestHeader("Foo", "bar")** sets the HTTP header **"Foo"** to the value **"bar"**, such that the backend sees this header in the request. - -The response filter **responseCookie("keks", "val", 3600)** sets a Cookie named **"keks"** in the response to the caller, which might be a browser in this case. The cookie would have the value **"val"** and is valid for one hour. - -One filter that works on request and response is **enableAccessLog(40, 5)**. This would do access logs for all responses from the backend with status codes 40x or 5xx. - -As you can see from the examples, filters can change the request or the response or just do some work based on it. Another filter example is **auth filters** or **ratelimits**. These would stop requests from passing to the backend if the request should not be allowed to pass. For example, to serve static content from a directory called **/var/www**, you can use the filter **static("/var/www")**. - -### Learn more - -This article provided a basic overview of Skipper and its capabilities. For more information, consult [Skipper's documentation][32], and please share your questions or feedback in the comments. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/4/http-kubernetes-skipper - -作者:[Sandor Szücs][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/sszuecs -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/LAW-patent_reform_520x292_10136657_1012_dc.png?itok=Cd2PmDWf (Traffic circle with arrows pointing which way to go) -[2]: https://github.com/zalando/skipper -[3]: https://blog.envoyproxy.io/introduction-to-modern-network-load-balancing-and-proxying-a57f6ff80236 -[4]: https://opensource.zalando.com/skipper -[5]: https://en.wikipedia.org/wiki/Routing -[6]: https://en.wikipedia.org/wiki/OSI_model#Layer_3:_Network_Layer -[7]: https://en.wikipedia.org/wiki/Internet_Protocol -[8]: https://en.wikipedia.org/wiki/Border_Gateway_Protocol -[9]: https://en.wikipedia.org/wiki/Open_Shortest_Path_First -[10]: https://en.wikipedia.org/wiki/OSI_model#Layer_7:_Application_Layer -[11]: https://golang.org/ -[12]: https://en.zalando.de/ -[13]: https://kubernetes.io -[14]: https://kubernetes.io/docs/concepts/services-networking/ingress/ -[15]: http://www.zalando.de -[16]: https://en.zalando.de/?_rfl=de -[17]: https://opensource.com/sites/default/files/uploads/skipper_1_shop.png (Figure 1: shop) -[18]: https://opensource.com/sites/default/files/uploads/skipper_2_product-shop.png (Figure 2: product and shop) -[19]: https://opensource.zalando.com/skipper/reference/backends/ -[20]: https://opensource.zalando.com/skipper/data-clients/eskip-file/ -[21]: tmp.ftM58r5YpM#fig2 -[22]: https://opensource.zalando.com/skipper/tutorials/development/#dataclients -[23]: https://godoc.org/github.com/zalando/skipper/eskip -[24]: https://opensource.zalando.com/skipper/reference/backends/#shunt-backend -[25]: https://opensource.zalando.com/skipper/data-clients/route-string/ -[26]: https://kubernetes.io/docs/concepts/overview/components/#kube-apiserver -[27]: https://opensource.zalando.com/skipper/kubernetes/ingress-usage/ -[28]: https://opensource.zalando.com/skipper/kubernetes/routegroups/ -[29]: https://opensource.zalando.com/skipper/reference/predicates/ -[30]: https://opensource.com/sites/default/files/uploads/skipper_5_tree.png (Skipper tree example) -[31]: https://opensource.zalando.com/skipper/reference/filters/ -[32]: https://opensource.zalando.com/skipper/ diff --git a/sources/tech/20200417 Is reporting 100- of code coverage reasonable.md b/sources/tech/20200417 Is reporting 100- of code coverage reasonable.md deleted file mode 100644 index 6d57fb30f8..0000000000 --- a/sources/tech/20200417 Is reporting 100- of code coverage reasonable.md +++ /dev/null @@ -1,174 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Is reporting 100% of code coverage reasonable?) -[#]: via: (https://opensource.com/article/20/4/testing-code-coverage) -[#]: author: (Eric Herman https://opensource.com/users/ericherman) - -Is reporting 100% of code coverage reasonable? -====== -The time required to reach reporting 100% of code coverage is -considerably less than what I would have estimated before this -exploration. -![Code going into a computer.][1] - -The [Foundation for Public Code][2] works to enable open and collaborative public-purpose software for public organizations (like local governments) internationally. We do this by supporting software at the codebase level through codebase stewardship. We also publish the [Standard for Public Code][3] (draft version 0.1.4 at the time of this writing), which helps open source codebase communities build solutions that can be reused successfully by other organizations. It includes guidance for policymakers, managers, developers, designers, and vendors. - -Among other things, the standard addresses [code coverage][4], or how much of the code is executed when an automated test suite runs. It's one way to measure the likelihood that the code contains undetected software bugs. In the standard's ["Use continuous integration" requirements][5], it says, "source code test and documentation coverage **should** be monitored." Additionally, the [guidance to check][6] this requirement states, "code coverage tools check whether coverage is at 100% of the code." - -Over my software development career, which spans more than two decades, I have worked on codebases large and small and some with very high percentages of code coverage. Yet none of the non-trivial codebases I have contributed to have reported 100% test coverage. This made me question whether the "_check whether coverage is at 100%_" guidance would be followed. - -When I think about the nature of the test coverage gaps in the codebases I have worked on, they typically have been around system states that are very difficult (and in some cases, impossible) to create. For instance, in earlier versions of Java, I recall we were required to write catch blocks for exceptions that could never be thrown. - -Previously, I reasoned that 100% test coverage is something to aspire to, but it is probably not worth the cost on most codebases and may not be realistic in a few. - -Coverage tools have been getting smarter and more tunable over time. Languages have been getting lighter, and libraries have been getting easier to mock and test. So how unreasonable is 100% coverage of functionality today? - -### Resource exhaustion - -The high-quality but low test-coverage codebases I contribute to happen to be written in C or C++. A quick glance at these codebases shows that there is a class of common low-coverage situations that I'll lump together under the umbrella of resource exhaustion: out of memory, out of disk space, etc. - -Here is a simple example of code that does not check for resource exhaustion; in this case, memory allocation failure: - - -``` -char *buf = malloc(80); -sprintf(buf, "hello, world"); -``` - -This example code needs to allocate a small buffer, so it calls **malloc(80)**, and **malloc** usually returns a pointer to 80 bytes of memory … but that can fail. In the (unlikely) case that **malloc** returns **NULL**, the code above will proceed to call **sprintf** with a **NULL** pointer which causes a crash. It is typical in C code to do something more like this: - - -``` -char *buf = malloc(80); -if (buf == NULL) { -    fprintf(stderr, "malloc returned NULL for 80 bytes?\n"); -    return NULL; -} -sprintf(buf, "hello, world"); -``` - -This code guards against **malloc** returning **NULL**, which is better. However, creating tests for correct behavior in the face of this kind of resource exhaustion can be really hard. It's not impossible, of course, and there are multiple approaches. Many approaches result in fragile tests, which require a lot of maintenance over time, and these tests can be very time-consuming to build in the first place. - -### Exploration - -Pondering this, I decided to run a little experiment to see if I could learn something about the costs and consequences of this strict, 100% criterion. - -Since I do some embedded-systems development, I have a few C libraries that I've developed and reused over the years in my embedded projects. I decided to look at some of these libraries and see just how hard it would be to bring them up to 100% code coverage. In the process, I paid attention to the impact on code clarity, code structure, and performance. - -#### A library with preexisting dependency injection - -Step one is measuring by adding code coverage to a codebase. Since this is C, **gcc** provides quite a lot by default with the **\--coverage** option, and **lcov** (with **genhtml**) does a good job of making reports; thus, this step was easy. I expected the starting coverage to be pretty good—it was, but it had a few untested branches, as well as the predicted gaps around error conditions and error reporting. - -I made error reporting pluggable, so it was easier to capture and make assertions around error messages in previously untested branches. - -Since this code already allowed for pluggable implementations of **malloc** and **free**, it was straightforward to write little malloc and free wrappers that I could inject memory allocation failures into. Within an hour or two, that was covered. - -In the process, I realized that there was one condition where, from the perspective of the calling client code, it was impossible to distinguish between the situation where an error occurs and one where **NULL** is a valid return value. For you C programmers, it was essentially similar to the following: - - -``` -/* stashes a copy of the value - * returns the previously stashed value */ -char *foo_stash(foo_s *context, -                char *stash_me, -                size_t stash_me_len) -{ -    char *copy = malloc(stash_me_len); -    if (copy == NULL) { -        return NULL; -    } -    memcpy(copy, stash_me, stash_me_len); -    char *previous = context->stash; -    context->stash = copy; -    /* previous may be NULL */ -    return previous; -} -``` - -I adjusted the API to allow the error information to be explicitly available. If you are a C developer, you know there are various ways this can be accomplished. I chose an approach similar to this: - - -``` -/* stashes a copy of the value - * returns the previously stashed value - * on error, the 'err' pointer is set to 1 */ -char *foo_stash2(foo_s *context, -                char *stash_me, -                size_t stash_me_len, -                int *err) -{ -    char *copy = malloc(stash_me_len); -    if (copy == NULL) { -        *err = 1; -        return NULL; -    } -    memcpy(copy, stash_me, stash_me_len); -    char *previous = context->stash; -    context->stash = copy; -    /* previous may be NULL */ -    return previous; -} -``` - -Without testing for resource exhaustion, it may have taken a long time for me to notice this (now obvious) shortcoming of the API. - -To get **lcov** to report 100% test coverage, I had to tell the compiler to [not inline any code][7], something I learned it does even at optimization level zero. - -When embedded in actual firmware, the compiler optimized away the unused indirection; therefore, the added indirection in the source code imposed no real-world performance penalty in the compiled firmware. - -Of course, this was the easy library. - -#### A more typical library - -Once I established a method of injecting memory allocation failures in tests, I decided to move onto another library, but one for which malloc and free were not already pluggable. I had questions. How invasive will this be to the codebase? Will it clutter the code, making it less clear? How time-consuming will it be? - -While I don't always record coverage metrics, I am a big believer in testing: more than 20 years ago, I learned that my code improves if I write the tests and client code [before][8] the implementation code, and I have worked that way ever since. (In [_Test-Driven Development: By Example_][9], you can find my name in the acknowledgments.) Yet, when I added code coverage reporting to the second library, I was surprised to see that (at some point in the past) I had added a pair of functions to the library without adding tests for them. The other untested areas were, unsurprisingly, code to handle memory-allocation failure. - -Writing tests for the pair of untested functions was, of course, quick and easy. The coverage tools also revealed that I had a function with an untested code branch that, given only a quick glance, contained a bug. The fix was trivial, yet I was surprised to find a bug, given the different projects where I use this library. Nonetheless, there it was, a humbling reminder that, all too often, bugs lurk in untested code. - -Next up was the more challenging stuff: testing for resource exhaustion. I started by introducing some global variables for the malloc/free function pointers, as well as a variable to hold a memory-tracking object. Once that was working, I moved those variables from global scope into a context argument that was already present. Refactoring the code to allow for the necessary indirection took only a couple of hours (less time than I expected), and the complexity added was negligible. - -### Reflections - -My conclusion from the first library was that it was well worth the time. The code is now more flexible, the API is now more complete for the caller, and writing the failure injection harness was pretty easy. - -From the second library, I was reminded that even less-pluggable code could be made testable without adding undue levels of complexity. The code improved, I fixed a bug, and I can be more confident in the code. Also, the additional modularity of being able to plug in an alternative memory allocator is a feature that may prove more valuable in the future. - -Exclusion comments are a feature of **lcov** to cause coverage reporting to ignore a block of code. Interestingly, I didn't feel the need to use exclusion comments in either library. - -I am more certain than ever that even very good code is improved by investing in test coverage. - -Both of these codebases are small, had some modularity already, began from a point of good testing, are single-threaded, and contain no graphical UI code. If I were to try to tackle this on one of the larger, more monolithic codebases I contribute to, it would be harder and require a larger time investment. There would likely be some sections of code where I might still conclude that the best thing to do would be to "cheat" by tuning the tooling to not report on some section of code. - -That said, I estimate that the time required to reach reporting 100% of code coverage is considerably less than what I would have estimated before this exploration. - -If you happen to be a C coder and want to see a running example of this, including **gcov** / **lcov** usage, I extracted the out-of-memory injecting code and put it in an [example repository][10]. - -Have you pushed a codebase to 100% coverage by tests, or tried to? What was your experience? Please share it in the comments. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/4/testing-code-coverage - -作者:[Eric Herman][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/ericherman -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/code_computer_development_programming.png?itok=4OM29-82 (Code going into a computer.) -[2]: https://publiccode.net/ -[3]: https://standard.publiccode.net -[4]: https://en.wikipedia.org/wiki/Code_coverage -[5]: https://standard.publiccode.net/criteria/continuous-integration.html#requirements -[6]: https://standard.publiccode.net/criteria/continuous-integration.html#how-to-test -[7]: https://twitter.com/Eric_Herman/status/1224983465784938496 -[8]: https://opensource.com/article/20/2/automate-unit-tests -[9]: https://www.oreilly.com/library/view/test-driven-development/0321146530/ -[10]: https://github.com/ericherman/context-alloc diff --git a/sources/tech/20200419 A stress-free guide to keeping WordPress sites updated.md b/sources/tech/20200419 A stress-free guide to keeping WordPress sites updated.md deleted file mode 100644 index 98ee9b1b1e..0000000000 --- a/sources/tech/20200419 A stress-free guide to keeping WordPress sites updated.md +++ /dev/null @@ -1,116 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (A stress-free guide to keeping WordPress sites updated) -[#]: via: (https://opensource.com/article/20/4/updating-wordpress) -[#]: author: (Sara Kelly https://opensource.com/users/sarapk) - -A stress-free guide to keeping WordPress sites updated -====== -This practical guide to a necessary task will show you how to maximize -site performance and avoid bugs and other issues with regular updates. -![Working from home at a laptop][1] - -We all know how important it is to keep WordPress sites updated. New updates provide the latest bug and security fixes against any nasties lurking on the web. But, more critically, an outdated site can also lead to poor performance, such as slow loading speed or an outdated look and feel. - -Unfortunately, keeping your WordPress site up-to-date is not as easy as clicking a button. There are several components to consider, from theme to plugins to PHP. Even worse, updating too quickly can wreak another kind of havoc. Have you ever experienced the dreaded, "There has been a critical error on your website" warning after an innocent little update? I know I have, many times! - -Here is a practical guide on what to look out for, as well as when and what to update, to ensure your WordPress site works well. - -### Updating WordPress - -Let's start with the basics. Check your WordPress version is up-to-date by visiting Dashboard > Updates. - -![WordPress update screen][2] - -### Choosing a WordPress theme - -Before we deep dive into updating themes, I'd like to take a few steps back. Choose an up-to-date theme from the get-go and do your homework before installing it! There is nothing worse than pouring your heart and soul into customizing a new theme, only to discover it is buggy. - -Questions to ask when choosing a theme include: - - * When was it first created? - * What is the current version available? - * Does the theme provider still maintain an active demo site and helpdesk? - * What do recent reviews say about the theme? - - - -If the theme provider is no longer maintaining the theme, save yourself the trouble and move on. Also, don't assume that just because you paid for a theme, that is necessarily maintained. I recently fell into this trap when I purchased [Pinable][3]. I loved the Pinterest look and feel. However, soon after installation, I noticed the lack of customization within the theme settings, major compatibility issues arose with my plugins, and the customer service was nonexistent. I should have known better. The theme was created in 2013 and selling for a bargain. - -If you already have a theme, then pay attention to how frequently updates become available. If there are never any updates, the theme provider may have closed up shop. It is only a matter of time before the impact of an outdated theme will cause problems. - -A quick aside while we are on the topic—up-to-date themes also give access to the two new alignment options in the WordPress block editor, which enable wide-width and full-width images. These help your blog posts look more professional. While there are a number of [tutorials][4] on the web that show you how to manually update your functions, PHP file, and CSS to enable the new alignment blocks, the code does not always work on older themes (especially masonry themes). - -![Wordpress theme][5] - -### Updating themes - -To check the current version of your theme, go to Appearance > Themes and click on the active theme to see the current version. If an upgrade is available, there will be an alert banner. Click on "update now" to initiate the update. You can also check for updates by going to Dashboard > Updates. - -![Themify screenshot][6] - -If you purchased a theme from a marketplace such as [Envato][7] or [Themify][8], check the theme documentation to learn what is required to initiate updates, as it will not show up automatically in the dashboard. In most cases, you will be required to download and install a specific plugin or manually upload new versions when they become available. In the latter case, you will need to delete or rename the old theme file via your cPanel before you can install the new one. A guide to installing themes via cPanel is available [here][9]. - -If you plan to customize your theme extensively and are worried about the impact of this when upgrading, consider creating a child theme first. A child theme lets you make changes without touching the original theme's code. You can then update your site without losing any customizations you've made. Read more about child themes [here][10]. - -As I said before, the source of most issues tends to be the theme. Learn what is required to keep your theme up to date, and do so regularly. If your theme provider is no longer creating updates, then find a new theme. - -### Easy does it for plugins - -If you manage multiple plugins, then you will be used to the frequent dashboard reminders to update! Before we get onto that, though, let's touch on some basics. - -As a general rule, you don't want to have too many plugins. They slow down the speed of your site by creating more code that the browser has to load. Always delete any inactive plugins. I prefer to manage plugins on the Plugins tab. Here you can see all active and inactive plugins, the current version, and whether an update is available. To update the plugin, simply click "update." - -![Plugin update page][11] - -Nonetheless, I implore you to wait a week or two before installing new updates. Updating my plugins too quickly has caused me no end of grievances. To begin with, updates are prone to human error. Don't be the guinea pig that tests out the latest version. Sometimes, the newest version of a plugin is not compatible with an older version of WordPress or your theme. Check these are up-to-date first. - -### Website down after updating plugins? - -If your site has stopped working or performance has dropped noticeably after updating your plugins, then all is not lost. Forget about those newfangled plugins that promise to test speed and identify buggy plugins (the last thing you want is more plugins)! Disable all your plugins, then activate one at a time while you test the speed and performance of your site on a website such as [Pingdom][12]. This is a great exercise to perform periodically, even if your website has not crashed. Once you identify the plugin causing the problem, delete it. - -In the event you cannot access WordPress because there is a critical error, then you will need to access your files via cPanel and delete all the plugin folders from there ([full instructions here][13]). Don't worry; doing this will not impact your website's content. You can then proceed to reinstall and activate the plugins one-by-one via WordPress. - -Cache plugins tend to be the biggest culprit in my experience. Issues with cache plugins can be minimized by clearing the cache frequently. Do not install multiple cache plugins that perform the same function, as they will only serve to slow down your site. The only way to truly get around cache plugin issues is to either not use them, use a plugin recommended by your hosting provider, or become an expert on cache. [This blog][14] on common cache issues in WordPress is a good place to start. - -### Back up before updating PHP - -If you are concerned about your website speed and have spent enough time browsing Google for answers, then you likely have seen the advice, "You gotta update your PHP!" Please tread carefully with manual PHP updates, though! If you have a good hosting provider, you should never need to do this. Rather, select the option for automatic PHP version management with your host. Newer versions of PHP may not be stable or compatible with the version of WordPress you are running. Let your hosting provider be the one to determine when updates are ready. - -However, if you are adamant that an old version of PHP is causing your website to be slow, take care to follow these steps before initiating an update. First, back up your site. Investing in a premium version of [Jetpack][15] is worth its weight in gold. Jetpack can perform real-time as well as daily backups, depending on your plan. Not to mention, their customer service and troubleshooting support are excellent. Secondly, inform your hosting provider that you plan to update the PHP and seek their advice first. If your host is unable to advise or wants to charge you for the privilege, you should probably think about changing hosts. - -You can update PHP either via cPanel or via your hosting platform under Devs > PHP Manager. After that, you are on your own, as that is where my expertise on PHP ends. - -If you have any other tips or pitfalls regarding updating WordPress, drop them in the comments box below. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/4/updating-wordpress - -作者:[Sara Kelly][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/sarapk -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/wfh_work_home_laptop_work.png?itok=VFwToeMy (Working from home at a laptop) -[2]: https://opensource.com/sites/default/files/uploads/wp_update_1.png (Wordpress update screen) -[3]: https://www.theme-junkie.com/themes/pinable/ -[4]: https://www.billerickson.net/full-and-wide-alignment-in-gutenberg/ -[5]: https://opensource.com/sites/default/files/uploads/wp_theme_2.png (Wordpress theme) -[6]: https://opensource.com/sites/default/files/uploads/themify_3.png (Themify screenshot) -[7]: https://elements.envato.com/ -[8]: https://themify.me/ -[9]: https://hostadvice.com/how-to/how-to-install-a-wordpress-theme-using-cpanel/ -[10]: https://developer.wordpress.org/themes/advanced-topics/child-themes/ -[11]: https://opensource.com/sites/default/files/uploads/plugins_4.png (Plugin update page) -[12]: https://tools.pingdom.com/ -[13]: https://www.wpbeginner.com/plugins/how-to-deactivate-all-plugins-when-not-able-to-access-wp-admin/ -[14]: https://mhthemes.com/support/knb/solving-common-cache-issues-on-wordpress-websites/ -[15]: https://jetpack.com/upgrade/backup/?utm_source=google&utm_campaign=google_jetpack_search_brand_desktop_sg_en&utm_medium=paid_search&utm_term=%2Bwordpress%20%2Bjetpack%20%2Bbackup&creative=379260213317&campaignid=2061290863&utm_content=77066462603&matchtype=b&device=c&network=g&gclid=Cj0KCQjwu6fzBRC6ARIsAJUwa2RuPx5Dzr72eBEtZegsf11MmOBgLiwLX2HcEUXVaULIgv1MdZqGmeAaArmFEALw_wcB&gclsrc=aw.ds diff --git a/sources/tech/20200420 New open source GIS projects for Kubernetes applications.md b/sources/tech/20200420 New open source GIS projects for Kubernetes applications.md deleted file mode 100644 index a8fdec6e71..0000000000 --- a/sources/tech/20200420 New open source GIS projects for Kubernetes applications.md +++ /dev/null @@ -1,99 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (New open source GIS projects for Kubernetes applications) -[#]: via: (https://opensource.com/article/20/4/gis-kubernetes) -[#]: author: (Adam Timm https://opensource.com/users/timmam) - -New open source GIS projects for Kubernetes applications -====== -pg_tileserv and pg_featureserv make it easier for developers to add -location services to Kubernetes applications. -![A map with a route highlighted][1] - -Spatial data from geographic information systems (GIS) is all around us. From smartphones that make our lives better and more convenient to precision agriculture that is increasing the amount of food farmers can produce while reducing the cost, whether or not we realize it, almost every part of our lives is touched by spatial data. - -This increase of spatial data is simultaneously bringing an increase of open spatial datasets that people can consume and use to build all sorts of new applications. However, these types of datasets have not always been easy to work with. Also, due to the size of some of the geographic data, they can be difficult to bring to modern application deployment frameworks such as Kubernetes. - -To help with these issues, [Crunchy Data][2] recently announced two new open source projects, [pg_tileserv][3] and [pg_featureserv][4], to make it easier to develop cloud-native spatial applications. These projects, part of open source [Crunchy Spatial][5], help developers leverage the robust [PostGIS][6] geospatial database extension to [PostgreSQL][7] without having to write complex SQL statements. - -So what are pg_tileserv and pg_featuresev, how do they make it easier for developers to add location services to their Kubernetes applications, and what does this mean for the future of spatial applications? - -### Traditional GIS vs. modern spatial microservices - -Traditionally, when an organization or individual works with spatial data, they start with a product that grew up as a GIS. There are many high-quality open source GIS products ([QGIS][8], [GeoServer][9], [GeoNode][10], etc.), but they may not align with modern, cloud-native approaches to software design. - -The popularity of Kubernetes creates challenges for these legacy applications around automation and deployment, as they require a lot of manual configuration, for example, when data sources are added and modified. In many setups, these spatial applications must exist outside Kubernetes and cannot leverage many of the conveniences it provides. - -In contrast, modern spatial services should be driven by the spatial data that they are processing and serving out. They should align with modern software development practices and scale efficiently and integrate easily with developer workflows. - -Applications that are spatially aware also need to ensure they can handle the unique characteristics of spatial data (e.g., geometries, projections, etc.). To do all of this in independent microservices can be challenging unless you have a highly capable database to do the majority of the work for you. This is where pg_tileserv and pg_featureserv help, as both projects leverage the power of PostGIS, an open source geospatial extension to PostgreSQL, to provide advanced spatial capabilities from a simple REST framework - -### Generate map vector tiles with pg_tileserv - -![pg_tileserv][11] - -pg_tileserv is a lightweight vector tile server written in Go that enables you to generate [vector tiles][12] directly from PostGIS. It does this by implementing the **ST_AsMVT()** function in a best-practice method that translates an HTTP request to the database. It includes common defaults that allow you to pass a database connection URL to the server and be up and running in no time. There's no heavyweight software to install and configure, and it's designed for cloud-native GIS applications. - -For specific examples on how to use it, check out our blog posts on [tile serving][13] and [spatial tile serving with PostgreSQL functions][14]. - -### Annotate your maps with pg_featureserv - -![pg_featureserv][15] - -pg_featureserv is a lightweight service written in Go that enables you to serve features directly out of PostGIS. It implements the [OGC API][16] for features and provides a standard REST endpoint for your spatial data and functions contained in PostGIS. Just like pg_tileserv, there's no heavyweight software to install; just pass a database connection URL to your PostGIS database, and you're off to the races. For a specific example of how to use it, check out our post on [querying spatial features][17]. - -### Focus on spatial data, not GIS - -With our deep background in developing PostGIS and building PostGIS-backed applications, we wanted to help developers unlock all the value of spatial data in a way that is easy to deploy, scale, and maintain. As the source code of pg_tileserv and pg_featureserv show, we are just leveraging functions already in PostGIS. This allows developers to quickly add spatial data to their applications and data scientists to focus on the data. - -![GIS architecture][18] - -The benefits of this approach are: - - * Faster performance because PostgreSQL and PostGIS are doing the work for you - * Less configuration to maintain because the database structure is the configuration - * By design, it runs in the cloud at enterprise scale from the start - * Shorter times to update customer-facing applications—when you update your data in the database, your application is updated instantly - * Ability to focus more on maintaining your data and delivering value to your users and less on wrangling software - - - -Also, since these services respond to the configuration of your database, they also expose functions contained in the database. Rather than developing their data functions to incorporate them into software later, data scientists can create functions in the database that are immediately made available via a REST API. The software begins to fade into the background so an organization can focus on the data. - -Suffice it to say, we're pretty excited about these new geospatial services, and we definitely want your feedback on them. Feel free to check out [pg_tileserve][3] and [pg_featureserv][4], try deploying them alongside your PostGIS databases with the [PostgreSQL Operator][19], and share your feedback in the comments. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/4/gis-kubernetes - -作者:[Adam Timm][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/timmam -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/map_route_location_gps_path.png?itok=RwtS4DsU (A map with a route highlighted) -[2]: https://www.crunchydata.com/ -[3]: https://github.com/CrunchyData/pg_tileserv -[4]: https://github.com/CrunchyData/pg_featureserv -[5]: https://www.crunchydata.com/products/crunchy-spatial/ -[6]: https://postgis.net/ -[7]: https://www.postgresql.org -[8]: https://www.qgis.org/en/site/ -[9]: http://geoserver.org/ -[10]: http://geonode.org/ -[11]: https://opensource.com/sites/default/files/pg_tileserv.jpg (pg_tileserv) -[12]: https://info.crunchydata.com/blog/dynamic-vector-tiles-from-postgis -[13]: https://info.crunchydata.com/blog/crunchy-spatial-tile-serving -[14]: https://info.crunchydata.com/blog/crunchy-spatial-tile-serving-with-postgresql-functions -[15]: https://opensource.com/sites/default/files/pg_featureserv.jpg (pg_featureserv) -[16]: http://www.ogcapi.org/ -[17]: https://info.crunchydata.com/blog/crunchy-spatial-querying-spatial-features-with-pg_featureserv -[18]: https://opensource.com/sites/default/files/uploads/architecture_0.png (GIS architecture) -[19]: https://github.com/CrunchyData/postgres-operator diff --git a/sources/tech/20200421 How I use Hugo for my classroom-s open source CMS.md b/sources/tech/20200421 How I use Hugo for my classroom-s open source CMS.md deleted file mode 100644 index bef4b09a9a..0000000000 --- a/sources/tech/20200421 How I use Hugo for my classroom-s open source CMS.md +++ /dev/null @@ -1,99 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (How I use Hugo for my classroom's open source CMS) -[#]: via: (https://opensource.com/article/20/4/hugo-classroom) -[#]: author: (Peter Cheer https://opensource.com/users/petercheer) - -How I use Hugo for my classroom's open source CMS -====== -This open source software streamlines text editing while leaving room -for customization. -![Digital hand surrounding by objects, bike, light bulb, graphs][1] - -People love Markdown text with good reason—it is easy to write, easy to read, easy to edit, and it can be converted to a wide range of other text mark up formats. While Markdown text is very good for content creation and manipulation, it imposes limitations on the options for content display. - -If we could combine the virtues of Markdown with the power and flexibility of Cascading Style Sheets, HTML5, and JavaScript, that would be something special. One of the programs trying to do this is [Hugo][2]. Hugo was created in 2013 by Steve Francia; it is cross-platform and open source under an Apache 2.0 license with an active developer community and a growing user base. - -The basic concept is that pieces of content, such as web pages or blog posts, written in Markdown and associated with metadata, are converted into HTML and combined with templates and themes to produce a complete web site. The power and flexibility come through these themes and templates or changing the default behaviors of Hugo. This power comes with a degree of unavoidable complexity, but there are lots of [pre-built templates][3] available if you lack the time or inclination to make your own. - -Installing Hugo on my Linux machine was quick and easy. Starting a new project is as simple as typing **hugo new site quickstart** at the command line which creates a new project with this folder structure: - - * **archetypes**: Content template files that contain preconfigured front matter metadata (date, title, draft). You can create new archetypes with custom front matter fields. - * **assets**: Stores all the files, which are processed by Hugo Pipes (e.g., CSS/Sass files). This directory is not created by default. - * **config.toml**: The default site config file. - * **content**: Where all the content Markdown files live. - * **data**: Used to store configuration files that can be used by Hugo when generating your website. - * **layouts**: Stores templates as .html files. - * **static**: Stores all the static content—images, CSS, JavaScript, etc. - * **themes**: For the Hugo theme of your choice. - - - -The Markdown files in the content folder can be created manually or by Hugo and edited with any text editor or your Markdown creation tool of choice. If created manually, you will need to add any metadata that is needed. I prefer to use [Ghostwriter][4] for writing Markdown. Images are usually kept in a sub-folder in the static folder. Site development can proceed quickly, as Hugo includes a web server for testing and pre-viewing. - -To check your work, type **hugo server** at the command line to start the server. By default, Hugo will not publish: - - * Content with a future **publishdate** value. - * Content with **draft: true** status. - * Content with a past **expirydate** value. - - - -Adding **hugo server -D** will include draft articles, and Hugo can be configured to mark all new articles as draft. After starting the web server, you can see your work in a web browser at localhost:1313. Once the server is started by default, it will automatically reload the browser window when it detects a change to one of your files. - -There are tasks Markdown cannot do that need some HTML code. Hugo recognizes this but believes in keeping Markdown code as clean, simple, and uncluttered as possible. Hugo does this with shortcodes such as **{{< youtube id= "w7Ft2ymGmfc" autoplay= "true">}}**, which will embed the YouTube video with id. w7Ft2ymGmfc. There are quite a few pre-built shortcodes for common tasks, but it is also possible to create your own for particular jobs. - -I work in education quite a lot and wanted to include some interactive puzzles and questions on my Hugo-generated website. To get the output looking like this: - -![JClic shortcode][5] - -I created the activities with an open source Java program called [JClic][6], exported them as HTML5, put that into static/activities/excel, and displayed it in an iframe. - -The HTML code, which would spoil the nice clean Markdown content, looks like this: - - -``` -    <[iframe][7] -       src="/activity/excel/index.html" -       title="Activity" -       height="400" -       frameborder="0" -       marginwidth="0" -       marginheight="0" -       scrolling="no" -       style="border: 1px solid #CCC; border-width: 1px; margin-bottom: 20px; width: 100%;" -       allowfullscreen="true"> -    </[iframe][7]> -``` - -The code is saved in layouts/shortcodes as **activity.html** - -This makes the shortcode placed inside my Markdown file **{{<activity>}}**, which is much neater. - -When your project is ready, you can build it with the **hugo** command; this will create a public folder and generate the website in it. Hugo has a number of built-in deployment options for different hosting providers—basically, you deploy your site by copying the public folder to your production web server. There is a lot more to Hugo that I haven't even gotten to yet, including configuration options, importing content from other static site generators and Wordpress, display data from JSON files, syntax highlighting of source code, and the fact that it is very fast (an advantage when working with large sites). - -In many software tools, ease-of-use comes at the expense of flexibility, or vice-versa; Hugo makes a largely successful attempt at including both. For basic use with Markdown content and a pre-built theme, Hugo is easy to use and produces rapid results. Alternatively, if you have the need to alter the configuration settings or dive in and create your own themes, shortcodes, templates, or metadata schemes, that choice is open to you. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/4/hugo-classroom - -作者:[Peter Cheer][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/petercheer -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/rh_003588_01_rd3os.combacktoschoolseriesk12_rh_021x_0.png?itok=fvorN0e- (Digital hand surrounding by objects, bike, light bulb, graphs) -[2]: https://gohugo.io/ -[3]: https://themes.gohugo.io/ -[4]: http://github.com/wereturtle/ghostwriter -[5]: https://opensource.com/sites/default/files/uploads/jclic_shortcode.png (JClic shortcode) -[6]: https://clic.xtec.cat/legacy/en/index.html -[7]: http://december.com/html/4/element/iframe.html diff --git a/sources/tech/20200421 How to take advantage of Linux-s extensive vocabulary.md b/sources/tech/20200421 How to take advantage of Linux-s extensive vocabulary.md deleted file mode 100644 index 249d9d84f5..0000000000 --- a/sources/tech/20200421 How to take advantage of Linux-s extensive vocabulary.md +++ /dev/null @@ -1,273 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (How to take advantage of Linux's extensive vocabulary) -[#]: via: (https://www.networkworld.com/article/3539011/how-to-takke-advantage-of-linuxs-extensive-vocabulary.html) -[#]: author: (Sandra Henry-Stocker https://www.networkworld.com/author/Sandra-Henry_Stocker/) - -How to take advantage of Linux's extensive vocabulary -====== -Linux systems don't only know a lot of words, it has commands that can help you use them by finding words that are on the tip of your tongue or fixing your typos. -Sandra Henry-Stocker - -While you might not think of Linux as a writing tutor, it does have some commendable language skills – at least when it comes to English. While the average American probably has a vocabulary between 20,000 and 50,000 words, Linux can claim over 100,000 words (spellings, not definitions). And you can easily put this vocabulary to work for you in a number of ways. Let’s look at how Linux can help with your word challenges. - -### Help with finding words - -First, let’s focus on finding words.If you use the **wc** command to count the number of words in the **/usr/share/dict/words** file on your system, you should see something like this: - -``` -$ wc -l /usr/share/dict/words -102402 /usr/share/dict/words -``` - -As you can see, the **words** file on this system contains 102,402 words. So, when you’re trying to nail down just the right word and are having trouble, you stand a good chance of finding it on your system by remembering (or guessing at) some part of it. But you'll need a little help narrowing down those 102,402 words to a group worth your time to review. In this command, we’re looking for words that start with the letters “revi”. - -[[Get regularly scheduled insights by signing up for Network World newsletters.]][1] - -``` -$ grep ^reviv /usr/share/dict/words -revival -revival's -revivalist -revivalist's -revivalists -revivals -revive -revived -revives -revivification -revivification's -revivified -revivifies -revivify -revivifying -reviving -``` - -That’s sixteen words that start with the string “revi”. The **^** character represents the beginning of the word and, as you might have suspected, each word in the file is on a line by itself. - -A good number of the words in the **/usr/share/dict/words** file are names. If you want to  find words regardless of whether they're capitalized, add the **-i** (ignore case) option to your **grep** command. - -``` -$ grep -i ^wool /usr/share/dict/words -Woolf -Woolf's -Woolite -Woolite's -Woolongong -Woolongong's -Woolworth -Woolworth's -wool -... -``` - -You can also look for words that end in or contain a certain string of letters. In this next command, we look for words that contain the string “nativ” at any location. - -``` -$ grep 'nativ' /usr/share/dict/words -alternative -alternative's -alternatively -alternatives -imaginative -imaginatively -native -native's -natives -nativities -nativity -nativity's -nominative -nominative's -nominatives -unimaginative -``` - -In this next command, we look for words that end in “emblance”, the **$** character representing the end of the line. Only two words in the **words** file fit the bill. - -[][2] - -``` -$ grep 'emblance$' /usr/share/dict/words -resemblance -semblance -``` - -If we, for some reason, want to find words with exactly 21 letters, we could use this command: - -``` -$ grep '^.....................$' /usr/share/dict/words -counterintelligence's -electroencephalograms -electroencephalograph -``` - -On the other hand, making sure we've typed the correct number of dots can be tedious. This next command is little easier to manage: - -``` -$ grep -E '^[[:alpha:]]{21}$' /usr/share/dict/words -electroencephalograms -electroencephalograph -``` - -This command does the same thing: - -``` -$ grep -E '^\w{21}$' /usr/share/dict/words -electroencephalograms -electroencephalograph -``` - -The one important difference between these commands is that the one with the dots matches any string of 21 characters. The two specifying "alpha" or "\w" only match letters, so they find only two matching words. - -Now let’s look for words that contain 20 letters (or more) in a row. - -``` -$ grep -E '(\w{20})' /usr/share/dict/words -Andrianampoinimerina -Andrianampoinimerina's -counterrevolutionaries -counterrevolutionary -counterrevolutionary's -electroencephalogram -electroencephalogram's -electroencephalograms -electroencephalograph -electroencephalograph's -electroencephalographs -uncharacteristically -``` - -That command returns words with apostrophes because they contain 20 letters in a row before they get to that point. - -Next, we’ll check out words with 21 or more characters. The 1 and 20 in combination with the **v** (invert) option in this command cause **grep** to skip over words with anywhere from 1 to 20 characters. - -``` -$ grep -vwE '\w{1,20}' /usr/share/dict/words -counterrevolutionaries -electroencephalograms -electroencephalograph -electroencephalographs -``` - -In this next command, we look for words that start with “ex” and have four additional letters. - -``` -$ grep '^ex.\{4\}$' /usr/share/dict/words -exacts -exalts -exam's -exceed -excels -except -excess -excise -excite -excuse -… -``` - -In case you're curious, the **words** file on this system contains 43 such words: - -``` -$ grep '^ex.\{4\}$' /usr/share/dict/words | wc -l -43 -``` - -To get help with spelling, you should try **aspell**. It can help you with individual words or run a spell check scan through an entire text file. In this first example, we ask **aspell** to help with a single word. It finds the word we’re after along with a couple other possibilities. - -### Checking a word - -``` -$ aspell -a -@(#) International Ispell Version 3.1.20 (but really Aspell 0.60.7) -prolifferate <== entered word -& prolifferate 3 0: proliferate, proliferated, proliferates <== replacement options -``` - -If **aspell** doesn’t provide a list of words, that means that the spelling you offered was correct. Here's an example: - -``` -$ aspell -a -@(#) International Ispell Version 3.1.20 (but really Aspell 0.60.7) -proliferate <== entered text -* <== no suggestions -``` - -Typing **^C** (control-c) exits **aspell**. - -### Checking a file - -When checking a file with **aspell**, you get suggestions for each misspelled word. When **aspell** spots typos, it highlights the misspelled words one at a time and gives you a chance to choose from a list of properly spelled words that are similar enough to the misspelled words to be good candidates for replacing them. - -To start checking a file, type **aspell -c** followed by the file name. - -``` -$ aspell -c thesis -``` - -You'll see something like this: - -``` -This thesis focusses on … - -1) focuses 6) Fosse's -2) focused 7) flosses -3) cusses 8) courses -4) fusses 9) focus -5) focus's 0) fuses -i) Ignore I) Ignore all -r) Replace R) Replace all -a) Add l) Add Lower -b) Abort x) Exit -``` - -Make your selection by pressing the key listed next to the word you want (1, 2, etc.) and **aspell** will replace the misspelled word in the file and move on to the next one if there are others. Notice that you also have options to replace the word by typing another one. Press "x" when you're done. - -### Help with crossword puzzles - -If you’re working on a crossword puzzle and need to find a five-letter word that starts with a “d” and has a “u” as its fourth letter, you can use a command like this: - -``` -$ grep -i '^d..u.$' /usr/share/dict/words -datum -debug -debut -demur -donut -``` - -### Help with word scrambles - -If you’re working on a puzzle that requires you to de-scramble the letters in a string until you've found a proper word, you can offer the list of letters to grep like this example in which **grep** turns the letters "yxusonlia" into the word “anxiously”. - -``` -$ grep -P '^(?:([yxusonlia])(?!.*?\1)){9}$' /usr/share/dict/words -anxiously -``` - -Linux’s word skills are impressive and sometimes even fun. Whether you're hoping to find words you can't quite call to mind or get a little help cheating on word puzzles, Linux offers some clever options. - -Join the Network World communities on [Facebook][3] and [LinkedIn][4] to comment on topics that are top of mind. - --------------------------------------------------------------------------------- - -via: https://www.networkworld.com/article/3539011/how-to-takke-advantage-of-linuxs-extensive-vocabulary.html - -作者:[Sandra Henry-Stocker][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://www.networkworld.com/author/Sandra-Henry_Stocker/ -[b]: https://github.com/lujun9972 -[1]: https://www.networkworld.com/newsletters/signup.html -[2]: https://www.networkworld.com/blog/itaas-and-the-corporate-storage-technology/?utm_source=IDG&utm_medium=promotions&utm_campaign=HPE22140&utm_content=sidebar (ITAAS and Corporate Storage Strategy) -[3]: https://www.facebook.com/NetworkWorld/ -[4]: https://www.linkedin.com/company/network-world diff --git a/sources/tech/20200427 New zine- How Containers Work.md b/sources/tech/20200427 New zine- How Containers Work.md deleted file mode 100644 index fa2198ebbc..0000000000 --- a/sources/tech/20200427 New zine- How Containers Work.md +++ /dev/null @@ -1,121 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (New zine: How Containers Work!) -[#]: via: (https://jvns.ca/blog/2020/04/27/new-zine-how-containers-work/) -[#]: author: (Julia Evans https://jvns.ca/) - -New zine: How Containers Work! -====== - -On Friday I published a new zine: “How Containers Work!”. I also launched a fun redesign of [wizardzines.com][1]. - -You can get it for $12 at . If you buy it, you’ll get a PDF that you can either print out or read on your computer. Or you can get a pack of [all 8 zines][2] so far. - -Here’s the cover and table of contents: - -[![][3]][4] - -### why containers? - -I’ve spent a lot of time [figuring][5] [out][6] [how to][7] [run][8] [things][9] [in][10] [containers][11] over the last 3-4 years. And at the beginning I was really confused! I knew a bunch of things about Linux, and containers didn’t seem to fit in with anything I thought I knew (“is it a process? what’s a network namespace? what’s happening?“). The whole thing seemed really weird. - -It turns out that containers ARE actually pretty weird. They’re not just one thing, they’re what you get when you glue together 6 different features that were mostly designed to work together but have a bunch of confusing edge cases. - -As usual, the thing that helped me the most in my container adventures is a good understanding of the **fundamentals** – what exactly is actually happening on my server when I run a container? - -So that’s what this zine is about – cgroups, namespaces, pivot_root, seccomp-bpf, and all the other Linux kernel features that make containers work. - -Once I understood those ideas, it got a **lot** easier to debug when my containers were doing surprising things in production. I learned a couple of interesting and strange things about containers while writing this zine too – I’ll probably write a blog post about one of them later this week. - -### containers aren’t magic - -This picture (page 6 of the zine) shows you how to run a fish container image with only 15 lines of bash. This is heavily inspired by [bocker][12], which “implements” Docker in about 100 lines of bash. - - - -The main things I see missing from that script compared to what Docker actually does when running a container (other than using an actual container image and not just a tarball) are: - - * it doesn’t drop any capabilities – the container is still running as root and has full root privileges (just in a different mount + PID namespace) - * it doesn’t block any system calls with seccomp-bpf - - - -### container command line tools - -The zine also goes over a bunch of command line tools & files that you can use to inspect running containers or play with Linux container features. Here’s a list: - - * `mount -t overlay` (create and view overlay filesystems) - * `unshare` (create namespaces) - * `nsenter` (use an existing namespace) - * `getpcaps` (get a process’s capabilities) - * `capsh` (drop or add capabilities, etc) - * `cgcreate` (create a cgroup) - * `cgexec` (run a command in an existing cgroup) - * `chroot` (change root directory. not actually what containers use but interesting to play with anyway) - * `/sys/fs/cgroups` (for information about cgroups, like `memory.usage_in_bytes`) - * `/proc/PID/ns` (all a process’s namespaces) - * `lsns` (another way to view namespaces) - - - -I also made a short youtube video a while back called [ways to spy on a Docker container][13] that demos some of these command line tools. - -### container runtime agnostic - -I tried to keep this zine pretty container-runtime-agnostic – I mention Docker a couple of times because it’s so widely used, but it’s about the Linux kernel features that make containers work in general, not Docker or LXC or systemd-nspawn or Kubernetes or whatever. If you understand the fundamentals you can figure all those things out! - -### we redesigned wizardzines.com! - -On Friday I also launched a redesign of [wizardzines.com][1]! [Melody Starling][14] (who is amazing) did the design. I think now it’s better organized but the tiny touch that I’m most delighted by is that now the zines jump with joy when you hover over them. - -One cool thing about working with a designer is – they don’t just make things _look_ better, they help _organize_ the information better so the website makes more sense and it’s easier to find things! This is probably obvious to anyone who knows anything about design but I haven’t worked with designers very much (or maybe ever?) so it was really cool to see. - -One tiny example of this: Melody had the idea of adding a tiny FAQ on the landing page for each zine, where I can put the answers to all the questions people always ask! Here’s what the little FAQ box looks like: - -[![][15]][4] - -I probably want to edit those questions & answers over time but it’s SO NICE to have somewhere to put them. - -### what’s next: maybe debugging! or working more on flashcards! - -The two projects I’m thinking about the most right now are - - 1. a zine about debugging, which I started last summer and haven’t gotten around to finishing yet - 2. a [flashcards project][16] that I’ve been adding to slowly over the last couple of months. I think could become a nice way to explain basic ideas. - - - -Here’s a link to where to [get the zine][4] again :) - --------------------------------------------------------------------------------- - -via: https://jvns.ca/blog/2020/04/27/new-zine-how-containers-work/ - -作者:[Julia Evans][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://jvns.ca/ -[b]: https://github.com/lujun9972 -[1]: https://wizardzines.com -[2]: https://wizardzines.com/zines/all-the-zines/ -[3]: https://jvns.ca/images/containers-cover.jpg -[4]: https://wizardzines.com/zines/containers -[5]: https://stripe.com/en-ca/blog/operating-kubernetes -[6]: https://jvns.ca/blog/2016/09/15/whats-up-with-containers-docker-and-rkt/ -[7]: https://jvns.ca/blog/2016/10/10/what-even-is-a-container/ -[8]: https://jvns.ca/blog/2016/12/22/container-networking/ -[9]: https://jvns.ca/blog/2016/10/26/running-container-without-docker/ -[10]: https://jvns.ca/blog/2017/02/17/mystery-swap/ -[11]: https://jvns.ca/blog/2016/10/02/a-list-of-container-software/ -[12]: https://github.com/p8952/bocker -[13]: https://www.youtube.com/watch?v=YCVSdnYzH34&t=1s -[14]: https://melody.dev -[15]: https://jvns.ca/images/wizardzines-faq.png -[16]: https://flashcards.wizardzines.com diff --git a/sources/tech/20200430 Edit music recordings with Audacity on Linux.md b/sources/tech/20200430 Edit music recordings with Audacity on Linux.md deleted file mode 100644 index be6f68f062..0000000000 --- a/sources/tech/20200430 Edit music recordings with Audacity on Linux.md +++ /dev/null @@ -1,161 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Edit music recordings with Audacity on Linux) -[#]: via: (https://opensource.com/article/20/4/audacity) -[#]: author: (David Both https://opensource.com/users/dboth) - -Edit music recordings with Audacity on Linux -====== -How COVID-19 caused me to learn Audacity on the fly and learn to love -it. -![Bird singing and music notes][1] - -In this strange and difficult time of a global pandemic, we are all called upon to do things differently, to change our routines, and to learn new things. - -I have worked from home for many years, so that is nothing new to me. Even though I am allegedly retired, I write articles for Opensource.com and [Enable Sysadmin][2] and books. I also manage my own home network, which is larger than you might think, and my church's network and Linux hosts, and I help a few friends with Linux. All of this keeps me busy doing what I like to do, and all of it is usually well within my comfort zone. - -But COVID-19 has changed all of that. And, like many other types of organizations, my church had to move quickly to a new service-delivery paradigm. And that is what churches do—deliver a specific kind of service. As the church sysadmin and with some knowledge of audio recording and editing (back in the '70s, I mixed the sound and was the only roadie for a couple of regional folk-rock groups in Toledo, Ohio), I decided to learn the open source audio recording and editing software [Audacity][3] to help meet this challenge. - -This is not a comprehensive how-to article about using Audacity. It is about my experiences getting started with this powerful audio-editing tool, but there should be enough information here to help you get started. - -I have learned just what I need to know in order to accomplish my task: combining several separate audio clips into a single MP3 audio file. If you already know Audacity and do things differently or know things that I don't, that is expected. And if you have any suggestions to help me accomplish my task more easily, please share them in the comments. - -### The old way - -I try not to use the term "normal" now because it is hard to know exactly what that is—if such a state even exists. But our old method of producing recordings for our shut-ins, members who are traveling, and anyone else was to record the sermon portion of our regular, in-person church services and post them on our website. - -To do this, I installed a TASCAM SS-R100 solid-state recorder that stores the sermons as MP3 files on a thumb drive. We uploaded the recordings to a special directory of our website so people could download them. The recordings are uploaded using a Bash [program][4] I wrote for the task. _Automate everything!_ I trained a couple of others to perform these tasks using sudo in case I was not available. - -This all worked very well. Until it didn't. - -### The new way - -As soon as the first restrictions on large gatherings occurred, we made some changes. We could still have small gatherings, so four of us met Sunday mornings and recorded an abbreviated service using our in-house recorder and doing the upload the usual way. This worked, but as the crisis deepened and it became more of a risk to meet with even a few people, we had to make more changes. - -Like a huge number of other organizations, we realized we each needed to perform our parts of creating services in separate locations from our own homes. - -Now, depending upon the structure of the service, I receive several recordings that I need to combine to create the full church service. Our music director records each anthem and interlude using her iPhone and sends me the recordings in the M4A (MPEG-4 audio) format. They each range in length from seconds to five minutes and are up to 3MB in size. Likewise, our rector sends me two to six recordings, also in M4A format, that contains his portion of the service. Sometimes, other musicians in our church send solos or duets recorded with their significant others; these can be in MP3 or M4A formats. - -Then, I pull all of this together into a single recording that can be uploaded to our server for people to download. I use Audacity for this because it was available in my repo, and it was easy to get started. - -### Getting started with Audacity - -I had never used [Audacity][5] before this, so, like many others these days, I needed to learn something new just in time to accomplish what I needed to do. I struggled a bit at first, but it turned out to be fun and very enlightening. - -Audacity was easy to install on my Fedora 31 workstation because, as in many distros, it is available from the Fedora repository. - -The first time I opened Audacity with the program launcher icon, the application's window was empty with no projects nor tracks present. Audacity projects have an AUP extension, so if you have an existing project, you could click on the file in your favorite file manager and launch Audacity that way. - -### Convert M4A to MP3 - -As installed by Fedora, Audacity does not recognize M4A files. Regardless of how you proceed, you need to install the [LAME][6] MP3 encoder and [FFmpeg][7] import/export library, both of which are available from the Fedora repository and, most likely, any other distro's repository. - -There are websites that explain how to configure Audacity to use these tools to import and convert audio files from M4A to other types (such as MP3), but I decided to write a script to do it from the command line. For one reason, using a script is faster than doing a lot of extra clicking in a GUI interface, and for another, the file names need some work, so I already needed a script to rename the files. Many people use non-alphanumeric characters to name files, but I don't like dealing with special keyboard characters from the command line. It's easier to manage files with simple alphanumeric names, so my script removes all non-alphanumeric characters from the file names and then converts the files to MP3 format. - -You may choose a different approach, but I like the scripted solution. It is fast, and I only need to run the script once, no matter how many files need to be renamed and converted to MP3. - -### Create a new project - -You can create a new project whether or not any audio tracks are loaded. I recommend creating the project first, before importing any audio files (aka "clips"). From the Menu bar, select **File > Save Project > Save Project As**. This opens a warning dialog window that says, _"'Save project' is for an Audacity project, not an audio file."_ Click the **OK** button to continue to a standard file-save dialog. - -I found that I needed to do this twice. The first time, the warning dialog did not display any buttons, so I had to close the dialog using the window menu or the x icon in the Title bar. - -Name the project whatever you like, and Audacity automatically adds the AUP extension. You now have an empty project. - -### Add audio files to your project - -The first step is to add your audio files to the project. Using the Menu bar, open **File > Import > Audio** and then use the file dialog to select one or more files to import. For my first test project, I loaded all the files at once without sorting the tracks nor aligning the clips in the desired sequence along the timeline. This time, I started by loading the audio files one at a time in the sequence I wanted them from top to bottom. As each file is imported, it is placed into a new track below any existing tracks. The following image shows the files loaded all at one time in the sequence they appear in the working directory. - -![Tracks loaded in Audacity][8] - -There is a timeline across the top of the window's track area. There is also a scroll bar at the bottom of the window, so you can scroll along the timeline when the tracks extend beyond the width of the Audacity window. There is also a vertical scroll bar if there are more tracks than fit into the window. - -Notice the names in the upper-left corner of the waveform section of each track—they are the file names of each track without the extension. These are not there by default, but I find them helpful. To display these names, use the Menu bar to select **Edit > Preferences** and place a check in the **Show Audio Track Name As Overlay** box. - -### Order your audio clips - -Once you have some files loaded into the Audacity workspace, you can start manipulating them. To order your audio clips, select one and use the **Time-Shift** tool (↔︎) to slide them horizontally along the tracks; continue doing this until all the clips line up end to end in the order you want them. Note that the clip you are moving is book-ended by a pair of vertical alignment lines. When they line up perfectly, the end lines of the two aligned tracks change color to alert you. - -You can hover the mouse pointer over the tool icons in the Audacity toolbars to see a pop-up that displays the name of that tool. This helps beginners understand what each tool does. - -![Audacity toolbox][9] - -Here, the **Selection** tool** **is selected in the Audacity toolbar. The **Time-Shift** tool is second from the left on the bottom row. - -The following image shows what happens when you slide the audio clips into place on the project timeline without sorting the tracks into a particular sequence. This may not be optimal for how you like to work. It is not for me. - -![Audio clips in Audacity][10] - -To remove segments of (or complete) audio clips, select them with the **Selection** tool—you can also select multiple adjacent tracks. Then you can press the **Delete** button on your keyboard to delete the selected segment(s). - -In the image above, you can see a vertical black line in track 1 and a vertical green line crossing all the tracks. These are the audio cursors that show the playback positions of a track or the entire project. Choose the **Selection** tool and click the desired position within a track, then click the **Play** button on the transport controls (in the upper-left of the Audacity window) to begin playback. Playback will continue past the end of the selected track and all the way to the end of the project. If tracks overlap on the timeline, they will play simultaneously. - -To begin playback immediately, click the desired starting point on the timeline. To play part of a track, hold down the Left mouse button to select a short segment of the track, and then click the **Play** button. The other transport buttons—Pause, Stop, and so—on are identified with universal icons and work as you would expect. - -You can also click the **Silence Audio Selection** button—the fifth button from the left on the **Edit** toolbar (shown below)—to completely silence a selected segment while leaving it in place for timing purposes. This is how I silenced a number of background clicks and noises. - -![Audacity edit tools][11] - -It took me a while to figure out how to sort the tracks vertically, and it turns out there are a few different ways to accomplish the task. - -You can use the track menu to reorder arrangement. Each track has its own Control Panel on the left side (shown below). The track drop-down Menu bar at the top of the Control Panel opens a menu that provides several track-sequencing options to move a track up, down, to the top, or to the bottom. - -![Moving tracks in Audacity][12] - -The items to move a track up or down move the track one position at a time, so you have to select it as many times as necessary to get the track in the desired position. - -To drag and drop tracks, you must click on the space occupied by the track details. In this screenshot, that's "Mono, 48000Hz 32 bit float". It can be tricky, because if you click too high, you adjust the panning (the left and right stereo position) and if you click too low, you may collapse or select the track. Target the "Mono" or "Stereo" label (whatever your track happens to be) label, and then click and drag the track up or down to reposition it in your workspace. - -### Apply amplification and noise reduction effects - -Some tracks need the overall volume to be adjusted. I used the **Selection** tool to double-click and select the entire track (but you could also select a portion of a track). On the Menu bar, select **Effect > Amplify** to display a small dialog window. You can use the slider or enter a value to specify the amount of amplification. Negative numbers decrease the volume. If you try to increase the volume, you need to place a check in the **Allow Clipping** box. Then click OK. - -I found that amplification is a bit tricky; it is easy to use too much or too little. Start by using small numbers to see the results. You can always use **Ctrl+Z** to undo your changes if you go too far in either direction. - -Another effect I find useful is noise reduction. One of the tracks was recorded with a noticeable 60Hz hum, which is usually due to poor grounding of the microphone or recorder. Fortunately, there were only several seconds of hum and no other sound at the beginning of the recording. - -Applying the noise reduction effect was a little confusing at first. First, I selected a few samples of the humming sound to tell Audacity what sound needed to be reduced, and then I navigated to **Effect > Noise Reduction**. This opens the **Noise Reduction** dialog. I clicked on the **Get Noise Profile** button in the Step 1 section of the dialog, which uses the selected sample as the basis for a set of filter presets. After it gathers the selected sample, though, the dialog disappeared (this is by design). I re-opened the dialog, used the slider to select the noise reduction level in decibels (I set it to 15dB and left the other sliders alone), and then clicked **OK**. - -This worked well—you can hear the residual hum only if you know it is there. I need to experiment with this some more, but since the result was acceptable, so I did not play with the settings any further. - -The reason the dialog box closes after getting a noise profile is actually for the sake of expediency. If you're processing many tracks or segments of audio, each with a different noise profile, you can open the **Noise Reduction** effect, get the current noise profile, and then select the audio you want to clean. You can then run the Noise Reduction filter using **Ctrl+R**, the keyboard shortcut for running the most recent filter. Instead of getting a new noise profile, however, Audacity uses the one you've just stored, and performs the filter instead. This way, you can get a sample with a few clicks but clean lots of audio with just one keyboard shortcut. - -### And so much more - -I have only worked with a few of the basics and have not even begun to scratch the surface of Audacity. I can already see that it has so many more features and tools that will enable me to create even more professional-sounding projects. - -For example, in addition to working with existing audio files, Audacity can make recordings from line inputs, the desktop sound stream, and microphone inputs. It can do special effects like fade in and out and cross-fades. And I have not even tried to figure out what many of the other effects and tools are capable of. - -I have a feeling I will need to learn more in the near future. Hopefully, this story of my very limited experience with Audacity will prompt you to check it out. For much more information, you can find the [Audacity manual][13] online. - -Using Audacity, you can quickly clean up audio file so that any background noise becomes tolerable. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/4/audacity - -作者:[David Both][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/dboth -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/music-birds-recording-520.png?itok=UoM7brl0 (Bird singing and music notes) -[2]: https://www.redhat.com/sysadmin/ -[3]: https://www.audacityteam.org/ -[4]: https://opensource.com/article/17/12/using-sudo-delegate -[5]: https://opensource.com/education/16/9/audacity-classroom -[6]: https://manual.audacityteam.org/man/installing_and_updating_audacity_on_linux.html#linlame -[7]: https://manual.audacityteam.org/man/installing_and_updating_audacity_on_linux.html#linff -[8]: https://opensource.com/sites/default/files/uploads/audacity1_tracksloaded.png (Tracks loaded in Audacity) -[9]: https://opensource.com/sites/default/files/uploads/audacity2_tools.png (Audacity toolbox) -[10]: https://opensource.com/sites/default/files/uploads/audacity3_audioclips.png (Audio clips in Audacity) -[11]: https://opensource.com/sites/default/files/uploads/audacity4_edittoolbar.png (Audacity edit tools) -[12]: https://opensource.com/sites/default/files/uploads/audacity5_trackmovement.png (Moving tracks in Audacity) -[13]: https://manual.audacityteam.org/# diff --git a/sources/tech/20200430 Linux and Kubernetes- Serving The Common Goals of Enterprises.md b/sources/tech/20200430 Linux and Kubernetes- Serving The Common Goals of Enterprises.md deleted file mode 100644 index c3c0c36b66..0000000000 --- a/sources/tech/20200430 Linux and Kubernetes- Serving The Common Goals of Enterprises.md +++ /dev/null @@ -1,77 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Linux and Kubernetes: Serving The Common Goals of Enterprises) -[#]: via: (https://www.linux.com/articles/linux-and-kubernetes-serving-the-common-goals-of-enterprises/) -[#]: author: (Swapnil Bhartiya https://www.linux.com/author/swapnil/) - -Linux and Kubernetes: Serving The Common Goals of Enterprises -====== - -[![][1]][2] - -For [Stefanie Chiras,][3] VP & GM, Red Hat Enterprise Linux (RHEL) Business Unit at [Red Hat][4], aspects such as security and resiliency have always been important for Red Hat. More so, in the current situation when everyone has gone fully remote and it’s much harder to get people in front of the hardware for carrying out updates, patching, etc. - -“As we look at our current situation, never has it been more important to have an operating system that is resilient and secure, and we’re focused on that,” she said. - -The recently released version of [Red Hat Enterprise Linux (RHEL) 8.2][5] inadvertently address these challenge as it makes it easier for technology leaders to embrace the latest, production-ready innovations swiftly which offering security and resilience that their IT teams need. - -RHEL’s embrace of a predictable 6-month minor release cycle also helped customers plan upgrades more efficiently. - -“There is value for customers in having predictability of minor releases on a six-month cycle. Without knowing when they were coming was causing disruptions for them. The launch of 8.2 is now the second time we have delivered on our commitment of having minor releases every six months,” said Stefanie Chiras. - -In addition to offering security updates, the new version adds insights capabilities and forays into newer areas of innovation. - -The upgrade has expanded the earlier capability called ‘Adviser’ dramatically. Additional functionalities such as drift monitoring and CVE coverage allow for a much deeper granularity into how the infrastructure is running. - -“It really amplifies the skills that are already present in ops and sysadmin teams, and this provides a Red Hat consultation, if you will, directly into the data center,” claimed Charis. - -As containers are increasingly being leveraged for digital transformation, RHEL 8.2 offers an updated application stream of Red Hat’s container tools. It also has new, containerized versions of Buildah and Skopeo. - -[Skopeo][6] is an open-source image copying tool, while Buildah is a tool for building Docker- and Kubernetes-compatible images easily and quickly. - -RHEL has also ensured in-place upgrades in the new version. Customers can now directly in-place upgrade from version 7 to version 8.2. - -Chiras believes Linux has emerged as the go-to-platform for innovations such as Machine Learning, Deep Learning, and Artificial Intelligence. - -“Linux has now become the springboard of innovation,” she argued. “AI, machine learning, and deep learning are driving a real change in not just the software but also the hardware. In the context of these emerging technologies, it’s all about making them consumable into an enterprise.” - -“We’re very focused on our ecosystem, making sure that we’re working in the right upstream communities with the right ISVs, with the right hardware partners to make all of that magic come together,” Chiras said. - -Towards this end, Red Hat has been partnering with multiple architectures for a long time — be it an x86 architecture, ARM, Power, or mainframe with IBM Z. Its partnership with Nvidia pulls in capabilities such as FPGAs, and GPU. - -**Synergizing Kubernetes and Linux ** - -Kubernetes is fast finding favor in enterprises.  So how do Linux and Kubernetes serve the common goals of enterprises? - -“Kubernetes is a new way to deploy Linux. We’re very focused on providing operational consistency by leveraging our technology in RHEL and then bringing in that incredible capability of Kubernetes within our OpenShift product line,” Chiras said. - -The deployment of Linux within a Kubernetes environment is much more complicated than in a traditional deployment. RHEL, therefore, made some key changes. The company created Red Hat Enterprise Linux CoreOS — an optimized version of RHEL for the OpenShift experience. - -“It’s deployed as an immutable. It’s tailored, narrow, and gets updated as part of your OpenShift update to provide consistent user experience and comprehensive security. - -The launch of the Red Hat Universal Base Image (UBI) offers users greater security, reliability, and performance of official Red Hat container images where OCI-compliant Linux containers run. - -“Kubernetes is a new way to deploy Linux. It really is a tight collaboration but what we’re really focused on is the customer experience. We want them to get easy updates with consistency and reliability, resilience and security. We’re pulling all of that together. With such advancements going on, it’s a fascinating space to watch,” added Chiras. - --------------------------------------------------------------------------------- - -via: https://www.linux.com/articles/linux-and-kubernetes-serving-the-common-goals-of-enterprises/ - -作者:[Swapnil Bhartiya][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://www.linux.com/author/swapnil/ -[b]: https://github.com/lujun9972 -[1]: https://www.linux.com/wp-content/uploads/2019/12/computer-2930704_1280-1068x634.jpg (computer-2930704_1280) -[2]: https://www.linux.com/wp-content/uploads/2019/12/computer-2930704_1280.jpg -[3]: https://www.linkedin.com/in/stefanie-chiras-9022144/ -[4]: https://www.redhat.com/en -[5]: https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html-single/8.2_release_notes/index -[6]: https://github.com/containers/skopeo diff --git a/sources/tech/20200501 Transparent, open source alternative to Google Analytics.md b/sources/tech/20200501 Transparent, open source alternative to Google Analytics.md deleted file mode 100644 index d4ce222a39..0000000000 --- a/sources/tech/20200501 Transparent, open source alternative to Google Analytics.md +++ /dev/null @@ -1,123 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Transparent, open source alternative to Google Analytics) -[#]: via: (https://opensource.com/article/20/5/plausible-analytics) -[#]: author: (Marko Saric https://opensource.com/users/markosaric) - -Transparent, open source alternative to Google Analytics -====== -Plausible Analytics is a leaner, more transparent option, with the -essential data you need but without all the privacy baggage. -![Digital creative of a browser on the internet][1] - -Google Analytics is the most popular website analytics tool. Millions of developers and creators turn to it to collect and analyze their website statistics. - -More than 53% of all sites on the web track their visitors using Google Analytics. [84%][2] of sites that do use a known analytics script use Google Analytics. - -Google Analytics has, for years, been one of the first tools I installed on a newly launched site. It is a powerful and useful analytics tool. Installing Google Analytics was a habit I didn't think much about until the introduction of the [GDPR][3] (General Data Protection Regulation) and other privacy regulations. - -Using Google Analytics these days comes with several pitfalls, including the need for a privacy policy, the need for cookie banners, and the need for a GDPR consent prompt. All these may negatively impact the site loading time and visitor experience. - -This has made me try to [de-Google-ify websites][4] that I work on, and it's made me start working on independent solutions that are open source and more privacy-friendly. This is where Plausible Analytics enters the story. - -[Plausible Analytics][5] is an open source and lightweight alternative to Google Analytics. It doesn't use cookies and it doesn't collect any personal data, so you don't need to show any cookie banners or get GDPR or CCPA consent. Let's take a closer look. - -### Main differences between Google Analytics and Plausible - -Plausible Analytics is not designed to be a clone of Google Analytics. It is meant as a simple-to-use replacement and a privacy-friendly alternative. Here are the main differences between the two web analytics tools: - -#### Open source vs. closed source - -Google Analytics may be powerful and useful, but it is closed source. It is a proprietary tool run by one of the largest companies in the world, a company that is a key player in the ad-tech industry. There's simply no way of knowing what's going on behind the scenes. You have to put your trust in Google. - -Plausible is a fully open source tool. You can read our code [on GitHub][6]. We're "open" in other ways, too, such as our [public roadmap][7], which is based around the feedback and features submitted by the members of our community. - -#### Privacy of your website visitors - -Google Analytics places [several cookies][8] on the devices of your visitors, and it tracks and collects a lot of data. This means that there are several requirements if you want to use Google Analytics and be compliant with the different regulations: - - * You need to have a privacy policy about analytics - * You need to show a cookie banner - * You need to obtain a GDPR/CCPA consent - - - -Plausible is made to be fully compliant with the privacy regulations. No cookies are used, and no personal data is collected. This means that you don't need to display the cookie banner, you don't need a privacy policy, and you don't need to ask for the GDPR/CCPA consent when using Plausible. - -#### Page weight and loading time - -The recommended way of installing Google Analytics is to use the Google Tag Manager. Google Tag Manager script weights 28 KB, and it downloads another JavaScript file called the Google Analytics tag, which adds an additional 17.7 KB to your page size. That's 45.7 KB of page weight combined. - -Plausible script weights only 1.4 KB. That's 33 times smaller than the Google Analytics Global Site Tag. Every KB matters when you want to keep your site fast to load. - -#### Accuracy of visitor stats - -Google Analytics is being blocked by an increasing number of web users. It's blocked by those who use open source browsers such as [Firefox][9] and [Brave][10]. It's also blocked by those who use open source browser add-ons such as the [uBlock Origin][11]. It's not uncommon to see 40% or more of the audience on a tech site blocking Google Analytics. - -Plausible is a new player on this market and it's privacy-friendly by default, so it doesn't see the same level of blockage. - -#### Simple vs. complex web analytics - -[Google Analytics is overkill][12] for many website owners. It's a complex tool that takes time to understand and requires training. Google Analytics presents hundreds of different reports and metrics for you to get insights from. Many users end up creating custom dashboards while ignoring all the rest. - -Plausible cuts through all the noise that Google Analytics creates. It presents everything you need to know on one single page—all the most valuable metrics at a glance. You can get an overview of the most actionable insights about your website in one minute. - -### A guided tour of Plausible Analytics - -Plausible Analytics is not a full-blown replacement and a feature-by-feature reproduction of Google Analytics. It's not designed for all the different use-cases of Google Analytics. - -It's built with simplicity and speed in mind. There is no navigational menu. There are no additional sub-menus. There is no need to create custom reports. You get one simple and useful web analytics dashboard out of the box. - -Rather than tracking every metric imaginable, many of them that you will never find a use for, Plausible focuses on the essential website stats only. It is easy to use and understand with no training or prior experience: - -![Plausible analytics in action][13] - - * Choose the time range that you want to analyze. The visitor numbers are automatically presented on an hourly, daily, or monthly graph. The default time frame is set at the last 30 days. - * See the number of unique visitors, total page views, and the bounce rate. These metrics include a percentage comparison to the previous time period, so you understand if the trends are going up or down. - * See all the referral sources of traffic and all the most visited pages on your site. Bounce rates of the individual referrals and pages are included too. - * See the list of countries your traffic is coming from. You can also see the device, browser, and operating system your visitors are using. - * Track events and goals to identify the number of converted visitors, the conversion rate, and the referral sites that send the best quality traffic. - - - -Take a look at the [live demo][14] where you can follow the traffic to the Plausible website. - -### Give Plausible Analytics a chance - -With Plausible Analytics, you get all the important web analytics at a glance so you can focus on creating a better site without needing to annoy your visitors with all the different banners and prompts. - -You can try Plausible Analytics on your site alongside Google Analytics. [Register today][15] to try it out, and see what you like and what you don't. Share your feedback with the community. This helps us learn and improve. We'd love to hear from you. - -Take a look at five great open source alternatives to Google Docs. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/5/plausible-analytics - -作者:[Marko Saric][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/markosaric -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/browser_web_internet_website.png?itok=g5B_Bw62 (Digital creative of a browser on the internet) -[2]: https://w3techs.com/technologies/details/ta-googleanalytics -[3]: https://gdpr-info.eu/ -[4]: https://markosaric.com/degoogleify/ -[5]: https://plausible.io/ -[6]: https://github.com/plausible-insights/plausible -[7]: https://feedback.plausible.io/roadmap -[8]: https://developers.google.com/analytics/devguides/collection/analyticsjs/cookie-usage -[9]: https://www.mozilla.org/en-US/firefox/new/ -[10]: https://brave.com/ -[11]: https://github.com/gorhill/uBlock -[12]: https://plausible.io/vs-google-analytics -[13]: https://opensource.com/sites/default/files/plausible-analytics.png (Plausible analytics in action) -[14]: https://plausible.io/plausible.io -[15]: https://plausible.io/register diff --git a/sources/tech/20200503 13 tips for getting your talk accepted at a tech conference.md b/sources/tech/20200503 13 tips for getting your talk accepted at a tech conference.md deleted file mode 100644 index b260116fb6..0000000000 --- a/sources/tech/20200503 13 tips for getting your talk accepted at a tech conference.md +++ /dev/null @@ -1,127 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (13 tips for getting your talk accepted at a tech conference) -[#]: via: (https://opensource.com/article/20/5/tips-conference-proposals) -[#]: author: (Todd Lewis https://opensource.com/users/toddlewis) - -13 tips for getting your talk accepted at a tech conference -====== -Before you respond to an event's call for papers, make sure your talk's -proposal aligns with these best practices. -![All Things Open check-in at registration booth][1] - -As tech conference organizers ramp up for the fall season, you may be seeing calls for papers (CFP) landing in your email box or social media feeds. We at [All Things Open][2] (ATO) have seen a lot of presentation proposals over the years, and we've learned a few things about what makes them successful. - -As we prepare for the eighth annual ATO in October 2020, we thought we'd offer a few best practices for writing successful CFP responses. If you're considering submitting a talk to ATO or another tech event, we hope these tips will help improve the chances that your proposal will be accepted. - -### 1\. Know the event you're submitting a talk to - -This seems like the proverbial _no-brainer_, but some people don't take the time to research an event before they submit a talk. Peruse the conference's website and review the talks, speakers, topics, etc. featured in the last couple of years. You can also find a lot of information simply by googling. The time you invest here will help you avoid a submission that is completely out of context for the event. - -### 2\. Understand what the event is looking for - -Look for information about what the event is looking for and what types of topics or talks it expects will be a good fit. We try to provide as much information as possible about the [ATO conference][3], [why someone would want to speak][4], and [what we're looking for][5] (both general and special interest topics). We also try to make the submission process as easy as possible (no doubt, there is room for improvement), in part because we believe this improves the quality of submissions and makes our review process go more smoothly. - -### 3\. Reach out to the organizer and ask questions - -If you're considering submitting a talk, don't hesitate to reach out and ask the event organizers any questions you have and for guidance specific to the event. If there is no or little response, that should be a red flag. If you have any questions about All Things Open, please reach out directly at [info@allthingsopen.org][6]. - -### 4\. Be clear about what attendees will learn from your talk - -This is one of the most common mistakes we see. Only about 25% of the proposals we receive clearly explain the proposed talk's takeaways. One reason you should include this is that nearly every event attendee makes their schedule based on what they will learn if they go to a session. But for organizers and proposal reviewers, having this information clearly stated upfront is pure gold. It simplifies and speeds up the assessment process, which gets you one step closer to being accepted as a speaker. A paragraph titled "Attendee Takeaways" with bullet points is the holy grail for everyone involved. - -### 5\. Keep recommended word counts in mind - -This is another mistake we see a lot. Many talks are submitted with either a single sentence description in the abstract or an extraordinary long volume of text. Neither is a good idea. The only exception we can think of is when a topic is very popular or topical, and that alone is enough to win the day even if the abstract is extremely short (but this is rare). Most abstracts should be between 75 and 250 words, and perhaps more for an extended workshop with prerequisites (e.g., preexisting knowledge or required downloads). Even then, try to keep your proposal as sharp, concise, and on-point as possible. - -Disregard this advice at your own risk; otherwise, there's a high likelihood that your proposal will be met with one of these reactions from reviewers: "They didn't take the time to write any more than this?" or "Sheesh, there's no way I have the time to read all that. I'm going to give it the lowest score and move on." - -### 6\. Choose a good title - -This is a debate we see all the time: Should a talk's title describe what the talk is about, or should it be written to stand out and get attention (e.g., evoking emotion, anchoring to a popular pop culture topic, or asking a compelling question)? There isn't a single correct answer to this question, but we definitely know when a title "works" and when it doesn't. We've seen some very creative titles work well and generate interest, and we've seen very straightforward titles work well, also. - -Here is our rule of thumb: If the talk covers a topic that has been around a while and is not particularly _hot_ right now, try getting creative and spicing it up a bit. If the topic is newer, a more straightforward title describing the talk in plain terms should be good. - -Titles on an event schedule may be the only thing attendees use to decide what talks to attend. So, run your potential talk titles by colleagues and friends, and seek their opinions. Ask: "If you were attending an event and saw this title on the schedule, would it pique your interest?" - -### 7\. Know the basic criteria that reviewers and organizers use to make decisions - -While this isn't a comprehensive list of review criteria, most reviewers and organizers consider one or more of the following when evaluating talk proposals. Therefore, at minimum, consider this list when you're creating a talk and the components that go with it. - - 1. **Timeliness of and estimated interest in the topic:** Is the topic applicable to the session's target audience? Will it deliver value? Is it timely? - 2. **Educational value:** Based on the abstract and speaker, is it clear that attendees will learn something from the talk? As mentioned in item 4 above, including an "Attendee Takeaways" section is really helpful to establish educational value. - 3. **Technical value:** Is the technology you intend to showcase applicable, unique, or being used in a new and creative way? Is there a live demo or a hands-on component? While some topics don't lend themselves to a demo, most people are visual learners and are better off if a presentation includes one (if it's relevant). For this reason, we place a lot of value on demos and hands-on content. - 4. **Diversity:** Yes, there are exceptions, but the majority of events, reviewers, and organizers agree that having a diverse speaker lineup is optimal and results in a better overall event in multiple ways. A topic delivered from a different perspective can often lead to creative breakthroughs for attendees, which is a huge value-add. See item 10 below for more on this. - 5. **Talk difficulty level:** We identify All Things Open talks as introductory, intermediate, or advanced. Having a good mix of talk levels ensures everyone in attendance can access applicable content. See item 9 below for more on this, but in general, it's smart to indicate your talk's level, whether or not the CFP requests it. - - - -### 8\. Stay current on the event's industry or sector - -Submitting a proposal on a relevant topic increases the probability your talk will be accepted. But how do you know what topics are of interest, especially if the CFP doesn't spell it out in simple terms? The best way to know what's timely and interesting is to deeply understand the sector the event focuses on. - -Yes, this requires time and effort, and it implies you enjoy the sector enough to stay current on it, but it will pay off. This knowledge will result in a higher _sector IQ_, which will be reflected in your topic, title, and abstract. It will be recognized by reviewers and immediately set you apart from others. At All Things Open, we spend the majority of our time reading about and staying current on the "open" space so that we can feature relevant, substantive, and informed content. Submitting a talk that is relevant, substantive, and informed greatly enhances the chance it will be accepted. - -### 9\. Describe whether the talk is introductory, intermediate, or advanced - -Some CFPs don't ask for this information, but you should offer it anyway. It will make the reviewers and organizer very happy for multiple reasons, including these: - - 1. Unless the event targets attendees with a certain skill or experience level (and most do not), organizers must include content that is appealing to a wide audience, including people of all skill, experience, and expertise levels. Even if an event focuses on a specific type of attendee (perhaps people with higher levels of experience or skills), most want to offer something a little different. Listing the talk level makes this much easier for organizers. - 2. News flash: Reviewers and organizers don't know everything and are not experts in every possible topic area. As a result, reviewers will sometimes look for a few keywords or other criteria, and adding the talk level can "seal the deal" and get your talk confirmed. - - - -### 10\. Tell organizers if you're a member of a historically underrepresented group - -A growing number of events are getting better at recognizing the value of diversity and ensuring their speaker lineup reflects it. If you're part of a group that hasn't typically been included in tech events and leadership, look to see if there is a place to indicate that on the submission form. If not, mention it in a conspicuous place somewhere in the abstract. This does not guarantee approval in any way—your proposal must still be well-written and relevant—but it does give reviewers and organizers pertinent information they may value and take into consideration. - -### 11\. Don't be ashamed of your credentials or speaking experience if it is light - -We talk to a lot of people who would like to deliver a presentation and have a lot to offer, but they never submit a talk because they don't feel they're qualified to speak. _Not true._ Some of the best talks we've seen are from first-time speakers or those very early in their speaking careers. Go ahead and submit the talk, and be honest when discussing your background. Most reviewers and organizers will focus on the substance of the submission over your experience and recognize that new ways of approaching and using technology often come from newbies rather than industry veterans. - -One caveat here: It still pays to know yourself. By this, we mean if you absolutely hate public speaking, have no desire to do it, and are only considering submitting a talk due to, for example, pressure from an employer, the talk is not likely to go well. It's better, to be honest, on the frontend than force something you have no desire to do. - -### 12\. Consider panel sessions carefully - -If you've got an idea for a panel session, please consider it carefully. In more than 10 years of hosting events we've seen some really good panel sessions, but we've seen far more that didn't go so well. Perhaps too many people were on the panel and not everyone had a chance to speak, perhaps a single panel member dominated the entire conversation, or perhaps the moderator didn't keep the dialogue and engagement flowing smoothly. Regardless of the issue, panels have the potential to go very wrong. - -That said, panels can still work and deliver a lot of value to attendees. If you do submit a panel session be sure to keep in mind the amount of time allotted for the session and confirm the number of panel members accordingly. Remember, less is always more when it comes to the panel format. Also, be sure the moderator understands the subject matter being discussed and doesn't mind enforcing format parameters and speaking time limits. Finally, let organizers know panel members and the moderator will engage in a pre-conference walk-through/preparation call before the event to ensure a smooth process in front of a live audience. Remember, organizers are well aware panels can be terrific but can also go in the opposite direction and very easily lead to a lot of negative feedback. - -### 13\. This is not an opportunity to sell  - -This is a sensitive topic, but one that absolutely must be mentioned. Over the years we've seen literally hundreds of talks "disqualified" by reviewers because they viewed the talk as a sales pitch. Few things evoke such a visceral response. Yes, there are events, tracks, and session slots where a sales pitch is appropriate (and maybe even required by the company paying your costs). However, make it a priority to know when and where this is appropriate and acceptable. And always, and we mean always, err on the side of making substance the focus of the talk rather than a sales angle.  - -It might sound like a cliche, but when a talk is delivered effectively with a focus on substance, people will **want** to buy what you're selling. And if you're not selling anything, they'll want to follow you on social media and generally engage with you—because you delivered value to them. Meaning: You gave them something they can apply themselves (education) or because your delivery style was entertaining and engaging. With rare exceptions, always focus any abstract on substance, and the rest will take care of itself.  - -### Go for it! - -We greatly admire and respect anyone who submits a talk for consideration—it takes a lot of time, thought, and courage. Therefore, we go to great lengths to thank everyone who goes through the process; we give free event passes to everyone who applies (regardless of approval or rejection), and we make every effort to host Q&A sessions to provide as much guidance as possible on the front end. Again, the more time and consideration speakers put into the submission process, the easier the lives of reviewers and organizers. We need to make all of this as easy as possible. - -While this is not a comprehensive list of best practices, it includes some of the things we think people can benefit from knowing before submitting a talk. There are a lot of people out there with more knowledge and experience, so please share your best tips for submitting conference proposals in the comments, so we can all learn from you. - -* * * - -_[All Things Open][2] is a universe of platforms and events focusing on open source, open tech, and the open web. It hosts the [All Things Open conference][3], the largest open source/tech/web event on the US East Coast. The conference regularly hosts thousands of attendees and many of the world's most influential companies from a wide variety of industries and sectors. In 2019, nearly 5,000 people attended from 41 US states and 24 countries. Please direct inquiries about ATO to the team at [info@allthingsopen.org][6]._ - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/5/tips-conference-proposals - -作者:[Todd Lewis][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/toddlewis -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/ato2016_checkin_conference.jpg?itok=DJtoSS6t (All Things Open check-in at registration booth) -[2]: https://www.allthingsopen.org/ -[3]: https://2020.allthingsopen.org/ -[4]: https://2020.allthingsopen.org/call-for-speakers -[5]: https://www.allthingsopen.org/what-were-looking-for/ -[6]: mailto:info@allthingsopen.org diff --git a/sources/tech/20200505 Analyzing data science code with R and Emacs.md b/sources/tech/20200505 Analyzing data science code with R and Emacs.md deleted file mode 100644 index ebcfadbe92..0000000000 --- a/sources/tech/20200505 Analyzing data science code with R and Emacs.md +++ /dev/null @@ -1,133 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Analyzing data science code with R and Emacs) -[#]: via: (https://opensource.com/article/20/5/r-emacs-data-science) -[#]: author: (Peter Prevos https://opensource.com/users/danderzei) - -Analyzing data science code with R and Emacs -====== -Emacs' versatility and extensibility bring the editor's full power into -play for writing data science code. -![metrics and data shown on a computer screen][1] - -Way back in 2012, _Harvard Business Review_ published an article that proclaimed "data scientist" to be the [sexiest job][2] of the 21st century. Interest in data science has exploded since then. Many great open source projects, such as [Python][3] and the [R language][4] for statistical computing, have facilitated the rapid developments in how we analyze data. - -I started my career using pencil and paper and moved to spreadsheets. Now the R language is my weapon of choice when I need to create value from data. Emacs is another one of my favorite tools. This article briefly explains how to use the [Emacs Speaks Statistics][5] (ESS) package to get started with developing R projects in this venerable editor. - -The vast majority of R developers use the [RStudio][6] IDE to manage their projects. RStudio is a powerful open source editor with specialized functionality to develop data science projects. RStudio is a great integrated development environment (IDE), but its editing functions are limited. - -Using Emacs to write data science code means that you have access to the full power of this extensible editor. I prefer using Emacs for my data science projects because I can do many other tasks within the same application, leveraging the multifunctionality of this venerable editor. If you are just getting started with Emacs, then please first read Seth Kenlon's [Emacs getting started][7] article. - -### Setting up Emacs for R - -Emacs is an almost infinitely extensible text editor, which unfortunately means that many things don't work the way you want them to out of the box. Before you can write and execute R scripts, you need to install some packages and configure them. The ESS package provides an interface between Emacs and R. Other packages, such as [Company][8] and [highlight-parentheses][9] help with completion and balancing parentheses. - -Emacs uses a version of Lisp for configuration. The lines of [Emacs Lisp][10] code below install the required extensions and define a minimal configuration to get you started. These lines were tested for GNU Emacs version 26.3. - -Copy these lines and save them in a file named **init.el** in your **.emacs.d** folder. This is the folder that Emacs uses to store configurations, including the [init file][11]. If you already have an init file, then you can append these lines to your config. This minimal configuration is enough to get you started. - - -``` -;; Elisp file for R coding with Emacs - -;; Add MELPA repository and initialise the package manager -(require 'package) -(add-to-list 'package-archives -             '("melpa" . "")) -(package-initialize) - -;; Install use-package,in case it does not exist yet -;; The use-package software will install all other packages as required -(unless (package-installed-p 'use-package) -  (package-refresh-contents) -  (package-install 'use-package)) - -;; ESS configurationEmacs Speaks Statistics -(use-package ess -  :ensure t -) - -;; Auto completion -(use-package company -  :ensure t -  :config -  (setq company-idle-delay 0) -  (setq company-minimum-prefix-length 2) -  (global-company-mode t) -) - -; Parentheses -(use-package highlight-parentheses -  :ensure t -  :config -  (progn -    (highlight-parentheses-mode) -    (global-highlight-parentheses-mode)) -  ) -``` - -### Using the R console - -To start an R console session, press **M-x R** and hit **Enter** (**M** is the Emacs way to denote the **Alt** or **Command** key). ESS will ask you to nominate a working directory, which defaults to the folder of the current buffer. You can use more than one console in the same Emacs session by repeating the R command. - -Emacs opens a new buffer for your new R console. You can also use the **Up** and **Down** arrow keys to go to previous lines and re-run them. Use the **Ctrl** and **Up/Down** arrow keys to recycle old commands. - -The Company ("complete anything") package manages autocompletion in both the console and R scripts. When entering a function, the mini-buffer at the bottom of the screen shows the relevant parameters. When the autocompletion dropdown menu appears, you can press **F1** to view the chosen option's Help file before you select it. - -The [highlight-parentheses][9] package does what its name suggests. Several other Emacs packages are available to help you balance parentheses and other structural elements in your code. - -### Writing R scripts - -Emacs recognizes R mode for any buffer with a **.R** extension (the file extension is case-sensitive). Open or create a new file with the **C-x C-f** shortcut and type the path and file name. You can start writing your code and use all of the powerful editing techniques that Emacs provides. - -Several functions are available to evaluate the code. You can evaluate each line separately with **C-<return>**, while **C-c C-c** will evaluate a contiguous region. Keying **C-c C-b** will evaluate the whole buffer. - -When you evaluate some code, Emacs will use any running console or ask you to open a new console to run the code. - -The output of any plotting functions appears in a window outside of Emacs. If you prefer to view the output within Emacs, then you need to save the output to disk and open the resulting file in a separate buffer. - -![Literate programming in Org mode, the ESS buffer, and graphics output.][12] - -Literate programming in Org mode, the ESS buffer, and graphics output. - -### Advanced use - -This article provides a brief introduction to using R in Emacs. Many parameters can be fine-tuned to make Emacs behave according to your preferences, but it would take too much space to cover them here. The [ESS manual][13] describes these in detail. You can also extend functionality with additional packages. - -Org mode can integrate R code, providing a productive platform for literate programming. If you prefer to use RMarkdown, the [Polymode][14] package has you covered. - -Emacs has various packages to make your editing experience more efficient. The best part of using Emacs to write R code is that the program is more than just an IDE; it is a malleable computer system that you can configure to match your favorite workflow. - -Learning how to configure Emacs can be daunting. The best way to learn quickly is to copy ideas from people who share their configurations. Miles McBain manages a [list of Emacs configurations][15] that could be useful if you want to explore using the R language in Emacs further. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/5/r-emacs-data-science - -作者:[Peter Prevos][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/danderzei -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/metrics_data_dashboard_system_computer_analytics.png?itok=oxAeIEI- (metrics and data shown on a computer screen) -[2]: https://hbr.org/2012/10/data-scientist-the-sexiest-job-of-the-21st-century -[3]: https://www.python.org/ -[4]: https://www.r-project.org/ -[5]: https://ess.r-project.org/ -[6]: https://opensource.com/article/18/2/getting-started-RStudio-IDE -[7]: https://opensource.com/article/20/3/getting-started-emacs -[8]: https://company-mode.github.io/ -[9]: https://github.com/tsdh/highlight-parentheses.el -[10]: https://en.wikipedia.org/wiki/Emacs_Lisp -[11]: https://www.gnu.org/software/emacs/manual/html_node/emacs/Init-File.html -[12]: https://opensource.com/sites/default/files/uploads/r-ess-screenshot.jpg (Literate programming in Org mode, the ESS buffer, and graphics output.) -[13]: https://ess.r-project.org/index.php?Section=documentation&subSection=manuals -[14]: https://github.com/polymode/polymode -[15]: https://github.com/MilesMcBain/esscss diff --git a/sources/tech/20200508 Metaphors in man pages.md b/sources/tech/20200508 Metaphors in man pages.md deleted file mode 100644 index 8a9ea9c3b9..0000000000 --- a/sources/tech/20200508 Metaphors in man pages.md +++ /dev/null @@ -1,182 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Metaphors in man pages) -[#]: via: (https://jvns.ca/blog/2020/05/08/metaphors-in-man-pages/) -[#]: author: (Julia Evans https://jvns.ca/) - -Metaphors in man pages -====== - -This morning I was watching a [great talk by Maggie Appleton][1] about metaphors. In the talk, she explains the difference between a “figurative metaphor” and a “cognitive metaphor”, and references this super interesting book called [Metaphors We Live By][2] which I immediately got and started reading. - -Here’s an example from “Metaphors We Live By” of a bunch of metaphors we use for ideas: - - * ideas as **food**: “_raw_ facts”, “_half-baked_ ideas”, “_swallow_ that claim”, “_spoon-feed_ our students”, “_meaty_ part of the paper”, “that idea has been _fermenting_ for years” - * ideas as **people**: “the theory of relativity _gave birth_ to an enormous number of ideas”, “whose _brainchild_ was that”, “those ideas _died off_ in the middle ages”, “cognitive psychology is in its _infancy_“ - * ideas as **products**: “we’ve _generated_ a lot of ideas this week”, “it needs to be _refined_”, “his _intellectual productivity_ has decreased in recent years” - * ideas as **commodities**: “he won’t _buy_ that”, “that’s a _worthless_ idea”, “she has _valuable_ ideas” - * ideas as **resources**: “he _ran out_ of ideas”, “let’s _pool_ our ideas”, “that idea will _go a long way_“ - * ideas as **cutting instruments**: “that’s an _incisive_ idea”, “that _cuts right to the heart_ of the matter”, “he’s _sharp_“ - * ideas as **fashions**: “that idea _went out of style_ years ago”, “marxism is _fashionable_ in western europe”, “berkeley is a center of _avant-garde_ thought”, “semiotics has become quite _chic_“ - - - -There’s a [long list of more English metaphors here][3], including many metaphors from the book. - -I was surprised that there were so many different metaphors for ideas, and that we’re using metaphors like this all the time in normal language. - -### let’s look for metaphors in man pages! - -Okay, let’s get to the point of this blog post, which is just a small fun exploration – there aren’t going to be any Deep Programming Insights here. - -I went through some of the examples of metaphors in Metaphors To Live By and grepped all the man pages on my computer for them. - -### processes as people - -This is one of the richer categories – a lot of different man pages seem to agree that processes are people, or at least alive in some way. - - * Hangup detected on controlling terminal or **death** of controlling process (`man 7 signal`) - * can access the local **agent** through the forwarded connection (`man ssh_config`) - * If the exit of the process causes a process group to become **orphaned** (`man exit`) - * If a parent process terminates, then its **“zombie” children** (if any) (`man wait`) - * … send SIGHUP to the **parent** process of the client (`man tmux`) - * Otherwise, it **“runs” to catch up** or waits (`man mplayer`) - * However, Git does not (and it should not) change tags **behind users back** (`man git-tag`) - * will **listen** forever for a connection (`man nc_openbsd`) - * this monitor scales badly with the number of files being **observed** (`man fswatch`) - * If you try to use the **birth** time of a reference file (`man file`) - * a program **died** due to a fatal signal (`man xargs`) - * protocol version in the TLS **handshake** (`man curl`) - * it will **look for** a debug object at… (`man valgrind`) - - - -### data as food - - * “Apparently some digital cameras get **indigestion** if you feed them a CF card) (`man mkfs`) - * “Send packets using **raw** ethernet frames or IP packets” (`man nmap`) - * “the above example can be thought of as a maximizing repeat that must **swallow** everything it can” (`man pcrepattern`) - * “This will allow you to **feed** newline-delimited name=value pairs to the script on’ (`man CGI`) - - - -### data as objects - - * Kill the tmux server and clients and **destroy** all sessions (`tmux`) - * Each command will produce one **block** of output on standard output. (`man tmux`) - * “HTTPS guarantees that the password will not **travel** in the clear” (`man Net::SSLeay`) - * “way to **pack** more than one certificate into an ASN.1 structure” (`man gpgsm`) - - - -### processes as machines/objects - - * “This is **fragile**, subject to change, and thus should not be relied upon” (`man ps`) - * “This is useful if you have to use **broken** DNS” (`man aria2c`) - * “This provides good safety measures, but **breaks down** when” (`man git-apply`) - * “debugfs is a debugging tool. It has **rough edges**!” (`man debugfs`) - - - -### containers - -There are LOTS of containers: directories, files, strings, caches, queues, buffers, etc. - - * can exploit that to **get out** of the chroot directory (`man chroot`) - * “The file **containing** the RFC 4648 Section 5 base64url encoded 128-bit secret key” - * “Keys must start with a lowercase character and **contain** only hyphens” - * “just specify an **empty** string” (`man valgrind`) - * “the cache is **full** and a new page that isn’t cached becomes visible” (`man zathurarc`) - * “Number of table **overflows**” (`man lnstat`) - * “likely **overflow** the buffer” (`man g++`) - - - -### resources - -There are also lots of kinds of resources: bandwidth, TCP sockets, session IDs, stack space, memory, disk space. - - * This is not recommended and **wastes** bitrate (`man bitrate`) - * corruption or **lost** data if the system crashes (`man btree`) - * you don’t want Wget to **consume** the entire available bandwidth (`man wget`) - * Larger values will be slower and cause x264 to **consume** more memory (`man mplayer`) - * the resulting file can **consume** some disk space (`man socat`) - * attempting to **reuse** SSL session-ID (`man curl`) - * This option controls stack space **reuse** (`man gcc`) - * Keep the TCP socket open between queries and **reuse** it rather than creating a new TCP socket (`man dig`) - * the maximum value will easily **eat up** three extra gigabytes or so of memory (`man valgrind`) - - - -### orientation (up, down, above, below) - - * Send the escape character to the **frontend** (`man qemu-system`) - * Note that TLS 1.3 is only supported by a subset of TLS **backends** (`man curl`) - * This option may be useful if you are **behind** a router (`man mplayer`) - * When a file that exists on the **lower** layer is renamed (`man rename`) - * Several of the socket options should be handled at **lower** levels (`man getsockopt`) - * while still performing such **higher** level functionality (`man nmap`) - * This is the same string passed **back to** the front end (`man sudo_plugin`) - * On Linux, `futimens` is a library function implemented **on top** of the `utimensat` system call (`man futimens`) - - - -### buildings - -Limits as rooms/buildings (which have floors, and ceilings, which you hit) are kind of fun: - - * the kernel places a **floor** of 32 pages on this size limit (`man execve`) - * This specifies a **ceiling** to which the process’s nice value can be raised (`man getrlimit`) - * If this limit is **hit** the search is aborted (`man gcc`) - * these libraries are used as the **foundation** for many of the libraries (`man Glib`) - - - -### money / wealth - - * This is a very **expensive** operation for large projects, so use it with caution (`man git-log`) - * Note that since this operation is very I/O **expensive** (`man git-filter-branch`) - * provides a **rich** interface for scripts to print disk layouts (`man fdisk`) - * The number of times the softirq handler function terminated per second because its **budget** was consumed (`man sar.sysstat`) - * the extra **cost** depends a lot on the application at hand (`man valgrind`) - - - -### more miscellaneous metaphors - -here are some more I found that didn’t fit into any of those categories yet. - - * when a thread is created under glibc, just one **big** lock is used for all thread setup (`man valgrind`) - * will likely **drop** the connection (`man x11vnc`) - * on all **paths** from the load to the function entry (`man gcc`) - * it is a very good idea to **wipe** filesystem signatures, data, etc. before (`man cryptsetup`) - * they will be **embedded** into the document - * the client should automatically **follow** referrals returned - * even if there exist mappings that **cover** the whole address space requested (`man mremap`) - * when a network interface **disappears** (`man systemd-resolve`) - - - -### we’re all using metaphors all the time - -I found a lot more metaphors than I expected, and most of them are just part of how I’d normally talk about a program. Interesting! - --------------------------------------------------------------------------------- - -via: https://jvns.ca/blog/2020/05/08/metaphors-in-man-pages/ - -作者:[Julia Evans][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://jvns.ca/ -[b]: https://github.com/lujun9972 -[1]: https://www.youtube.com/watch?v=K8MF3aDg-bM&feature=youtu.be&t=14991 -[2]: https://www.goodreads.com/book/show/34459.Metaphors_We_Live_By -[3]: https://metaphor.icsi.berkeley.edu/pub/en/index.php/Category:Metaphor diff --git a/sources/tech/20200510 Open source underpins coronavirus IoT and robotics solutions.md b/sources/tech/20200510 Open source underpins coronavirus IoT and robotics solutions.md deleted file mode 100644 index 5ce9ce0a1f..0000000000 --- a/sources/tech/20200510 Open source underpins coronavirus IoT and robotics solutions.md +++ /dev/null @@ -1,86 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Open source underpins coronavirus IoT and robotics solutions) -[#]: via: (https://opensource.com/article/20/5/robotics-covid19) -[#]: author: (Sam Bocetta https://opensource.com/users/sambocetta) - -Open source underpins coronavirus IoT and robotics solutions -====== -From sanitization of equipment and facilities to plotting the spread of -the virus, robots are playing an active role in combating COVID-19. -![Three giant robots and a person][1] - -The tech sector is quietly having a boom during the COVID-19 pandemic. Open source developers are getting involved with many aspects of the fight against the coronavirus, [using Python to visualize its spread][2] and helping to repurpose data acquisition systems to perform contact tracing. - -However, one of the most exciting areas of current research is the use of robotics to contain the spread of the coronavirus. In the last few weeks, robots have been deployed in critical environments—particularly in hospitals and on airplanes—to help staff sterilize surfaces and objects. - -Most of these robots are produced by tech startups, who have seen an opportunity to prove the worth of their proprietary systems. Many of them, however, rely on [open source cloud and IoT tools][3] that have been developed by the open source community. - -In this article, we'll take a look at how robotics are being used to fight the disease, the IoT infrastructure that underpins these systems, and finally, the security and privacy concerns that their increased use is highlighting. - -### Robots and COVID-19 - -Around the world, robots are being deployed to help the fight against COVID-19. The most direct use of robots has been in healthcare facilities, and China has taken the lead when it comes to deploying robots in hospitals. - -For example, a field hospital that recently opened in Wuhan—where the virus originated—is [making extensive use of robots][4] to help healthcare workers care for patients. Some of these robots provide food, drink, and medicine to patients, and others are used to clean parts of the hospital. - -Other companies, such as the Texas startup Xenex Disinfection Services, are using robots and UV light to deactivate viruses, bacteria, and spores on surfaces in airports. Still others, like Dimer UVC Innovations, are focusing on making robots that can [improve aircraft hygiene][5]. - -Not all of the "robots" deployed against the disease are anthropomorphic, though. The same field hospital in Wuhan that is using human-like robots is also making extensive use of less obviously "robotic" IoT devices. - -Patients entering the hospital are screened by networked 5G thermometers to alert staff for anyone showing a high fever, and patients wear smart bracelets and rings equipped with sensors. These are synced with CloudMinds' AI platform, and patients' vital signs, including temperature, heart rate, and blood oxygen levels, can be monitored. - -### Robots and the IoT - -Even when these robots appear to be independent entities, they make [extensive use of the IoT][6]. In other words, although patients may feel that they are being cared for by a robot that can make its own decisions, in reality, these robots are controlled by large, distributed sensing and data processing systems. - -Although many of the robots being deployed are the proprietary property of the tech firms who produce their hardware, their functioning is based on an ecosystem of software that is largely open source. - -This observation is an important one because it overturns one of the primary misconceptions about the [way that AI is used today][7][,][7] whether in a healthcare setting or elsewhere. Most research into robotics today does not seek to embed fully intelligent AI systems into robots themselves but, instead, uses centralized AI systems to control a wide variety of far less "smart" IoT devices. - -This observation, in turn, highlights two key points about the robots currently being developed and used to fight COVID-19. One is that they rely on a software ecosystem—much of it open source—that has been developed in a truly collaborative process involving thousands of engineers. The second is that the networked nature of these robots makes them vulnerable to exploitation. - -### Security and privacy - -This vulnerability to cybersecurity threats has led some analysts to raise questions about the wisdom of widespread deployment of IoT-driven robotics, whether in the healthcare system or anywhere else. Spyware in the IoT [remains a huge problem][8], and some fear that by integrating IoT systems into healthcare, we may be exposing more data—and more sensitive data—to intruders. - -Even where developers are careful to build security into these devices, the sheer number of components they rely on makes DevSecOps processes difficult to implement. Especially in this current time of crisis, many software engineers have been forced to accelerate the release of new components, and this could lead to them being vulnerable. If a company is rushing to bring a healthcare robot onto the market in response to COVID-19, it's unlikely that the open source code that these devices run on will be [properly audited][9]. - -And even if companies are able to maintain the integrity of their DevSecOps processes while still accelerating development, it's far from certain that patients themselves understand the privacy implications of delegating their care to IoT devices. Many lack the open source privacy tools [necessary to keep their data private][10] when browsing the internet, let alone those that should be deployed to protect sensitive healthcare data. - -### The future - -In short, the deployment of robots in the fight against COVID-19 is highlighting long-standing concerns about the integrity, security, and privacy of IoT systems more generally. Professionals in this field have long argued that [IoT audits][11] and [embedded Linux systems][12] should be the standard for IoT development, but in the current crisis, their warnings are likely to be ignored. - -This is worrying because it's likely that IoT systems will be increasingly used in healthcare in the coming decade. So whilst the COVID-19 pandemic will provide a proof of their utility in this sector, it should also not be used as an excuse to roll out poorly secured, poorly audited IoT software in highly sensitive environments. - -Open source isn’t just changing the way we interact with the world, it’s changing the way the world... - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/5/robotics-covid19 - -作者:[Sam Bocetta][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/sambocetta -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/BUSINESS_robots.png?itok=TOZgajrd (Three giant robots and a person) -[2]: https://opensource.com/article/20/4/python-data-covid-19 -[3]: https://opensource.com/article/18/7/digital-transformation-strategy-think-cloud -[4]: https://www.cnbc.com/2020/03/18/how-china-is-using-robots-and-telemedicine-to-combat-the-coronavirus.html -[5]: https://www.therobotreport.com/company-offers-germ-killing-robot-to-airports-to-address-coronavirus-outbreak/ -[6]: https://www.cloudwards.net/what-is-the-internet-of-things/ -[7]: https://opensource.com/article/17/3/5-big-ways-ai-rapidly-invading-our-lives -[8]: https://blog.eccouncil.org/spyware-in-the-iot-what-does-it-mean-for-your-online-privacy/ -[9]: https://opensource.com/article/17/10/doc-audits -[10]: https://privacyaustralia.net/privacy-tools/ -[11]: https://opensource.com/article/19/11/how-many-iot-devices -[12]: https://opensource.com/article/17/3/embedded-linux-iot-ecosystem diff --git a/sources/tech/20200511 How I track my home-s energy consumption with open source.md b/sources/tech/20200511 How I track my home-s energy consumption with open source.md deleted file mode 100644 index 10dfaa5f8e..0000000000 --- a/sources/tech/20200511 How I track my home-s energy consumption with open source.md +++ /dev/null @@ -1,144 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (How I track my home's energy consumption with open source) -[#]: via: (https://opensource.com/article/20/5/energy-monitoring) -[#]: author: (Stephan Avenwedde https://opensource.com/users/hansic99) - -How I track my home's energy consumption with open source -====== -These open source components help you find ways to save money and -conserve resources. -![lightbulb drawing outline][1] - -An important step towards optimizing energy consumption is knowing your actual consumption. My house was built during the oil crisis in the 1970s, and due to the lack of a natural gas connection, the builders decided to use electricity to do all of the heating (water and home heating). This is not unusual for this area of Germany, and it remains an appropriate solution in countries that depend highly on nuclear power. - -Electricity prices here are quite high (around € 0.28/kWh), so I decided to monitor my home's energy consumption to get a feel for areas where I could save some energy. - -I used to work for a company that sold energy-monitoring systems for industrial customers. While this company mostly used proprietary software, you can set up a similar smart monitoring and logging solution for your home based on open source components. This article will show you how. - -In Germany, the grid operator owns the electricity meter. The grid operator is obliged to provide an interface on its metering device to enable the customer to access the meter reading. Here is the metering device on my home: - -![Actaris ACE3000 electricity meter][2] - -Actaris ACE3000 Type 110 (dry contact located behind the marked cover) - -Generally, almost every metering device has at least a [dry contact][3]—as my electricity meter does—that you can use to log metering. As you can see, my electricity meter has two counters: The upper one is for the day tariff (6am to 10pm), and the lower one is for the night tariff (10pm to 6am). The night tariff is a bit cheaper. Two-tariff meters are usually found only in houses with electric heating. - -### Design - -A reliable energy-monitoring solution for private use should meet the following requirements: - - * Logging of metering impulses (dry contact) - * 24/7 operation - * Energy-saving operation - * Visualization of consumption data - * Long-term recording of consumption data - * Connectivity (e.g., Ethernet, USB, WiFi, etc.) - * Affordability - - - -I choose the Siemens SIMATIC IOT2020 as my hardware platform. This industrial-proven device is based on an Intel Quark x86 CPU, has programmable interrupts, and is compatible with many Arduino shields. - -![Siemens SIMATIC IOT2020][4] - -Siemens SIMATIC IOT2020 - -The Siemens device comes without an SD card and, therefore, without an operating system. Luckily, you can find a current Yocto-based Linux OS image and instructions on how to flash the SD card in the [Siemens forum][5]. - -In addition to the hardware platform, you also need some accessories. The following materials list shows the minimum components you need. Each item includes links to the parts I purchased, so you can get a sense of the project's costs. - -#### Materials list - - * [Siemens SIMATIC IoT2020 unit][6] - * [Siemens I/O Shield for SIMATIC IoT2000 series][7] - * [microSD card][8] (2GB or more) - * [CSL 300Mbit USB-WLAN adapter][9] - * 24V power supply (I used a 2.1A [TDK-Lambda DRB50-24-1][10], which I already owned). You could use a less expensive power supply with less power: the SIMATIC IOT2020 has a maximum current of 1.4A, and the dry contact needs an additional 0.1A (24V / 220Ω). - * 5 terminal blocks ([Weidmueller WDU 2.5mm][11]) - * 2 terminal cross-connecting bridges ([Weidmueller WQV][12]) - * [DIN rail][13] (~300 mm) - * [220Ω / 3W resistor][14] - * Wire - - - -Here is the assembled result: - -![Mounted and hooked up energy logger][15] - -Energy logger mounted and hooked up - -Unfortunately, I didn't have enough space at the rear wall of the cabinet; therefore, the DIN rail with the mounted parts lies on the ground. - -The connections between the meter and the Siemens device look like this: - -![Wiring between meter and energy logger][16] - -### How it works - -A dry contact is a current interface. When the electricity meter triggers, a current of 0.1A starts flowing between **s0+** and **s0-**. On **DI0**, the voltage rises to 24V and triggers an interrupt. When the electricity meter disconnects **s0+** and **s0-**, **DI0** is grounded over the resistor. - -On my device, the contact closes 1,000 times per kWh (this value varies between metering devices). - -To count these peaks reliably, I created [a C program][17] that registers an interrupt service routine on the DI0 input and counts upwards in memory. Once a minute, the values from memory are written to an [SQLite][18] database. - -The overall meter reading is also written to a text file and can be preset with a starting value. This acts as a copy of the overall metering value of the meter in the cabinet. - -![Energy logger architecture][19] - -Energy logger architecture - -The data is visualized using [Node-RED][20], and I can access overviews, like the daily consumption dashboard below, over a web-based GUI. - -![Node-RED based GUI][21] - -Daily overview in the Node-RED GUI - -For the daily overview, I calculate the hourly costs based on the consumption data (the large bar chart). On the top-left of the dashboard you can see the actual power; below that is the daily consumption (energy and costs). The water heater for the shower causes the large peak in the bar chart. - -### A reliable system - -Aside from a lost timestamp during a power failure (the real-time clock in the Siemens device is not backed by a battery by default), everything has been working fine for more than one-and-a-half years. - -If you can set up the whole Linux system completely from the command line, you'll get a reliable and flexible system with the ability to link interrupt service routines to the I/O level. - -Because the I/O Shield runs on standard control voltage (24V), you can extend its functionality with the whole range of standardized industrial components (e.g., relays, sensors, actors, etc.). And, due to its open architecture, this system can be extended easily and applied to other applications, like for monitoring gas or water consumption or as a weather station, a simple controller for tasks, and more. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/5/energy-monitoring - -作者:[Stephan Avenwedde][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/hansic99 -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/Collaboration%20for%20health%20innovation.png?itok=s4O5EX2w (lightbulb drawing outline) -[2]: https://opensource.com/sites/default/files/uploads/openenergylogger_1_electricity_meter.jpg (Actaris ACE3000 electricity meter) -[3]: https://en.wikipedia.org/wiki/Dry_contact -[4]: https://opensource.com/sites/default/files/uploads/openenergylogger_2_siemens_device.jpg (Siemens SIMATIC IOT2020) -[5]: https://support.industry.siemens.com/tf/ww/en/posts/new-example-image-version-online/189090/?page=0&pageSize=10 -[6]: https://de.rs-online.com/web/p/products/1244037 -[7]: https://de.rs-online.com/web/p/products/1354133 -[8]: https://de.rs-online.com/web/p/micro-sd-karten/7582584/ -[9]: https://www.amazon.de/300Mbit-WLAN-Adapter-Hochleistungs-Antennen-Dual-Band/dp/B00LLIOT34 -[10]: https://de.rs-online.com/web/p/products/8153133 -[11]: https://de.rs-online.com/web/p/din-schienenklemmen-ohne-sicherung/0425190/ -[12]: https://de.rs-online.com/web/p/din-schienenklemmen-zubehor/0202574/ -[13]: https://de.rs-online.com/web/p/din-schienen/2835729/ -[14]: https://de.rs-online.com/web/p/widerstande-durchsteckmontage/2142673/ -[15]: https://opensource.com/sites/default/files/uploads/openenergylogger_3_assembled_device.jpg (Mounted and hooked up energy logger) -[16]: https://opensource.com/sites/default/files/uploads/openenergylogger_4_wiring.png (Wiring between meter and energy logger) -[17]: https://github.com/hANSIc99/OpenEnergyLogger -[18]: https://www.sqlite.org/index.html -[19]: https://opensource.com/sites/default/files/uploads/openenergylogger_5_architecure.png (Energy logger architecture) -[20]: https://nodered.org/ -[21]: https://opensource.com/sites/default/files/uploads/openenergylogger_6_dashboard.png (Node-RED based GUI) diff --git a/sources/tech/20200515 The pieces of Fedora Silverblue.md b/sources/tech/20200515 The pieces of Fedora Silverblue.md deleted file mode 100644 index 04bd4e1643..0000000000 --- a/sources/tech/20200515 The pieces of Fedora Silverblue.md +++ /dev/null @@ -1,172 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (The pieces of Fedora Silverblue) -[#]: via: (https://fedoramagazine.org/pieces-of-fedora-silverblue/) -[#]: author: (Nick Hardiman https://fedoramagazine.org/author/nickhardiman/) - -The pieces of Fedora Silverblue -====== - -![][1] - -Fedora Silverblue provides a useful workstation build on an immutable operating system. In “[What is Silverblue?][2]“, you learned about the benefits that an immutable OS provides. But what pieces go into making it? This article examines some of the technology that powers Silverblue. - -### The filesystem - -Fedora Workstation users may find the idea of an immutable OS to be the most brain-melting part of Silverblue. What does that mean? Find some answers by taking a look at the filesystem. - -At first glance, the layout looks pretty much the same as a regular Fedora file system. It has some differences, like making _/home_ a symbolic link to _/var/home_. And you can get more answers by looking at how libostree works. libostree treats the whole tree like it’s an object, checks it into a code repository, and checks out a copy for your machine to use. - -#### libostree - -The [libostree project][3] supplies the goods for managing Silverblue’s file system. It is an upgrade system that the user can control using [rpm-ostree commands][4]. - -libostree knows nothing about packages—an upgrade means replacing one complete file system with another complete file system. libostree treats the file system tree as one atomic object (an unbreakable unit). In fact, the forerunner to Silverblue was named [Project Atomic][5]. - -The libostree project provides a library and set of tools. It’s an upgrade system that carries out these tasks. - - 1. Pull in a new file system - 2. Store the new file system - 3. Deploy the new file system - - - -##### Pull in a new file system - -Pulling in a new file system means copying an object (the entire file system) from a remote source to its own store. If you’ve worked with virtual machine image files, you already understand the concept of a file system object that you can copy. - -##### Store the new file system - -The libostree store has some source code control qualities—it stores many file system objects, and checks one out to be used as the root file system. libostree’s store has two parts: - - * a repository database at _/sysroot/ostree/repo/_ - * file systems in _/sysroot/ostree/deploy/fedora/deploy/_ - - - -libostree keeps track of what’s been checked in using commit IDs. Each commit ID can be found in a directory name, nested deep inside _/sysroot_ .A libostree commit ID is a long checksum, and looks similar to a git commit ID. - -``` -$ ls -d /sysroot/ostree/deploy/fedora/deploy/*/ -/sysroot/ostree/deploy/fedora/deploy/c4bf7a6339e6be97d0ca48a117a1a35c9c5e3256ae2db9e706b0147c5845fac4.0/ -``` - -_rpm-ostree status_ gives a little more information about that commit ID. The output is a little confusing; it can take a while to see this file system is Fedora 31. - -``` -$ rpm-ostree status -State: idle -AutomaticUpdates: disabled -Deployments: -● ostree://fedora:fedora/31/x86_64/silverblue - Version: 31.1.9 (2019-10-23T21:44:48Z) - Commit: c4bf7a6339e6be97d0ca48a117a1a35c9c5e3256ae2db9e706b0147c5845fac4 - GPGSignature: Valid signature by 7D22D5867F2A4236474BF7B850CB390B3C3359C4 -``` - -##### Deploy the new filesystem - -libostree deploys a new file system by checking out the new object from its store. libostree doesn’t check out a file system by copying all the files—it uses hard links instead. If you look inside the commit ID directory, you see something that looks suspiciously like the root directory. That’s because it _is_ the root directory. You can see these two directories are pointing to the same place by checking their inodes. - -``` -$ ls -di1 / /sysroot/ostree/deploy/fedora/deploy/*/ -260102 / -260102 /sysroot/ostree/deploy/fedora/deploy/c4bf7a6339e6be97d0ca48a117a1a35c9c5e3256ae2db9e706b0147c5845fac4.0/ -``` - -This is a fresh install, so there’s only one commit ID. After a system update, there will be two. If more copies of the file system are checked into libostree’s repo, more commit IDs appear here. - -##### Upgrade process - -Putting the pieces together, the update process looks like this: - - 1. libostree checks out a copy of the file system object from the repository - 2. DNF installs packages into the copy - 3. libostree checks in the copy as a new object - 4. libostree checks out the copy to become the new file system - 5. You reboot to pick up the new system files - - - -In addition to more safety, there is more flexibility. You can do new things with libostree’s repo, like store a few different file systems and check out whichever one you feel like using. - -#### Silverblue’s root file system - -Fedora keeps its system files in all the usual Linux places, such as _/boot_ for boot files, _/etc_ for configuration files, and _/home_ for user home directories. The root directory in Silverblue looks much like the root directory in traditional Fedora, but there are some differences. - - * The filesystem has been checked out by libostree - * Some directories are now symbolic links to new locations. For example, _/home_ is a symbolic link to _/var/home_ - * _/usr_ is a read-only directory - * There’s a new directory named _/sysroot_. This is libostree’s new home - - - -#### Juggling file systems - -You can store many file systems and switch between them. This is called _rebasing_, and it’s similar to git rebasing. In fact, upgrading Silverblue to the next Fedora version is not a big package install—it’s a pull from a remote repository and a rebase. - -You could store three copies with three different desktops: one KDE, one GNOME, and one XFCE. Or three different OS versions: how about keeping the current version, the nightly build, and an old classic? Switching between them is a matter of rebasing to the appropriate file system object. - -Rebasing is also how you upgrade from one Fedora release to the next. See “[How to rebase to Fedora 32 on Silverblue][6]” for more information. - -### Flatpak - -The [Flatpak project][7] provides a way of installing applications like LibreOffice. Applications are pulled from remote repositories like [Flathub][8]. It’s a kind of package manager, although you won’t find the word _package_ in the [docs][9]. Traditional Fedora variants like Fedora Workstation can also use Flatpak, but the sandboxed nature of flatpaks make it particularly good for Silverblue. This way you do not have to do the entire ostree update process every time you wish to install an application. - -Flatpak is well-suited to desktop applications, but also works for command line applications. You can install the [vim][10] editor with the command _flatpak install flathub org.vim.Vim_ and run it with _flatpak run org.vim.Vim_. - -### toolbox - -The [toolbox project][11] provides a traditional operating system inside a container. The idea is that you can mess with the mutable OS inside your toolbox (the Fedora container) as much as you like, and leave the immutable OS outside your toolbox untouched. You pack as many toolboxes as you want on your system, so you can keep work separated. Behind the scenes, the executable _/usr/bin/toolbox_ is a shell script that uses [podman][12]. - -A fresh install does not include a default toolbox. The _toolbox create_ command checks the OS version (by reading _/usr/lib/os-release_), looks for a matching version at the Fedora container registry, and downloads the container. - -``` -$ toolbox create -Image required to create toolbox container. -Download registry.fedoraproject.org/f31/fedora-toolbox:31 (500MB)? [y/N]: y -Created container: fedora-toolbox-31 -Enter with: toolbox enter -``` - -Hundreds of packages are installed inside the toolbox. The _dnf_ command and the usual Fedora repos are set up, ready to install more. The _ostree_ and _rpm-ostree_ commands are not included – no immutable OS here. - -Each user’s home directory is mounted on their toolbox, for storing content files outside the container. - -### Put the pieces together - -Spend some time exploring Fedora Silverblue and it will become clear how these components fit together. Like other Fedora variants, all these of tools come from open source projects. You can get as up close and personal as you want, from reading their docs to contributing code. Or you can [contribute to Silverblue][13] itself. - -Join the Fedora Silverblue conversations on [discussion.fedoraproject.org][14] or in [#silverblue on Freenode IRC][15]. - --------------------------------------------------------------------------------- - -via: https://fedoramagazine.org/pieces-of-fedora-silverblue/ - -作者:[Nick Hardiman][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://fedoramagazine.org/author/nickhardiman/ -[b]: https://github.com/lujun9972 -[1]: https://fedoramagazine.org/wp-content/uploads/2020/04/silverblue-pieces-816x345.png -[2]: https://fedoramagazine.org/what-is-silverblue/ -[3]: https://ostree.readthedocs.io/en/latest/ -[4]: https://rpm-ostree.readthedocs.io/en/latest/manual/administrator-handbook/#administering-an-rpm-ostree-based-system -[5]: https://www.projectatomic.io/ -[6]: https://fedoramagazine.org/how-to-rebase-to-fedora-32-on-silverblue/ -[7]: https://github.com/flatpak/flatpak -[8]: https://flathub.org/ -[9]: http://docs.flatpak.org/en/latest/index.html -[10]: https://www.vim.org/ -[11]: https://github.com/containers/toolbox -[12]: https://github.com/containers/libpod -[13]: https://silverblue.fedoraproject.org/contribute -[14]: https://discussion.fedoraproject.org/c/desktop/silverblue -[15]: https://webchat.freenode.net/#silverblue diff --git a/sources/tech/20200516 Fatih-s question.md b/sources/tech/20200516 Fatih-s question.md deleted file mode 100644 index 1225c624a8..0000000000 --- a/sources/tech/20200516 Fatih-s question.md +++ /dev/null @@ -1,214 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Fatih’s question) -[#]: via: (https://dave.cheney.net/2020/05/16/fatihs-question) -[#]: author: (Dave Cheney https://dave.cheney.net/author/davecheney) - -Fatih’s question -====== - -A few days ago Fatih posted [this question][1] on twitter. - -I’m going to attempt to give my answer, however to do that I need to apply some simplifications as my previous attempts to answer it involved a lot of phrases like _a pointer to a pointer_, and other unhelpful waffling. Hopefully my simplified answer can be useful in building a mental framework to answer Fatih’s original question. - -### Restating the question - -Fatih’s original tweet showed [four different variations][2] of `json.Unmarshal`. I’m going to focus on the last two, which I’ll rewrite a little: - -``` -package main - -import ( - "encoding/json" - "fmt" -) - -type Result struct { - Foo string `json:"foo"` -} - -func main() { - content := []byte(`{"foo": "bar"}`) - var result1, result2 *Result - - err := json.Unmarshal(content, &result1) - fmt.Println(result1, err) // &{bar} - - err = json.Unmarshal(content, result2) - fmt.Println(result2, err) // json: Unmarshal(nil *main.Result) -} -``` - -Restated in words, `result1` and `result2` are the same type; `*Result`. Decoding into `result1` works as expected, whereas decoding into `result2` causes the `json` package to complain that the value passed to `Unmarshal` is `nil`. However, both values were declared without an initialiser so both would have taken on the type’s zero value, `nil`. - -Eagle eyed readers will have spotted that the reason for the difference is the first` `invocation is passed `&result1`, while the second is passed `result2`, but this explanation is unsatisfactory because the documentation for `json.Unmarshal` states: - -> Unmarshal parses the JSON-encoded data and stores the result in the value pointed to by v. **If v is nil or not a pointer**, Unmarshal returns an InvalidUnmarshalError. - -Which is confusing because `result1` and `result2` _are_ pointers. Furthermore, without initialisation, both _are_ `nil`. Now, the documentation is correct (as you’d expect from a package that has been hammered on for a decade), but explaining _why_ takes a little more investigation. - -### Functions receive a copy of their arguments - -Every assignment in Go is a copy, this includes function arguments and return values. - -``` -package main - -import ( - "fmt" -) - -func increment(v int) { - v++ -} - -func main() { - v := 1 - increment(v) - fmt.Println(v) // 1 -} -``` - -In this example, `increment` is operating on a _copy_ of `main`‘s `v`. This is because the `v` declared in `main` and `increment`‘s `v` parameter have different addresses in memory. Thus changes to `increment`‘s `v` cannot affect the contents of `main`‘s `v`. - -``` -package main - -import ( - "fmt" -) - -func increment(v *int) { - *v++ -} - -func main() { - v := 1 - increment(&v) - fmt.Println(v) // 2 -} -``` - -If we wanted to write `increment` in a way that it could affect the contents of its caller we would need to pass a reference, a pointer, to `main.v`.[1][3] This example demonstrates why `json.Unmarshal` needs a pointer to the value to decode JSON into. - -### Pointers to pointers - -Returning to the original question, both `result1` and `result2` are declared as `*Result`, that is, pointers to a `Result` value. We established that you have to pass the address of caller’s value to `json.Unmarshal` otherwise it won’t be able to alter the contents of the caller’s value. Why then must we pass the address of `result1`, a `**Result`, a pointer to a pointer to a `Result`, for the operation to succeed. - -To explain this another detour is required. Consider this code: - -``` -package main - -import ( - "encoding/json" - "fmt" -) - -type Result struct { - Foo *string `json:"foo"` -} - -func main() { - content := []byte(`{"foo": "bar"}`) - var result1 *Result - - err := json.Unmarshal(content, &result1) - fmt.Printf("%#v %v", result1, err) // &main.Result{Foo:(*string)(0xc0000102f0)} -} -``` - -In this example `Result` contains a pointer typed field, `Foo *string`. During JSON decoding `Unmarshal` allocated a new `string` value, stored the value `bar` in it, then placed the address of the string in `Result.Foo`. This behaviour is quite handy as it frees the caller from having to initialise `Result.Foo` and makes it easier to detect when a field was not initialised because the JSON did not contain a value. Beyond the convenience this offers for simple examples it would be prohibitively difficult for the caller to properly initialise all the reference type fields in a structure before decoding unknown JSON without first inspecting the incoming JSON which itself may be problematic if the input is coming from an `io.Reader` without the ability to rewind the input. - -> To unmarshal JSON into a pointer, Unmarshal first handles the case of the JSON being the JSON literal null. In that case, Unmarshal sets the pointer to nil. Otherwise, Unmarshal unmarshals the JSON into the value pointed at by the pointer. **If the pointer is nil, Unmarshal allocates a new value for it to point to**. - -`json.Unmarshal`‘s handling of pointer fields is clearly documented, and works as you would expect, allocating a new value whenever there is a need to decode into a pointer shaped field. It is this behaviour that gives us a hint to what is happening in the original example. - -We’ve seen that when `json.Unmarshal` encounters a field which points to `nil` it will allocate a new value of the correct type and assign its address the field before proceeding. Not only is does behaviour is applied recursively–for example in the case of a complex structure which contains pointers to other structures–but it also applies to the _value passed to `Unmarshal`._ - -``` -package main - -import ( - "encoding/json" - "fmt" -) - -func main() { - content := []byte(`1`) - var result *int - - err := json.Unmarshal(content, &result) - fmt.Println(*result, err) // 1 -} -``` - -In this example `result` is not a struct, but a simple `*int` which, lacking an initialiser, defaults to `nil`. After JSON decoding, `result` now points to an `int` with the value `1`. - -### Putting the pieces together - -Now I think I’m ready to take a shot at answering Fatih’s question. - -`json.Unmarshal` requires the address of the variable you want to decode into, otherwise it would decode into a temporary copy which would be discard on return. Normally this is done by declaring a value, then passing its address, or explicitly initialising the the value - -``` -var result1 Result -err := json.Unmarshal(content, &result1) // this is fine - -var result2 = new(Result) -err = json.Unmarshal(content, result2) // and this - -var result3 = &Result{} -err = json.Unmarshal(content, result3) // this is also fine -``` - -In all three cases the address that the `*Result` points too is not `nil`, it points to initialised memory that `json.Unmarshal` decodes into. - -Now consider what happens when `json.Unmarshal` encounters this - -``` -var result4 *Result -err = json.Unmarshal(content, result4) // err json: Unmarshal(nil *main.Result) -``` - -`result2`, `result3`, and the expression `&result1` point to a `Result`. However `result4`, even though it has the same type as the previous three, does not point to initialised memory, it points to `nil`. Thus, according to the examples we saw previously, before `json.Unmarshal` can decode into it, the memory `result4` points too must be initialised. - -However, because each function receives a copy of its arguments, the caller’s `result4` variable and the copy inside `json.Unmarshal` are unique. `json.Unmarshal` can allocate a new `Result` value and decode into it, but it cannot alter `result4` to point to this new value because it was not provided with a reference to `result4`, only a copy of its contents. - - 1. This does not violate the _everything is a copy_ rule, a copy of a pointer to `main.v` still points to `main.v`.[][4] - - - -#### Related posts: - - 1. [Should methods be declared on T or *T][5] - 2. [Ice cream makers and data races][6] - 3. [Understand Go pointers in less than 800 words or your money back][7] - 4. [Slices from the ground up][8] - - - --------------------------------------------------------------------------------- - -via: https://dave.cheney.net/2020/05/16/fatihs-question - -作者:[Dave Cheney][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://dave.cheney.net/author/davecheney -[b]: https://github.com/lujun9972 -[1]: https://twitter.com/fatih/status/1260683136842608640 -[2]: https://play.golang.org/p/g2yUIYrV67F -[3]: tmp.dRxkHxYRQS#easy-footnote-bottom-1-4153 (This does not violate the everything is a copy rule, a copy of a pointer to main.v still points to main.v.) -[4]: tmp.dRxkHxYRQS#easy-footnote-1-4153 -[5]: https://dave.cheney.net/2016/03/19/should-methods-be-declared-on-t-or-t (Should methods be declared on T or *T) -[6]: https://dave.cheney.net/2014/06/27/ice-cream-makers-and-data-races (Ice cream makers and data races) -[7]: https://dave.cheney.net/2017/04/26/understand-go-pointers-in-less-than-800-words-or-your-money-back (Understand Go pointers in less than 800 words or your money back) -[8]: https://dave.cheney.net/2018/07/12/slices-from-the-ground-up (Slices from the ground up) diff --git a/sources/tech/20200518 Using Fedora to implement REST API in JavaScript- part 2.md b/sources/tech/20200518 Using Fedora to implement REST API in JavaScript- part 2.md deleted file mode 100644 index b02822c4fa..0000000000 --- a/sources/tech/20200518 Using Fedora to implement REST API in JavaScript- part 2.md +++ /dev/null @@ -1,208 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Using Fedora to implement REST API in JavaScript: part 2) -[#]: via: (https://fedoramagazine.org/using-fedora-to-implement-rest-api-in-javascript-part-2/) -[#]: author: (Vaclav Keil https://fedoramagazine.org/author/vaclavk/) - -Using Fedora to implement REST API in JavaScript: part 2 -====== - -![][1] - -In [part 1][2] previously, you saw how to quickly create a simple API service using Fedora Workstation, Express, and JavaScript. This article shows you the simplicity of how to create a new API. This part shows you how to: - - * Install a DB server - * Build a new route - * Connect a new datasource - * Use Fedora terminal to send and receive data - - - -### Generating an app - -Please refer to the [previous article][2] for more details. But to make things simple, change to your work directory and generate an app skeleton. -``` - -``` - -$ cd our-work-directory -$ npx express-generator –no-view –git /myApp -$ cd myApp -$ npm i -``` - -``` - -### Installing a database server - -In this part, we’ll install MariaDB database. MariaDB is the Fedora default database. - -``` -$ dnf module list mariadb | sort -u ## lists the streams available -$ sudo dnf module install mariadb:10.3 ##10.4 is the latest -``` - -_Note: the default profile is mariadb/server_. - -For those who need to spin up a Docker container a ready made container with Fedora 31 is available. - -``` -$ docker pull registry.fedoraproject.org/f31/mariadb -$ docker run -d --name mariadb_database -e MYSQL_USER=user -e MYSQL_PASSWORD=pass -e MYSQL_DATABASE=db -p 3306:3306 registry.fedoraproject.org/f31/mariadb -``` - -Now start the MariaDB service. - -``` -$ sudo systemctl start mariadb -``` - -If you’d like the service to start at boot, you can also enable it in systemd: - -``` -$ sudo systemctl enable mariadb ## start at boot -``` - -Next, setup the database as needed: - -``` -$ mysql -u root -p ## root password is blank -MariaDB> CREATE DATABASE users; -MariaDB> create user dbuser identified by ‘123456‘; -MariaDB> grant select, insert, update, create, drop on users.* to dbuser; -MariaDB> show grants for dbuser; -MariaDB> \q -``` - -A database connector is needed to use the database with Node.js. - -``` -$ npm install mariadb ## installs MariaDB Node.js connector -``` - -We’ll leverage Sequelize in this sample API. Sequelize is a promise-based Node.js ORM (Object Relational Mapper) for Postgres, MySQL, MariaDB, SQLite and Microsoft SQL Server. - -``` -$ npm install sequelize ## installs Sequelize -``` - -### Connecting a new datasource - -Now, create a new _db_ folder and create a new file _sequelize.js_ there: - -``` -const Sequelize = require('sequelize'), - sequelize = new Sequelize(process.env.db_name || 'users', process.env.db_user || 'dbuser', process.env.db_pass || '123456', { - host: 'localhost', - dialect: 'mariadb', - ssl: true -}) - -module.exports = sequelize -``` - -_Note: For the sake of completeness I‘m including a link to the related Github repo: _ - -Let‘s create a new file _models/user.js_. A nice feature of a Sequelize model is that it helps us to create the necessary tables and colums automatically. The code snippet responsible for doing this is seen below: - -``` -sequelize.sync({ -force: false -}) -``` - -Note: never switch to true with a production database – it would _drop your tables at app start_! - -We will refer to the earlier created sequelize.js this way: - -``` -const sequelize = require('../db/sequelize') -``` - -### Building new routes - -Next, you’ll create a new file _routes/user.js_. You already have _routes/users.js_ from the previous article. You can copy and paste the code in and proceed with editing it. - -You’ll also need a reference to the previously created model. - -``` -const User = require('../models/user') -``` - -Change the route path to _/users_ and also create a new **post** method route. - -Mind the async – await keywords there. An interaction with a database will take some time and this one will do the trick. Yes, an async function returns a promise and this one makes promises easy to use. - -_Note: This code is not production ready, since it would also need to include an authentication feature._ - -We‘ll make the new route working this way: - -``` -const userRouter = require('./routes/user') -app.use(userRouter) -``` - -Let‘s also remove the existing _usersRouter_. The _routes/users.js_ can be deleted too. - -``` -$ npm start -``` - -With the above command, you can launch your new app. - -### Using the terminal to send and retrieve data - -Let’s create a new database record through the post method: - -``` -$ curl -d 'name=Adam' http://localhost:3000/users -``` - -To retrieve the data created through the API, do an HTTP GET request: - -``` -$ curl http://localhost:3000/users -``` - -The console output of the curl command is a JSON array containing data of all the records in the _Users_ table. - -_Note: This is not really the usual end result — an application consumes the API finally. The API will usually also have endpoints to update and remove data._ - -### More automation - -Let‘s assume we might want to create an API serving many tables. It‘s possible and very handy to automatically generate models for Sequelize from our database. Sequelize-auto will do the heavy lifting for us. The resulting files (_models.js_) would be placed and imported within the _/models_ directory. - -``` -$ npm install sequelize-auto -``` - -A node.js connector is needed to use this one and we have it already installed for MariaDB. - -### Conclusion - -It‘s possible to develop and run an API using Fedora, Fedora default MariaDB, JavaScript and efficiently develop a solution like with a noSQL database. For those used to working with MongoDB or a similar noSQL database, Fedora and MariaDB are important open-source enablers. - -* * * - -_Photo by [Mazhar Zandsalimi][3] on [Unsplash][4]._ - --------------------------------------------------------------------------------- - -via: https://fedoramagazine.org/using-fedora-to-implement-rest-api-in-javascript-part-2/ - -作者:[Vaclav Keil][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://fedoramagazine.org/author/vaclavk/ -[b]: https://github.com/lujun9972 -[1]: https://fedoramagazine.org/wp-content/uploads/2020/05/javascript-api-2-816x345.jpg -[2]: https://fedoramagazine.org/using-fedora-to-quickly-implement-rest-api-with-javascript/ -[3]: https://unsplash.com/@m47h4r?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText -[4]: https://unsplash.com/s/photos/javascript?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText diff --git a/sources/tech/20200519 How to use Windows Subsystem for Linux to open Linux on Windows 10 machines.md b/sources/tech/20200519 How to use Windows Subsystem for Linux to open Linux on Windows 10 machines.md deleted file mode 100644 index e610f7eb2f..0000000000 --- a/sources/tech/20200519 How to use Windows Subsystem for Linux to open Linux on Windows 10 machines.md +++ /dev/null @@ -1,153 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (How to use Windows Subsystem for Linux to open Linux on Windows 10 machines) -[#]: via: (https://www.networkworld.com/article/3543845/how-to-use-windows-subsystem-for-linux-to-open-linux-on-windows-10-machines.html) -[#]: author: (Sandra Henry-Stocker https://www.networkworld.com/author/Sandra-Henry_Stocker/) - -How to use Windows Subsystem for Linux to open Linux on Windows 10 machines -====== -Opening a Linux terminal on a Windows 10 desktop can help you practice your Linux skills and explore Windows from an entirely different point of view. In this post, we look at Ubuntu 18.04 running through Windows Subsystem for Linux (WSL). -[Nicolas Solerieu modified by IDG Comm. / Linux][1] [(CC0)][2] - -Believe it or not, it's possible to open a Linux terminal on a Windows 10 system and you might be surprised how much Linux functionality you’ll be able to get by doing so. - -You can run Linux commands, traipse around the provided Linux file system and even take a novel look at Windows files. The experience isn’t altogether different than opening a terminal window on a Linux desktop, with a few interesting exceptions. - -[[Get regularly scheduled insights by signing up for Network World newsletters.]][3] - -What is needed to make this happen is something called the Windows Subsystem for Linux (WSL) and a Windows 10 x86 PC. - -### Linux versions for WSL - -There are a number of options for running Linux on top of Windows. The Linux OS choices include: - - * [Ubuntu 16.04 LTS][4] - * [Ubuntu 18.04 LTS][5] - * [openSUSE Leap 15.1][6] - * [SUSE Linux Enterprise Server 12 SP5][7] - * [SUSE Linux Enterprise Server 15 SP1][8] - * [Kali Linux][9] - * [Debian GNU/Linux][10] - * [Fedora Remix for WSL][11] - * [Pengwin][12] - * [Pengwin Enterprise][13] - * [Alpine WSL][14] - - - -Ubuntu 18.04 LTS is just one option and, in this post, we’ll take a look at how the terminal runs on Windows using this particular distribution and how much it feels like working on a Linux system directly. - -If you want to look into the process of putting an Ubuntu distribution on your Windows system, you can start with this page: - - - -As part of the initial setup of installing your Linux on Windows terminal, you’ll be asked to create your user account. Once you do that and open the terminal, you can start to explore. One of the most noticeable differences between your Linux-on-Windows terminal and a terminal window on a Linux system is that examining processes isn’t going to show you much. After all, Windows will be providing the bulk of the required OS support. You’re likely to see something like this: - -``` -myacct@hostname:~$ ps -ef -UID PID PPID C STIME TTY TIME CMD -root 1 0 0 12:45 ? 00:00:00 /init -root 7 1 0 12:45 tty1 00:00:00 /init -shs 8 7 0 12:45 tty1 00:00:00 -bash -shs 166 8 0 13:32 tty1 00:00:00 ps -ef -``` - -Yes, that's it. - -If you’re anything like me, one of your next moves might be to get a handle on the available commands. If you just count the files in the **/bin** and **/usr/bin** directories, you should see that there are a lot of commands: - -``` -myacct@hostname:~$ ls /bin | wc -l -171 -myacct@hostname:~$ ls /usr/bin | wc -l -707 -``` - -You can list available commands with commands like these (output truncated for this post): - -``` -myacct@hostname:~$ ls /bin | head -25 | column -bash btrfs-map-logical bunzip2 bzegrep bzip2recover -btrfs btrfs-select-super busybox bzexe bzless -btrfs-debug-tree btrfs-zero-log bzcat bzfgrep bzmore -btrfs-find-root btrfsck bzcmp bzgrep cat -btrfs-image btrfstune bzdiff bzip2 chacl - -myacct@hostname:~$ ls /usr/bin | head -25 | column -NF aa-exec apport-cli apt apt-extracttempl* -VGAuthService acpi_listen apport-collect apt-add-repository apt-ftparchive -X11 add-apt-repository apport-unpack apt-cache apt-get -[ addpart appres apt-cdrom apt-key -aa-enabled apport-bug apropos apt-config apt-mark -``` - -You can update the system with **apt** commands (sudo apt update, sudo apt upgrade). You can even use Linux commands to move to the Windows disk partitions as you like and . Notice the last three entries in the output below. These represent several drives on the system. - -``` -myacct@hostname:~$ df -k -Filesystem 1K-blocks Used Available Use% Mounted on -rootfs 973067784 326920584 646147200 34% / -none 973067784 326920584 646147200 34% /dev -none 973067784 326920584 646147200 34% /run -none 973067784 326920584 646147200 34% /run/lock -none 973067784 326920584 646147200 34% /run/shm -none 973067784 326920584 646147200 34% /run/user -cgroup 973067784 326920584 646147200 34% /sys/fs/cgroup -C:\ 973067784 326920584 646147200 34% /mnt/c <== C drive -I:\ 976760000 231268208 745491792 24% /mnt/I <== external drive -L:\ 409599996 159240 409440756 1% /mnt/l <== USB thumb drive -``` - -If you’re interested in moving out of the Linux space and into the Windows portion of the file system within your **WSL** session, you can do that easily. Replace “myname” with your Windows account name and a **cd /mnt/c/Users/_myname_/Desktop** will take you to your Windows desktop. From there, don’t be surprised if in listing your files you see **WRL####.tmp** files that don’t seem to exist when you look at your desktop and don’t show up if you look at your files by opening a command prompt. These appear to be temporary files used by Windows for document management. You might also see files listed that look like **‘~$nux notes.docx’** – perhaps ghosts of files that were once located on your desktop. You won’t see those files when you look at your desktop on Windows – even using a **cmd** window. - -Note that you’ll also see Windows directories such as **‘Program Files’** in single quotes when listed in your Linux terminal as you would any file with blanks included in their names. You can even start a Windows executable from your Linux terminal. For example: - -``` -myacct@hostname: $ cd /mnt/c/WINDOWS/System32/WindowsPowerShell/v1.0 -myacct@hostname: $ powershell.exe -``` - -If you do this, type **exit** when you want to end the **powershell** session. - -Linux commands all seem to work as expected, though I don’t get any output when I run the **who** command. - -Windows **.txt** files will display with **cat** commands, but the last line in a file will likely be displayed on the same line as the following shell prompt. This is because these files won’t end with a linefeed as Linux text files do. - -You can create other accounts and switch user to them (e.g., **su – nemo**) if you like, but not log into them directly. - -You can also update the system with apt commands (**sudo apt update**, **sudo apt upgrade**). - -Join the Network World communities on [Facebook][15] and [LinkedIn][16] to comment on topics that are top of mind. - --------------------------------------------------------------------------------- - -via: https://www.networkworld.com/article/3543845/how-to-use-windows-subsystem-for-linux-to-open-linux-on-windows-10-machines.html - -作者:[Sandra Henry-Stocker][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://www.networkworld.com/author/Sandra-Henry_Stocker/ -[b]: https://github.com/lujun9972 -[1]: https://unsplash.com/photos/4gRNmhGzYZE -[2]: https://creativecommons.org/publicdomain/zero/1.0/ -[3]: https://www.networkworld.com/newsletters/signup.html -[4]: https://www.microsoft.com/store/apps/9pjn388hp8c9 -[5]: https://www.microsoft.com/store/apps/9N9TNGVNDL3Q -[6]: https://www.microsoft.com/store/apps/9NJFZK00FGKV -[7]: https://www.microsoft.com/store/apps/9MZ3D1TRP8T1 -[8]: https://www.microsoft.com/store/apps/9PN498VPMF3Z -[9]: https://www.microsoft.com/store/apps/9PKR34TNCV07 -[10]: https://www.microsoft.com/store/apps/9MSVKQC78PK6 -[11]: https://www.microsoft.com/store/apps/9n6gdm4k2hnc -[12]: https://www.microsoft.com/store/apps/9NV1GV1PXZ6P -[13]: https://www.microsoft.com/store/apps/9N8LP0X93VCP -[14]: https://www.microsoft.com/store/apps/9p804crf0395 -[15]: https://www.facebook.com/NetworkWorld/ -[16]: https://www.linkedin.com/company/network-world diff --git a/sources/tech/20200520 Fedora Silverblue, an introduction for developers.md b/sources/tech/20200520 Fedora Silverblue, an introduction for developers.md deleted file mode 100644 index a112f4ca6d..0000000000 --- a/sources/tech/20200520 Fedora Silverblue, an introduction for developers.md +++ /dev/null @@ -1,140 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Fedora Silverblue, an introduction for developers) -[#]: via: (https://fedoramagazine.org/fedora-silverblue-brings-future-tech-to-the-desktop/) -[#]: author: (Nick Hardiman https://fedoramagazine.org/author/nickhardiman/) - -Fedora Silverblue, an introduction for developers -====== - -![][1] - -The Fedora [Silverblue project][2] takes Fedora workstation, libostree and podman, puts them in a blender, and creates a new Immutable Fedora Workstation. Fedora Silverblue is an OS that stops you from changing the core system files arbitrarily, and readily allows you to change the environment system files. The article [What is Silverblue][3] describes the big picture, and this article drills down into details for the developer. - -Fedora Silverblue ties together a few different projects to make a system that is a git-like object, capable of layering packages, and has a container focused work flow. Silverblue is not the only distribution going down this road. It is the desktop equivalent of [CoreOS][4], the server OS used by [Red Hat Openshift][5]. - -Silverblue’s idea of ‘immutable’ has nothing to do with immutable layers in a container. Silverblue keeps system files immutable by making them read-only. - -### Why immutable? - -Has an upgrade left your system in an unusable state? Have you wondered why one server in a pool of identical machines is being weird? These problems can happen when one system library – one tiny little file out of hundreds – is corrupted, badly configured or the wrong version. Or maybe your upgrade works fine but it’s not what you’d hoped for, and you want to roll back to the previous state. - -An immutable OS is intended to stop problems like these biting you. This is not an easy thing to achieve – simple changes, like flipping the file system between read-write and read-only, may only change a fault-finding headache to a maintenance headache. - -Freezing the system is good news for sysadmins, but what about developers? Setting up a development environment means heavily customizing the system, and filling it with living code that changes over time. The answer is partly a case of combining components, and partly the ability to swap between OS versions. - -### How it works - -So how do you get the benefits of immutability without losing the ability to do your work? If you’re thinking ‘containers’, good guess – part of the solution uses [podman][6]. But much of the work happens underneath the container layer, at the OS level. - -Fedora Silverblue ties together a few different projects to turn an immutable OS into a usable workstation. Silverblue uses libostree to provide the base system, lets you edit config files in /etc/, and provides three different ways to install packages. - - * [rpm-ostree][7] installs RPM packages, similar to DNF in the traditional Fedora workstation. Use this for things that shouldn’t go in containers, like KVM/libvirt. - * [flatpak][8] installs packages from a central flathub repo. This is the one-stop shop for graphical desktop apps like LibreOffice. - * The traditional _dnf install_ still works, but only inside a [toolbox][9] (a Fedora container). A developer’s workbench goes in a toolbox. - - - -If you want to know more about these components, check out [Pieces of Silverblue][10]. - -### Rolling back and pinning upgrades - -All operating systems need upgrades. Features are added, security holes are plugged and bugs are squashed. But sometimes an upgrade is not a developer’s friend. - -A developer depends on many things to get the job done. A good development environment is stuffed with libraries, editors, toolchains and apps that are controlled by the OS, not the developer. An upgrade may cause trouble. Have any of these situations happened to you? - - * A new encryption library is too strict, and an upgrade stopped an API working. - * Code works well, but has deprecated syntax. An upgrade brought error-throwing misery. - * The development environment is lovingly hand-crafted. An upgrade broke dependencies and added conflicts. - - - -In a traditional environment, unpicking a troublesome upgrade is hard. In Silverblue, it’s easy. Silverblue keeps two copies of the OS – your current upgrade and your previous version. Point the OS at the previous version, reboot, and you’ve got your old system files back. - -You aren’t limited to two copies of your file system – you can keep more by pinning your favorite versions. Dusty Mabe, one of the engineers who has been working on the system since the [Project Atomic][11] days, describes how to pin extra copies of the OS in his article [Pinning Deployments in OSTree Based Systems][12]. - -Your home directory is not affected by rolling back. Rpm-ostree does not touch /etc/ and /var/. - -### System updates and package installs - -Silverblue’s rpm-ostree treats all the files as one object, stored in a repository. The working file system is a checked-out copy of this object. After a system update, you get two objects in that repository – one current object and one updated object. The updated object is checked out and becomes the new file system. - -You install your workhorse applications in toolboxes, which provide container isolation. And you install your desktop applications using Flatpak. - -This new OS requires a shift in approach. For instance, you don’t have to keep only one copy of your system files – you can store a few and select which one you use. That means you can swap back and forth between an old Fedora release and the rawhide (development) version in a matter of minutes. - -### Build your own Silverblue VM - -You can safely install Fedora Silverblue in a VM on your workstation. If you’ve got a hypervisor and half an hour to spare (10 minutes for ISO download, and 20 minutes for the build), you can see for yourself. - - 1. Download Fedora Silverblue ISO from - 2. (not Fedora workstation from ). - 3. Boot a VM with the Fedora Silverblue ISO. You can squeeze Fedora into compute resources of 1 CPU, 1024MiB of memory and 12GiB of storage, but bigger is better. - 4. Answer [Anaconda][13]’s questions. - 5. Wait for the [Gnome][14] desktop to appear. - 6. Answer [Initial Setup][15]’s questions. - - - -Then you’re ready to set up your developer’s tools. If you’re looking for an IDE, check these out. Use flatpak on the desktop to install them. - - * [Gnome Builder][16] (Gnome’s official IDE) - * [Eclipse][17] - * [Code::Blocks][18] - - - -Finally, use the CLI to create your first toolbox. Load it with modules using [npm][19], [gem][20], [pip][21], [git][22] or your other favorite tools. - -### Help! - -If you get stuck, ask questions at the [forum][23]. - -If you’re looking for ideas about how to use Silverblue, read articles in the [magazine][24]. - -### Is Silverblue for you? - -Silverblue is full of shiny new tech. That in itself is enough to attract the cool kids, like moths to a flame. But this OS is not for everyone. It’s a young system, so some bugs will still be lurking in there. And pioneering tech requires a change of habit – that’s extra cognitive load that the new user may not want to take on. - -The OS brings immutable benefits, like keeping your system files safe. It also brings some drawbacks, like the need to reboot after adding system packages. Silverblue also enables new ways of working. If you want to explore new directions in the OS, find out if Silverblue brings benefits to your work. - --------------------------------------------------------------------------------- - -via: https://fedoramagazine.org/fedora-silverblue-brings-future-tech-to-the-desktop/ - -作者:[Nick Hardiman][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://fedoramagazine.org/author/nickhardiman/ -[b]: https://github.com/lujun9972 -[1]: https://fedoramagazine.org/wp-content/uploads/2020/04/silverblue-introfordev-816x345.png -[2]: https://silverblue.fedoraproject.org/ -[3]: https://fedoramagazine.org/what-is-silverblue/ -[4]: http://coreos.com/ -[5]: https://www.openshift.com/products/container-platform -[6]: https://github.com/containers/libpod -[7]: https://rpm-ostree.readthedocs.io/en/latest/ -[8]: https://docs.flatpak.org/en/latest/ -[9]: https://github.com/containers/toolbox -[10]: https://fedoramagazine.org/pieces-of-fedora-silverblue/ -[11]: https://www.projectatomic.io/ -[12]: https://www.projectatomic.io/blog/2018/05/pinning-deployments-ostree-based-systems/ -[13]: https://fedoraproject.org/wiki/Anaconda -[14]: https://www.gnome.org/ -[15]: https://fedoraproject.org/wiki/InitialSetup -[16]: https://wiki.gnome.org/Apps/Builder -[17]: https://www.eclipse.org/ide/ -[18]: http://www.codeblocks.org/ -[19]: https://www.npmjs.com/package/package -[20]: https://rubygems.org/ -[21]: https://pypi.org/ -[22]: https://git-scm.com/ -[23]: https://discussion.fedoraproject.org/c/desktop/silverblue/6 -[24]: https://fedoramagazine.org/?s=silverblue diff --git a/sources/tech/20200521 Glico (Weighted Rock Paper Scissors).md b/sources/tech/20200521 Glico (Weighted Rock Paper Scissors).md deleted file mode 100644 index 77e3cfb5ed..0000000000 --- a/sources/tech/20200521 Glico (Weighted Rock Paper Scissors).md +++ /dev/null @@ -1,141 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Glico (Weighted Rock Paper Scissors)) -[#]: via: (https://theartofmachinery.com/2020/05/21/glico_weighted_rock_paper_scissors.html) -[#]: author: (Simon Arneaud https://theartofmachinery.com) - -Glico (Weighted Rock Paper Scissors) -====== - -This still isn’t the blog post I said I was going to write about now, but I figured some game theory would make a good post at the moment, especially when a lot of people I know are working at home with kids who need entertaining. Here’s some stuff about a traditional Japanese kids’ game called Glico, a form of weighted Rock Paper Scissors (RPS). - -### Glico - -I’ll assume you’re familiar with regular RPS. It’s pretty obvious how to play well: the three plays, “rock”, “paper” and “scissors”, are equally strong, so the only trick is to play them unpredictably enough. - -But what happens if the three plays have different values? Weighted RPS, under the name “Glico”, has been a well-known Japanese children’s game since at least before WWII, but let me explain an English adaptation. Traditionally it’s played starting at the bottom of a flight of stairs, and the aim is to get to the top first. Players can climb up steps by winning rounds of RPS. The trick is that the number of steps depends on the winning hand in each round. A player who wins with “rock” gets to climb up four steps by spelling out R-O-C-K, and similarly “paper” is worth five steps and “scissors” worth eight. This simple twist to the game creates whole new layers of offence and defence as players struggle to win with “scissors” as much as possible, without being too predictable and vulnerable. - -(The rules for the Japanese version vary by region, but usually “rock” is worth 3 steps, while “paper” and “scissors” are worth 6. The mnemonic is that “rock”, “paper” and “scissors” are referred to as グー, パー and チョキ respectively, and the words spelled out when playing are グリコ (“Glico”, a food/confectionary brand), パイナップル (pineapple) and チョコレート (chocolate).) - -Just a few notes before getting into the maths: The game works best with two players, but in the traditional rules for three or more players, each round is handled by having multiple rematches. Each time there’s a clear winning hand (e.g., two players with “paper” beating one with “rock”) the losers are eliminated until there’s one winner. That can take a long time, so cycling systematically between pairs of players might be faster for several players. (I’ll assume two players from now on.) Also, older kids sometimes add an extra challenge by requiring an exact landing at the top of the stairs to win. For example, if you’re five steps from the top, only “paper” will win; “scissors” will overshoot by three steps, and you’ll end up three steps back down from the top. Be warned: that makes gameplay a lot harder. - -### Calculating the optimal strategy - -Simple strategies like “just play rock” are what game theorists call “pure strategies”. By design, no pure strategy in RPS is better than all others, and an adaptive opponent can quickly learn to exploit any pure strategy (e.g., by always playing “paper” against someone who always plays “rock”). Any decent player will play RPS with something like a “mixed strategy” (selecting from the pure strategies at random, maybe with different probabilities). Game theory tells us that finite, two-player, zero-sum games always have optimal mixed strategies — i.e., a mixed strategy that’s as good or better than any other, even against an adaptive opponent. You might do better by exploiting a weak opponent, but you can’t do better against a perfect one. In plain RPS, the statistically unbeatable strategy is to play each hand with equal probability (\frac{1}{3}). - -Glico is made up of multiple rounds of weighted RPS. A truly optimal player won’t just use one set of probabilities (p_{r}), (p_{p}) and (p_{s}) for playing “rock”, “paper” and “scissors” each round. The optimal probabilities will vary depending the position of both players on the stairs. For example, a player who is four steps from winning is either happy with any winning hand, or only wants “rock”, depending on the rules, and (theoretically) both players should recognise that and adapt their probabilities accordingly. However, it’s more practical to play with an optimal greedy strategy — i.e., assuming everyone is just trying to get the maximum step value each round. - -I’ll calculate an optimal greedy strategy for weighted RPS in two ways. One way is longer but uses nothing but high school algebra and logical thinking, while the other way uses the power of linear programming. - -#### The longer way - -The greedy version of Glico has no end goal; the players are just trying to win points. It helps with solving the game if we make it zero sum — any time you win (N) points, your opponent loses (N) points, and vice versa. That just scales and shifts the score per round, so it doesn’t change the optimal strategy. Why do it? We know that optimal players can’t get any advantage over each other because the game is symmetric. If the game is zero sum, that means that no strategy can have an expected value of more than 0 points. That lets us write some equations. For example, playing “rock” might win you 4 points against “scissors”, or lose you 5 against “paper”. Against an optimal opponent, we can say - -[4p_{s} - 5p_{p} \leq 0] - -Is the inequality necessary? When would a pure strategy have a negative value against a non-adaptive but optimal player? Imagine if we added a fourth pure strategy, “bomb”, that simply gave 1000 points to the opponent. Obviously no optimal player would ever play “bomb”, so (p_{b} = 0). Playing “bomb” against an optimal player would have expected value -1000. We can say that some pure strategies are just _bad_: they have suboptimal value against an optimal opponent, and an optimal player will never play them. Other pure strategies have optimal value against an optimal opponent, and they’re reasonable to include in an optimal strategy. - -Bad pure strategies aren’t always as obvious as “bomb”, but we can argue that none of the pure strategies in RPS are bad. “Rock” is the only way to beat “scissors”, and “paper” is the only way to beat “rock”, and “scissors” is the only way to beat “paper”. At least one must be in the optimal strategy, so we can expect them all to be. So let’s make that (\leq) into (=), and add the equations for playing “paper” and “scissors”, plus the fact that these are probabilities that add up to 1: - -[\begin{matrix} {4p_{s} - 5p_{p}} & {= 0} \ {5p_{r} - 8p_{s}} & {= 0} \ {8p_{p} - 4p_{r}} & {= 0} \ {p_{r} + p_{p} + p_{s}} & {= 1} \ \end{matrix}] - -That’s a system of linear equations that can be solved algorithmically using Gaussian elimination — either by hand or by using any good numerical algorithms software. I won’t go into the details, but here’s the solution: - -[\begin{matrix} p_{r} & {= 0.4706} \ p_{p} & {= 0.2353} \ p_{s} & {= 0.2941} \ \end{matrix}] - -Even though it’s worth the least, an optimal player will play “rock” almost half the time to counterattack “scissors”. The rest of the time is split between “paper” and “scissors”, with a slight bias towards “scissors”. - -#### The powerful way - -The previous solution needed special-case analysis: it exploited the symmetry of the game, and made some guesses about how good/bad the pure strategies are. What about games that are more complex, or maybe not even symmetric (say, because one player has a handicap)? There’s a more general solution using what’s called linear programming (which dates to when “programming” just meant “scheduling” or “planning”). - -By the way, linear programming (LP) has a funny place in computer science. There are some industries and academic circles where LP and generalisations like mixed integer programming are super hot. Then there are computer science textbooks that never even mention them, so there are industries where the whole topic is pretty much unheard of. It might be because it wasn’t even known for a long time if LP problems can be solved in polynomial time (they can), so LP doesn’t have the same theoretical elegance as, say, shortest path finding, even if it has a lot of practical use. - -Anyway, solving weighted RPS with LP is pretty straightforward. We just need to describe the game using a bunch of linear inequalities in multiple variables, and express strategic value as a linear function that can be optimised. That’s very similar to what was done before, but this time we won’t try to guess at the values of any strategies. We’ll just assume we’re choosing values (p_{r}), (p_{p}) and (p_{s}) to play against an opponent who scores an average (v) against us each round. The opponent is smart enough to choose a strategy that’s as least as good as any pure strategy, so we can say - -[\begin{matrix} {4p_{s} - 5p_{p}} & {\leq v} \ {5p_{r} - 8p_{s}} & {\leq v} \ {8p_{p} - 4p_{r}} & {\leq v} \ \end{matrix}] - -The opponent can only play some combination of “rock”, “paper” and “scissors”, so (v) can’t be strictly greater than all of them — at least one of the inequalities above must be tight. To model the gameplay fully, the only other constraints we need are the rules of probability: - -[\begin{matrix} {p_{r} + p_{p} + p_{s}} & {= 1} \ p_{r} & {\geq 0} \ p_{p} & {\geq 0} \ p_{s} & {\geq 0} \ \end{matrix}] - -Now we’ve modelled the problem, we just need to express what needs to be optimised. That’s actually dead simple: we just want to minimise (v), the average score the opponent can win from us. An LP solver can find a set of values for all variables that minimises (v) within the constraints, and we can read off the optimal strategy directly. - -I’ve tried a few tools, and the [Julia][1] library [JuMP][2] has my current favourite FOSS API for throwaway optimisation problems. Here’s some code: - -``` -# You might need Pkg.add("JuMP"); Pkg.add("GLPK") -using JuMP -using GLPK - -game = Model(GLPK.Optimizer) - -@variable(game, 0 <= pr <= 1) -@variable(game, 0 <= pp <= 1) -@variable(game, 0 <= ps <= 1) -@variable(game, v) - -@constraint(game, ptotal, pr + pp + ps == 1) -@constraint(game, rock, 4*ps - 5*pp <= v) -@constraint(game, paper, 5*pr - 8*ps <= v) -@constraint(game, scissors, 8*pp - 4*pr <= v) - -@objective(game, Min, v) - -println(game) -optimize!(game) - -println("Opponent's value: ", value(v)) -println("Rock: ", value(pr)) -println("Paper: ", value(pp)) -println("Scissors: ", value(ps)) -``` - -Here’s the output: - -``` -Min v -Subject to - ptotal : pr + pp + ps = 1.0 - rock : 4 ps - 5 pp - v ≤ 0.0 - paper : 5 pr - 8 ps - v ≤ 0.0 - scissors : 8 pp - 4 pr - v ≤ 0.0 - pr ≥ 0.0 - pp ≥ 0.0 - ps ≥ 0.0 - pr ≤ 1.0 - pp ≤ 1.0 - ps ≤ 1.0 - -Opponent's value: 0.0 -Rock: 0.47058823529411764 -Paper: 0.23529411764705882 -Scissors: 0.29411764705882354 -``` - -As argued in the previous solution, the best value the opponent can get against the optimal player is 0. - -### What does optimality mean? - -The optimal solution was calculated assuming an all-powerful opponent. It guarantees that even the best weighted RPS player can’t get an advantage over you, but it turns out you can’t get an advantage over a terrible player, either, if you insist on playing this “optimal” strategy. That’s because weighted RPS has no bad plays, in the sense that “bomb” is bad. _Any_ strategy played against the above “optimal” strategy will have expected value of 0, so it’s really a defensive, or “safe” strategy. To play truly optimally and win against a bad player, you’ll have to adapt your strategy. For example, if your opponent plays “scissors” too often and “paper” not enough, you should adapt by playing “rock” more often. Of course, your opponent might just be pretending to be weak, and could start taking advantage of your deviation from the safe strategy. - -Games don’t always work out like that. For example, in theory, you could derive an optimal safe strategy for more complex games like poker. Such a strategy would tend to win against normal humans because even the best normal humans make bad poker plays. On the other hand, a “shark” at the table might be able to win against the “fish” faster by exploiting their weaknesses more aggressively. If you’re thinking of using LP to directly calculate a strategy for Texas Hold’em, though, sorry, but you’ll hit a combinatorial explosion of pure strategies as you account for all the cases like “if I’m dealt AJ on the big blind and I call a four-blind raise from the button preflop and then the flop is a rainbow 3K9…”. Only heavily simplified toy poker games are solvable with the general approach. - --------------------------------------------------------------------------------- - -via: https://theartofmachinery.com/2020/05/21/glico_weighted_rock_paper_scissors.html - -作者:[Simon Arneaud][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://theartofmachinery.com -[b]: https://github.com/lujun9972 -[1]: https://julialang.org/ -[2]: https://github.com/JuliaOpt/JuMP.jl diff --git a/sources/tech/20200524 Diamond interface composition in Go 1.14.md b/sources/tech/20200524 Diamond interface composition in Go 1.14.md deleted file mode 100644 index 611bb2c39e..0000000000 --- a/sources/tech/20200524 Diamond interface composition in Go 1.14.md +++ /dev/null @@ -1,124 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Diamond interface composition in Go 1.14) -[#]: via: (https://dave.cheney.net/2020/05/24/diamond-interface-composition-in-go-1-14) -[#]: author: (Dave Cheney https://dave.cheney.net/author/davecheney) - -Diamond interface composition in Go 1.14 -====== - -Per the [overlapping interfaces proposal][1], Go 1.14 now permits embedding of interfaces with overlapping method sets. This is a brief post explain what this change means: - -Let’s start with the definition of the three key interfaces from the `io` package; `io.Reader`, `io.Writer`, and `io.Closer`: - -``` -package io - -type Reader interface { - Read([]byte) (int, error) -} - -type Writer interface { - Write([]byte) (int, error) -} - -type Closer interface { - Close() error -} -``` - -Just as embedding a type inside a struct allows the embedded type’s fields and methods to be accessed as if it were declared on the embedding type[1][2], the process is true for interfaces. Thus there is no difference between explicitly declaring - -``` -type ReadCloser interface { - Read([]byte) (int, error) - Close() error -} -``` - -and using embedding to compose the interface - -``` -type ReadCloser interface { - Reader - Closer -} -``` - -You can even mix and match - -``` -type WriteCloser interface { - Write([]byte) (int, error) - Closer -} -``` - -However, prior to Go 1.14, if you continued to compose interface declarations in this manner you would likely find that something like this, - -``` -type ReadWriteCloser interface { - ReadCloser - WriterCloser -} -``` - -would fail to compile - -``` -% go build interfaces.go -command-line-arguments -./interfaces.go:27:2: duplicate method Close -``` - -Fortunately, with Go 1.14 this is no longer a limitation, thus solving problems that typically occur with diamond-shaped embedding graphs. - -However, there is a catch that I ran into attempting to demonstrate this feature to the local user group–this feature is only enabled when the Go compiler uses the 1.14 (or later) spec. - -As near as I can make out the rules for which version of the Go spec is used during compilation appear to be: - - 1. If your source code is stored inside `GOPATH` (or you have _disabled_ modules with `GO111MODULE=off`) then the version of the Go spec used to compile with matches the version of the compiler you are using. Said another way, if you have Go 1.13 installed, your Go version is 1.13. If you have Go 1.14 installed, your version is 1.14. No surprises here. - 2. If your source code is stored outside `GOPATH` (or you have forced modules on with `GO111MODULE=on`) then the `go` tool will take the Go version from the `go.mod` file. - 3. If there is no Go version listed in `go.mod` then the version of the spec will be the version of Go installed. This is identical to point 1. - 4. If you are in module mode, either by being outside `GOPATH` or with `GO111MODULE=on`, but there is no `go.mod` file in the current, or any parent, directory then the version of the Go spec used to compile your code defaults to Go 1.13. - - - -The last point caught me out. - - 1. It is said that embedding promotes the type’s fields and methods.[][3] - - - -### Related posts: - - 1. [Struct composition with Go][4] - 2. [term: low level serial with a high level interface][5] - 3. [Accidental method value][6] - 4. [How does the go build command work ?][7] - - - --------------------------------------------------------------------------------- - -via: https://dave.cheney.net/2020/05/24/diamond-interface-composition-in-go-1-14 - -作者:[Dave Cheney][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://dave.cheney.net/author/davecheney -[b]: https://github.com/lujun9972 -[1]: https://github.com/golang/proposal/blob/master/design/6977-overlapping-interfaces.md -[2]: tmp.nUQHg5BP9T#easy-footnote-bottom-1-4179 (It is said that embedding promotes the type’s fields and methods.) -[3]: tmp.nUQHg5BP9T#easy-footnote-1-4179 -[4]: https://dave.cheney.net/2015/05/22/struct-composition-with-go (Struct composition with Go) -[5]: https://dave.cheney.net/2014/05/08/term-low-level-serial-with-a-high-level-interface (term: low level serial with a high level interface) -[6]: https://dave.cheney.net/2014/05/19/accidental-method-value (Accidental method value) -[7]: https://dave.cheney.net/2013/10/15/how-does-the-go-build-command-work (How does the go build command work ?) diff --git a/sources/tech/20200525 CopyQ Clipboard Manager for Keeping a Track of Clipboard History.md b/sources/tech/20200525 CopyQ Clipboard Manager for Keeping a Track of Clipboard History.md deleted file mode 100644 index 616ee5971a..0000000000 --- a/sources/tech/20200525 CopyQ Clipboard Manager for Keeping a Track of Clipboard History.md +++ /dev/null @@ -1,113 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (CopyQ Clipboard Manager for Keeping a Track of Clipboard History) -[#]: via: (https://itsfoss.com/copyq-clipboard-manager/) -[#]: author: (Abhishek Prakash https://itsfoss.com/author/abhishek/) - -CopyQ Clipboard Manager for Keeping a Track of Clipboard History -====== - -How do you copy-paste text? Let me guess. You either use the right click menu to copy-paste or use Ctrl+C to copy a text and Ctrl+V to paste the text. The text copied this way is saved to ‘clipboard’. The [clipboard][1] is a special location in the memory of your system that stores cut or copied text (and in some cases images). - -But have you ever been in a situation where you had a text copied and then you copy another text and then realize you needed the text you copied earlier? Trust me, it happens a lot. - -Instead of wondering about finding the previous text to copy again, you can use a clipboard manager. - -A clipboard manager is a handy little tool that keeps a history of the text you had copied. If you need to use the earlier copied text, you can use the clipboard manager to copy it again. - -![Clipboard][2] - -There are several clipboard managers available for Linux. In this article, I’ll cover one such tool that goes by the name CopyQ. - -### CopyQ Clipboard Manager - -[CopyQ][3] is nifty clipboard manager that has plenty of features to manage your system’s clipboard. It is an open source software available for free for major Linux distributions. - -Like any other clipboard manager, CopyQ monitors the system clipboard and saves its content. It can save both text and images from the clipboard. - -CopyQ sits in the system tray and you can easily access it from there. From the system tray, just click on the text that you want. It will automatically copy this text and you would notice that the copied text moves on to the top of the saved clipboards. - -![][4] - -In the system tray, it shows only the five recent clips. You can open the main window using the “Show/hide main window” option in the system tray. CopyQ saves up to 200 clips. You may edit the clipboard items here. - -![][5] - -You may also set a keyboard shortcut to bring the clipboard with a few key combination. This option is available in Preferences->Shortcuts. - -![][6] - -If you decide to use it, I advise enabling the autostart so that CopyQ runs automatically when you start your system. By default, it saves 200 items in the history and that’s a lot in my opinion. You may want to change that as well. - -![][7] - -CopyQ is an advanced clipboard manager with plenty of additional features. You can search for text in the saved clipboard items. You can sort, create, edit or change the order of the clipboard items. - -You can ignore clipboard copied from some windows or containing some text. You can also temporarily disable clipboard saving. CopyQ also supports [Vim][8]-like editor and shortcut for Vim fans. - -There are many more features that you may explore on your own. For me, the most notable feature is that it gives me easy access to older copied text, and I am happy with that. - -### Installing CopyQ on Linux - -CopyQ is available for Linux, Windows and macOS. You can get the executable file for Windows and macOS [from its website][3]. - -For Linux, CopyQ is available in the repositories of all major Linux distributions. Which means that you can find it in your software center or install it using your distribution’s package manager. - -Ubuntu users may find it in the software center if [universe repository is enabled][9]. - -![CopyQ in Ubuntu Software Center][10] - -Alternatively, you can use the apt command to install it: - -``` -sudo apt install copyq -``` - -Ubuntu users also have the option to [use the official PPA][11] and always get the latest stable CopyQ version. For example, at the time of writing this article, CopyQ version in Ubuntu 20.04 is 3.10 while [PPA has newer version][12] 3.11. It’s your choice really. - -``` -sudo add-apt-repository ppa:hluk/copyq -sudo apt update -sudo apt install copyq -``` - -You may also want to know [how to remove PPA][13] later. - -### Do you use a clipboard manager? - -I find it surprising that many people are not even aware of an essential utility like clipboard manager. For me, it’s one of the [essential productivity tools on Linux][14]. - -As I mentioned at the beginning of the article, there are several clipboard managers available for Linux. CopyQ is one of such tools. Do you use or know of some other similar clipboard tool? Why not let us know in the comments? - -If you started using CopyQ after reading this article, do share your experience with it. What you liked and what you didn’t like? The comment section is all yours. - --------------------------------------------------------------------------------- - -via: https://itsfoss.com/copyq-clipboard-manager/ - -作者:[Abhishek Prakash][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://itsfoss.com/author/abhishek/ -[b]: https://github.com/lujun9972 -[1]: https://www.computerhope.com/jargon/c/clipboar.htm -[2]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/05/clipboard.png?ssl=1 -[3]: https://hluk.github.io/CopyQ/ -[4]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/05/copyq-system-tray.png?ssl=1 -[5]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/05/copyq-main-window.png?ssl=1 -[6]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/05/copyq-shortcuts.png?ssl=1 -[7]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/05/copyq-auto-start.png?ssl=1 -[8]: https://itsfoss.com/vim-8-release-install/ -[9]: https://itsfoss.com/ubuntu-repositories/ -[10]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/05/copyq-software-center.png?resize=800%2C474&ssl=1 -[11]: https://itsfoss.com/ppa-guide/ -[12]: https://launchpad.net/~hluk/+archive/ubuntu/copyq -[13]: https://itsfoss.com/how-to-remove-or-delete-ppas-quick-tip/ -[14]: https://itsfoss.com/productivity-tips-ubuntu/ diff --git a/sources/tech/20200525 Debian-s Decision to Drop Old Drivers has Upset Vintage Hardware Users.md b/sources/tech/20200525 Debian-s Decision to Drop Old Drivers has Upset Vintage Hardware Users.md deleted file mode 100644 index fb2b9005ea..0000000000 --- a/sources/tech/20200525 Debian-s Decision to Drop Old Drivers has Upset Vintage Hardware Users.md +++ /dev/null @@ -1,85 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Debian’s Decision to Drop Old Drivers has Upset Vintage Hardware Users) -[#]: via: (https://itsfoss.com/debian-dropping-old-drivers/) -[#]: author: (Ankush Das https://itsfoss.com/author/ankush/) - -Debian’s Decision to Drop Old Drivers has Upset Vintage Hardware Users -====== - -It is always a tough decision to drop support for older hardware for the latest Linux distribution releases. Just like [Ubuntu decided to drop support for 32-bit systems][1], Debian’s X Strike Force (XFS) team decided to drop a list of input and video drivers. - -### Debian is considering to drop support for really old hardware - -![][2] - -In case you didn’t know, the XFS team is responsible for maintaining packages the [X Window System][3] in [Debian][4]. And, the list of drivers that [they want to remove][5] are: - - * xserver-xorg-input-aiptek - * xserver-xorg-input-elographics - * xserver-xorg-input-mtrack - * xserver-xorg-input-mutouch - * xserver-xorg-input-void - * server-xorg-video-ast - * xserver-xorg-video-mach64 - - - * xserver-xorg-video-neomagic - * xserver-xorg-video-r128 - * xserver-xorg-video-savage - * xserver-xorg-video-siliconmotion - * xserver-xorg-video-sisusb - * xserver-xorg-video-tdfx - * xserver-xorg-video-trident - - - -So, Mach 64, [ATI Rage R128][6], Savage, Silicon Motion, SiS, Trident, and NeoMagic are some of the graphics chipsets that would be affected. The reason (as stated by them) to drop these drivers is: - -> They are either unmaintained upstream or provide no value to the distribution. - -Now, that could make sense, if the packages are no longer maintained. But, upstream some of these X.org drivers are still **maintained** even if there are no frequent updates to them. For instance, in 2018, a [new display driver update was released for the ATI RAGE 128][7], as reported by Phoronix. - -### Vintage hardware owners are going to be upset - -Obviously, the vintage hardware users aren’t quite happy with the decision because a handful of people still own (or actively use) old hardware i.e. around 20 years older. - -From the original list of drivers mentioned in the [bug report][5], **Geode display driver** was initially decided to be removed but wasn’t dropped. - -It was also reported that the “**xserver-xorg-video-r128**” driver is required for older Apple hardware (iMac). And, a user reported about the missing video driver on his iMac. - -For most of the users, this decision may not actually affect any “production” systems because I don’t think anyone is probably going to utilize 20-year old hardware for commercial purposes. - -The hobbyists and collectors who like to preserve older tech are surely going to be impacted by this decision. - -### Wrapping Up - -In my opinion, dropping the support for incredibly dated hardware is not entirely a bad move. - -But, if there is a demand for the support of vintage hardware, the fair share of users who want the drivers to be added in Debian should help maintain those packages. If not, I don’t think it won’t be a wise choice to have an unmaintained piece of code in Debian. - -What do you think about this? Feel free to share your thoughts in the comments below! - --------------------------------------------------------------------------------- - -via: https://itsfoss.com/debian-dropping-old-drivers/ - -作者:[Ankush Das][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://itsfoss.com/author/ankush/ -[b]: https://github.com/lujun9972 -[1]: https://itsfoss.com/ubuntu-drops-32-bit-desktop/ -[2]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/04/debian-bug-report-driver-drop.jpg?ssl=1 -[3]: https://en.wikipedia.org/wiki/X_Window_System -[4]: https://www.debian.org/ -[5]: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=955603 -[6]: https://en.wikipedia.org/wiki/ATI_Rage_series -[7]: https://www.phoronix.com/scan.php?page=news_item&px=ATI-RAGE-128-DDX-6.11.0 diff --git a/sources/tech/20200525 EU Parliament Strongly Recommends Developing and Using Open Source Software.md b/sources/tech/20200525 EU Parliament Strongly Recommends Developing and Using Open Source Software.md deleted file mode 100644 index bfeb5635ce..0000000000 --- a/sources/tech/20200525 EU Parliament Strongly Recommends Developing and Using Open Source Software.md +++ /dev/null @@ -1,84 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (EU Parliament Strongly Recommends Developing and Using Open Source Software) -[#]: via: (https://itsfoss.com/eu-parliament-recommends-open-source/) -[#]: author: (Ankush Das https://itsfoss.com/author/ankush/) - -EU Parliament Strongly Recommends Developing and Using Open Source Software -====== - -Europe is choosing open source more than ever. Not just limited to [EU Commissions’ decision to use Signal messaging app][1] but also [open science][2] and the [adoption of open source software by European universities][3]. - -Now, in a recent [press release][4] by the [European Pirate Party][5], it looks like the EU Parliament is urging EU institutions to use open-source software. All thanks to the Pirate amendments for encouraging the use of open-source software. - -The EU Parliament not just encourages the use of open-source software, but they have also advised to prioritize development of open-source software by the EU institutions. - -So, not just aiming to adopt using open-source software but to develop open-source software. And, that’s definitely good news! - -More use of open-source software, why not? To give you some more details, here’s what they mentioned in the press release: - -> **In practice, from now on, all IT solutions developed by and for the EU institutions will first need to be assessed against the possibility of using Open Source solutions. Assessments will then have to be reported back to the Budgetary Control Committee of the Parliament on an annual basis, during the discharge procedure. This is a strong call for enhancing our important citizens right to transparent and trustworthy information.** - -### Important decision to remove vendor lock-ins - -![Public Money Public Code Campaign][6] - -No matter who made this happen — this decision of preferring open-source software over proprietary will not just help the open-source community but also helps the EU institutions in a variety of ways. - -Especially, relying on open-source software removes the overhead of vendor lock-ins. In other words, an EU institution does not have to rely on vendor to manage/maintain the software. - -The press release also addressed this by mentioning: - -> It is essential for the European institutions to retain control over its own technical systems, especially in a context of disinformation and foreign interference. Open Source promotes local technical support, leads to rapid development of software and helps to avoid dependency on specific suppliers or vendor lock-in effects, which exist when only one company is in charge of software or even the entire IT infrastructure supply. - -Any responsible local organization can take up the task while the community can still help in any way it can. This could also reduce the cost of maintaining the software among other things like improving the security of a software in a collaborative manner. - -### Is this a big win for open-source community? - -![][7] - -Yes, and no. We’ve seen a lot of recommendations made by the governments (or the EU government in general) to choose open-source software to keep things more secure yet transparent. - -Pirate’s Vice-President of EU Parliament, **Marcel Kolaja**, mentions some advantages of this decision as well: - -_It’s a milestone for transparent and open digitization of the European institutions. From now on, the Open Source ecosystem has a stepping ground for offering Open Source solutions and the Pirates will gladly play the role of the guardians and will try to solve and highlight any attempt to bypass this strong recommendation. It’s a really important step to remove vendor lock-ins in the Parliament“_ - -So, this will definitely help them earn trust of their citizens by providing digital transparency while also encouraging public participation to improve the software as well. Of course, this will also help introduce the concept of open-source software to many who were unaware of it in some way. - -Also, ensuring open-source software for publicly financed software will enhance the meaning of freedom of speech/privacy/press. - -In a nutshell, these decisions do have a positive impact in one way or the other. - -But, the implementations of these decisions will decide how effective it’s going to be to put the words in action. - -### Wrapping Up - -I’m happy with the decision by EU Parliament here — even though I’m not a European. I guess, this should encourage other government bodies to take similar decisions or steps to ensure digital transparency while earning the trust of their citizens. - -To get more details on the decision, you can refer to the [official press release by the European Pirate Party][4]. - -What do you think about it? Let me know your thoughts in the comments below! - --------------------------------------------------------------------------------- - -via: https://itsfoss.com/eu-parliament-recommends-open-source/ - -作者:[Ankush Das][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://itsfoss.com/author/ankush/ -[b]: https://github.com/lujun9972 -[1]: https://itsfoss.com/eu-commission-switches-to-signal/ -[2]: https://ec.europa.eu/research/openscience/index.cfm?pg=openaccess -[3]: https://opensource.com/article/20/5/open-source-higher-education -[4]: https://european-pirateparty.eu/european-parliament-strongly-recommends-any-software-developed-by-and-for-the-eu-institutions-to-be-made-publicly-available-under-free-and-open-source-software-licence/ -[5]: https://en.wikipedia.org/wiki/European_Pirate_Party -[6]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/05/public-money-public-code.png?resize=800%2C420&ssl=1 -[7]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/05/eu-parliament-open-source.jpg?ssl=1 diff --git a/sources/tech/20200525 Encrypt Your Files Before Uploading it to Cloud With Cryptomator.md b/sources/tech/20200525 Encrypt Your Files Before Uploading it to Cloud With Cryptomator.md deleted file mode 100644 index eda3a2990e..0000000000 --- a/sources/tech/20200525 Encrypt Your Files Before Uploading it to Cloud With Cryptomator.md +++ /dev/null @@ -1,184 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Encrypt Your Files Before Uploading it to Cloud With Cryptomator) -[#]: via: (https://itsfoss.com/cryptomator/) -[#]: author: (Ankush Das https://itsfoss.com/author/ankush/) - -Encrypt Your Files Before Uploading it to Cloud With Cryptomator -====== - -_**Open source software highlight of this week is Cryptomator. It is a unique free and open-source encryption software that lets you encrypt your data before uploading it to the cloud.**_ - -There are several [cloud services available for Linux][1] and almost all of them do not offer [end to end encryption][2], at least not by default. - -Usually, the connection between your device and the server is secure. But your data stored on the server is not encrypted. Employees with direct access to the infrastructure at your cloud service providers may access this data. - -Of course, these companies have strict policies against such intrusion but a rogue employee can do a lot of damage. Remember the incident when a [departing Twitter employee deactivated the account of US President Donald Trump][3]. - -If you are one of the privacy cautious people, you would want the ease of cloud storage but with the added security layer of encrypted storage. - -Now some [services like pCloud do provide end to end encryption][4] but that comes at an additional cost. If you could afford that, well and good. If not, you can use a free and open source tool like [Cryptomator][5]. - -Cryptomator helps you secure your data by encrypting it before uploading it to any cloud storage services. In this article, I’m going to highlight the key features of Cryptomator along with instructions to use it. - -### Cryptomator: Add an encryption layer to your cloud data - -![][6] - -Cryptomator is a solution to encrypt your data locally before uploading it to the cloud. - -With this, you can create vaults locally and sync them to the cloud storage services you use. - -It’s very easy to use and you don’t need to have any specific technical knowledge to encrypt your data – that’s what Cryptomator is tailored for. - -### Features of Cryptomator - -Cryptomator is a simple encryption tool with the essential features. Here’s what it offers: - - * [AES][7] and 256-bit Encryption for files. - * Ability to create a vault and sync it with the cloud storage service - * Optional recovery key for your master password of the vault - * Cross-platform support (Linux, Windows, macOS, Android, and iOS) - * Supports the dark theme for a one-time license fee. - * Supports [WebDAV][8], [FUSE][9], and [Dokany][10] for easy integration with your operating system. - - - -Do note that the [Android][11] and [iOS][12] apps are paid apps that you have to purchase separately while the desktop program is completely free to use. Also, you need to purchase a one-time license to unlock the dark mode. Don’t blame them please. They need to make some money in order to develop this open source software. - -### Installing Cryptomator on Linux - -Cryptomater provides an AppImage file that you can download to get started on any Linux distribution. - -You can get it from its [official download page][13]. In case you don’t know, please read [how to use an AppImage file][14] to get started. - -[Download Cryptomator][5] - -### How To Use Cryptomator? - -Attention! - -Encryption is a double-edged sword. It can protect you and it can hurt you as well. -If you are encrypting your data and you forgot your encryption key, you’ll lose access to that data forever. -Cryptomator provides a recovery key option so please be careful with both password and the recovery key. Don’t forget it or lose the recovery key. - -Once you have installed Cryptomator, it’s really easy to use it following the user interface or the [official documentation][15]. - -But, to save you some time, I’ll highlight a few important things that you should know: - -#### Setup Your Vault - -![][16] - -After launching Cryptomator, you need to create the vault where you want to have your encrypted data. - -This can be an existing location or a new custom directory as per your requirements. - -Now that you proceed creating a new vault, you will also observe that you can open an existing vault as well (if you had one already). So, always have a backup of your vault, just in case. - -![][17] - -Here, I am assuming that you are a new user. So, obviously, proceed to create a new vault and give it a name: - -![][18] - -Next, you need to specify a storage location. If you already use OneDrive, Dropbox, Google Drive, or something similar, it might detect it automatically. - -![][19] - -However, if it doesn’t, like in my case (I use [pCloud][20]), you can select the cloud-synced directory or any other custom location manually. - -Once you select the location, you just need to create a password for it. It’s best to create a strong password that you can remember. - -![][21] - -Also, I’d suggest you to opt for the recovery key and store it in a separate USB drive or just print it on a paper. - -![][22] - -And, that’s it. You’re done creating your secure vault that you can sync with the cloud. - -![][23] - -Now, how do you add files to it? Let’s take a look: - -#### Adding Files To A Vault - -_**Note:** You can’t just go into the folder that you created from the file manager and files there. Follow the steps below to add files properly in your encrypted vault._ - -Once you’ve created your vault, you just need to unlock it by typing the password as shown in the image below. If you’re on your personal computer, you can choose to save the password without needing to enter it every time you access the vault. However, I advise not to do that. Manually entering the password help in remembering it. - -![][24] - -Next, after unlocking the vault, you just need to click on “**Reveal Vault**” or reveal drive to open it using **File Manager** where you can access/modify or add files to it. - -#### Backup / Recover Your Vault - -You should simply copy-paste the folder you create to another USB drive or somewhere else other than your cloud storage folder to ensure that you have a backup of your vault. - -![][25] - -It’s important to have the **masterkey.cryptomator** file of the vault in order to open it. - -#### Upgrades, Preferences & Settings - -Note - -You should enable the auto-updates feature to ensure that you will have the most stable and error-free version automatically. - -Apart from the most important functions of the Cryptomator app, you will get a couple of other features to tweak, such as: - - * Change the type of your virtual drive - * Tweak the vault to read-only mode - - - -You can explore the **Vault options** and the settings on Cryptomator to know about what else you can do. - -**Wrapping Up** - -Now that you know about Cryptomator, you can easily encrypt your important data locally before uploading them to the cloud. - -What do you think about Cryptomator? Let us know your thoughts in the comments down below! - --------------------------------------------------------------------------------- - -via: https://itsfoss.com/cryptomator/ - -作者:[Ankush Das][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://itsfoss.com/author/ankush/ -[b]: https://github.com/lujun9972 -[1]: https://itsfoss.com/cloud-services-linux/ -[2]: https://en.wikipedia.org/wiki/End-to-end_encryption -[3]: https://www.theverge.com/2017/11/2/16600732/donald-trump-twitter-account-gone-realdonaldtrump -[4]: https://partner.pcloud.com/r/22317 -[5]: https://cryptomator.org/ -[6]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/04/cryptomator-ft.jpg?ssl=1 -[7]: https://en.wikipedia.org/wiki/Advanced_Encryption_Standard -[8]: https://en.wikipedia.org/wiki/WebDAV -[9]: https://en.wikipedia.org/wiki/Filesystem_in_Userspace -[10]: https://en.wikipedia.org/wiki/Dokan_Library -[11]: https://play.google.com/store/apps/details?id=org.cryptomator&hl=en_US -[12]: https://apps.apple.com/us/app/cryptomator/id953086535 -[13]: https://cryptomator.org/downloads/ -[14]: https://itsfoss.com/use-appimage-linux/ -[15]: https://docs.cryptomator.org -[16]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/04/cryptomator-add-vault.jpg?ssl=1 -[17]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/04/cryptomator-create-open-vault.jpg?ssl=1 -[18]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/04/cryptomator-add-vault-name.jpg?ssl=1 -[19]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/04/cryptomator-vault-location.jpg?ssl=1 -[20]: https://itsfoss.com/recommends/pcloud/ -[21]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/04/cryptomator-pass.jpg?ssl=1 -[22]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/04/cryptomator-recovery.jpg?ssl=1 -[23]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/04/cryptomator-vault-success.jpg?ssl=1 -[24]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/04/cryptomator-unlock.jpg?ssl=1 -[25]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/04/cryptomator-master.jpg?ssl=1 diff --git a/sources/tech/20200525 How to Assign Static IP Address on Ubuntu Linux.md b/sources/tech/20200525 How to Assign Static IP Address on Ubuntu Linux.md deleted file mode 100644 index 87ddb6b839..0000000000 --- a/sources/tech/20200525 How to Assign Static IP Address on Ubuntu Linux.md +++ /dev/null @@ -1,179 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (How to Assign Static IP Address on Ubuntu Linux) -[#]: via: (https://itsfoss.com/static-ip-ubuntu/) -[#]: author: (Dimitrios Savvopoulos https://itsfoss.com/author/dimitrios/) - -How to Assign Static IP Address on Ubuntu Linux -====== - -_**Brief: In this tutorial, you’ll learn how to assign static IP address on Ubuntu and other Linux distributions. Both command line and GUI methods have been discussed.**_ - -IP addresses on Linux Systems in most cases are assigned by [Dynamic Host Configuration Protocol][1] (DHCP) servers. IP addresses assigned this way are dynamic which means that the IP address might change when you [restart your Ubuntu system][2]. It’s not necessary but it may happen. - -_**Dynamic IP is not an issue for normal desktop Linux users in most cases**_. It could become an issue if you have employed some special kind of networking between your computers. - -For example, you can [share your keyboard and mouse between Ubuntu and Raspberry Pi][3]. The configuration uses IP addresses of both system. If the IP address changes dynamically, then your setup won’t work. - -Another use case is with servers or remotely administered desktops. It is easier to set static addresses on those systems for connection stability and consistency between the users and applications. - -In this tutorial, I’ll show you how to set up static IP address on Ubuntu based Linux distributions. Let me show you the command line way first and then I’ll show the graphical way of doing it on desktop. - -### Method 1: Assign static IP in Ubuntu using command line - -![][4] - -**Note for desktop users**: Use static IP only when you need it. Automatic IP saves you a lot of headache in handling network configuration. - -#### Step 1: Get the name of network interface and the default gateway - -The first thing you need to know is the name of the network interface for which you have to set up the static IP. - -You can either use ip command or the network manager CLI like this: - -``` -nmcli d -``` - -In my case, it shows my Ethernet (wired) network is called enp0s25: - -``` -Ubuntu> nmcli d -DEVICE TYPE STATE CONNECTION -enp0s25 ethernet unmanaged -- -lo loopback unmanaged -- -``` - -Next, you should note the [default gateway IP using the Linux command][5] **ip route**: - -``` -ip route -default via 192.168.31.1 dev enp0s25 proto dhcp metric 600 -169.254.0.0/16 dev enp0s25 scope link metric 1000 -192.168.31.0/24 dev enp0s25 proto kernel scope link src 192.168.31.36 metric 600 -``` - -As you can guess, the default gateway is 192.168.31.1 for me. - -#### Step 2: Locate Netplan configuration - -Ubuntu 18.04 LTS and later versions use [Netplan][6] for managing the network configuration. Netplan configuration are driven by .yaml files located in **/etc/netplan** directory. - -By default, you should see a .yaml file named something like 01-network-manager-all.yaml, 50-cloud-init.yaml, 01-netcfg.yaml. - -Whatever maybe the name, its content should look like this: - -``` -# Let NetworkManager manage all devices on this system -network: - version: 2 - renderer: NetworkManager -``` - -You need to edit this file for using static IP. - -#### Step 3: Edit Netplan configuration for assigning static IP - -_**Just for the sake of it, make a backup of your yaml file.**_ - -Please make sure to use the correct yaml file name in the commands from here onward. - -Use nano editor with sudo to open the yaml file like this: - -``` -sudo nano /etc/netplan/01-netcfg.yaml -``` - -Please note that _**yaml files use spaces for indentation**_. If you use tab or incorrect indention, your changes won’t be saved. - -You should edit the file and make it look like this by providing the actual details of your IP address, gateway, interface name etc. - -``` -network: - version: 2 - renderer: networkd - ethernets: - enp0s25: - dhcp4: no - addresses: - - 192.168.31.16/24 - gateway4: 192.168.31.1 - nameservers: - addresses: [8.8.8.8, 1.1.1.1] -``` - -In the above file, I have set the static IP to 192.168.31.16. - -Save the file and apply the changes with this command: - -``` -sudo netplan apply -``` - -You can verify it by [displaying your ip address in the terminal][7] with ‘ip a’ command. - -Revert the changes and go back to dynamic IP - -If you don’t want to use the static IP address anymore, you can revert easily. - -If you have backed up the original yaml file, you can delete the new one and use the backup one. - -Otherwise, you can change the yaml file again and make it look like this: - -``` -network: - version: 2 - renderer: networkd - ethernets: - enp0s25: - dhcp4: yes -``` - -### Method 2: Switch to static IP address in Ubuntu graphically - -If you are on desktop, using the graphical method is easier and faster. - -Go to the settings and look for network settings. Click the gear symbol adjacent to your network connection. - -![][8] - -Next, you should go to the IPv4 tab. Under the IPv4 Method section, click on Manual. - -In the Addresses section, enter the IP static IP address you want, netmask is usually 24 and you already know your gateway IP with the ip route command. - -You may also change the DNS server if you want. You can keep Routes section to Automatic. - -![][9] - -Once everything is done, click on Apply button. See, how easy it is to set a static IP address graphically. - -If you haven’t read my previous article on [how to change MAC Address][10], you may want to read in conjunction with this one. - -More networking related articles will be rolling out, let me know your thoughts at the comments below and stay connected to our social media. - --------------------------------------------------------------------------------- - -via: https://itsfoss.com/static-ip-ubuntu/ - -作者:[Dimitrios Savvopoulos][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://itsfoss.com/author/dimitrios/ -[b]: https://github.com/lujun9972 -[1]: https://en.wikipedia.org/wiki/Dynamic_Host_Configuration_Protocol -[2]: https://itsfoss.com/schedule-shutdown-ubuntu/ -[3]: https://itsfoss.com/keyboard-mouse-sharing-between-computers/ -[4]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/05/static-ip-ubuntu.jpg?ssl=1 -[5]: https://linuxhandbook.com/find-gateway-linux/ -[6]: https://netplan.io/ -[7]: https://itsfoss.com/check-ip-address-ubuntu/ -[8]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/05/assign-static-ip-1.jpg?ssl=1 -[9]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/05/assign-static-ip-2.jpg?ssl=1 -[10]: https://itsfoss.com/change-mac-address-linux/ diff --git a/sources/tech/20200525 How to Compress PDF in Linux -GUI - Terminal.md b/sources/tech/20200525 How to Compress PDF in Linux -GUI - Terminal.md deleted file mode 100644 index eba596bcb9..0000000000 --- a/sources/tech/20200525 How to Compress PDF in Linux -GUI - Terminal.md +++ /dev/null @@ -1,99 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (How to Compress PDF in Linux [GUI & Terminal]) -[#]: via: (https://itsfoss.com/compress-pdf-linux/) -[#]: author: (Abhishek Prakash https://itsfoss.com/author/abhishek/) - -How to Compress PDF in Linux [GUI & Terminal] -====== - -_**Brief: Learn how to reduce the size of a PDF file in Linux. Both command line and GUI methods have been discussed.**_ - -I was filling some application form and it asked to upload the necessary documents in PDF format. Not a big issue. I gathered all the [scanned images and combined them in one PDF using gscan2pdf tool][1]. - -The problem came when I tried to upload this PDF file. The upload failed because it exceeded the maximum file size limit. This only meant that I needed to somehow reduce the size of the PDF file. - -Now, you may use an online PDF compressing website but I don’t trust them. A file with important documents uploading to an unknown server is not a good idea. You could never be sure that they don’t keep a copy your uploaded PDF document. - -This is the reason why I prefer compressing PDF files on my system rather than uploading it to some random server. - -In this quick tutorial, I’ll show you how to reduce the size of PDF files in Linux. I’ll show both command line and GUI methods. - -### Method 1: Reduce PDF file size in Linux command line - -![][2] - -You can use [Ghostscript][3] command line tool for compressing a PDF file. Most Linux distributions include the open source version of Ghostscript already. However, you can still try to install it just to make sure. - -On Debian/Ubuntu based distributions, use the following command to install Ghostscript: - -``` -sudo apt install ghostscript -``` - -Now that you have made sure that Ghostscript is installed, you can use the following command to reduce the size of your PDF file: - -``` -gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/prepress -dNOPAUSE -dQUIET -dBATCH -sOutputFile=compressed_PDF_file.pdf input_PDF_file.pdf -``` - -In the above command, you should add the correct path of the input and out PDF file. - -The command looks scary and confusing. I advise copying and pasting most of it. What you need to know is the dPDFSETTINGS parameter. This is what determines the compression level and thus the quality of your compressed PDF file. - -dPDFSETTINGS | Description ----|--- -/prepress (default) | Higher quality output (300 dpi) but bigger size -/ebook | Medium quality output (150 dpi) with moderate output file size -/screen | Lower quality output (72 dpi) but smallest possible output file size - -Do keep in mind that some PDF files may not be compressed a lot or at all. Applying compression on some PDF files may even produce a file bigger than the original. There is not much you can do in such cases. - -### Method 2: Compress PDF files in Linux using GUI tool - -I understand that not everyone is comfortable with command line tool. The [PDF editors in Linux][4] doesn’t help much with compression. This is why we at It’s FOSS worked on creating a GUI version of the Ghostscript command that you saw above. - -[Panos][5] from It’s FOSS team [worked on creating a Python-Qt based GUI wrapper for the Ghostscript][6]. The tool gives you a simple UI where you can select your input file, select a compression level and click on the compress button to compress the PDF file. - -![][7] - -The compressed PDF file is saved in the same folder as the original PDF file. Your original PDF file remains untouched. The compressed file is renamed by appending -compressed to the original file name. - -If you are not satisfied with the compression, you can choose another compression level and compress the file again. - -You may find the source code of the PDF Compressor on our GitHub repository. To let you easily use the tool, we have packaged it in AppImage format. Please [refer to this guide to know how to use AppImage][8]. - -[Download PDF Compressor (AppImage)][9] - -Please keep in mind that the tool is in early stages of developments. You may experience some issues. If you do, please let us know in the comments or even better, [file a bug here][10]. - -We’ll try to add more packages (Snap, Deb, PPAs etc) in the future releases. If you have experience with the development and packaging, please feel free to give us a hand. - -Would you like It’s FOSS team to work on creating more such small desktop tools in future? Your feedback and suggestions are welcome. - --------------------------------------------------------------------------------- - -via: https://itsfoss.com/compress-pdf-linux/ - -作者:[Abhishek Prakash][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://itsfoss.com/author/abhishek/ -[b]: https://github.com/lujun9972 -[1]: https://itsfoss.com/convert-multiple-images-pdf-ubuntu-1304/ -[2]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/05/compress-pdf-linux.jpg?ssl=1 -[3]: https://www.ghostscript.com/ -[4]: https://itsfoss.com/pdf-editors-linux/ -[5]: https://github.com/libreazer -[6]: https://github.com/itsfoss/compress-pdf -[7]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/05/compress-PDF.jpg?fit=800%2C448&ssl=1 -[8]: https://itsfoss.com/use-appimage-linux/ -[9]: https://github.com/itsfoss/compress-pdf/releases/download/0.1/compress-pdf-v0.1-x86_64.AppImage -[10]: https://github.com/itsfoss/compress-pdf/issues diff --git a/sources/tech/20200525 How to Install Linux Mint in VirtualBox -Screenshot Tutorial.md b/sources/tech/20200525 How to Install Linux Mint in VirtualBox -Screenshot Tutorial.md deleted file mode 100644 index 1fc324e817..0000000000 --- a/sources/tech/20200525 How to Install Linux Mint in VirtualBox -Screenshot Tutorial.md +++ /dev/null @@ -1,194 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (How to Install Linux Mint in VirtualBox [Screenshot Tutorial]) -[#]: via: (https://itsfoss.com/install-linux-mint-in-virtualbox/) -[#]: author: (Dimitrios Savvopoulos https://itsfoss.com/author/dimitrios/) - -How to Install Linux Mint in VirtualBox [Screenshot Tutorial] -====== - -_**Brief: One of safest and easiest ways to try Linux Mint is inside a virtual machine. Your real system doesn’t change at all. Learn how to install Linux Mint in VirtualBox in this tutorial.**_ - -[Linux Mint][1] is considered one of the [best distributions for new Linux users][2]. Its flagship Cinnamon DE is one of the most popular desktop environment giving your system a look and feel of classic Window-styled desktop. - -If you want to try Linux Mint and see if it fits your need, you could try installing it in a virtual machine. This way, you run Linux Mint inside your current system without changing your system’s partition or boot order. One of the safest way out there as you get to run Linux like a regular desktop application inside your current operating system. - -![][3] - -Oracle’s open source virtualization tool [VirtualBox][4] is available for free on all major desktop operating systems i.e. Windows, Linux and macOS. - -In this beginner’s tutorial, I’ll show you the steps for installing Linux Mint in VirtualBox. I am including the screenshots for each step so that you can easily follow the tutorial. - -### Installing Linux Mint in VirtualBox - -You can follow the steps on any operating system be it Windows, Linux or macOS. You just need to install VirtualBox on your operating system and rest of the steps remain the same. - -**Step 1:** [Download VirtualBox from its website][4] and install it by double-clicking on the downloaded file. - -![][5] - -Next, install the latest version of Linux Mint’s ISO file from its website. - -[Download Linux Mint ISO][6] - -**Step 2:** Once your virtual Box is up & running we are ready to get started. Click the New button, click Next on the virtual machine wizard. - -![Create a new Virtual Machine][7] - -Initially you need to specify the following: - - * Name: Any preferred name for your VM like Linux Mint - * Type: Linux - * Version: Ubuntu (64 bit) as Linux Mint is an Ubuntu-based distribution - - - -Before configuring any hardware resource value, please make sure that are aware of the [system requirements][8]. - -2 GB RAM would be okay but won’t give you a good experience. 3 GB is a comfortable amount if your system has 8 GB of RAM. I choose to set my Virtual Machine to 4096 MB (4 GB) because my system has plenty of RAM. - -RAM consumption - -One of the common confusion is regarding the RAM consumption. Let’s say your Windows system has 8 GB of RAM and you assign 3 GB of RAM to Linux Mint in VirtualBox. - -If you are running Linux Mint inside VirtualBox, your real system (called host system) will have 5 GB of RAM available for consumption. - -If you are not running Linux Mint inside VirtualBox, at that moment, the entire 8 GB will be available to the host system. - -**Step 3:** Next, choose a Virtual Hard disk now option and click create. - -Choose the virtual storage allocation method (Recommended Dynamically allocated). Set your storage location for virtual hard disk by browsing drive and then specify the size of virtual hard disk (it could be anything from 12-20 GB). - -![Dynamic allocation can save you space if you don’t need the maximum allowance][9] - -**Step (4 (optional advanced settings):** Once Virtual machine has been created, click on the settings button in menu: - -![][10] - -Now, go to the Display section. Specify the Video memory (128 MB) and check “Enable 3D Acceleration”. - -![Don’t forget to enable the 3D Acceleration][11] - -Then click on System Tab → Processor and choose how many threads would you like to allocate. - -My system is a 4 core/4 thread system and I choose to assign half of the CPU capability i.e. 2 threads. - -![Select CPU cores as per the distribution requirements][12] - -Once you have configured everything click ok. - -**Step 5:** In the System settings, go to Storage (from the left sidebar). Click on the [Optical Drive] Empty as shown in the image below. - -You’ll be asked to browse to the Linux Mint ISO file you had downloaded earlier. - -![][13] - -Once you select your ISO, click on the start button and that’s it! Now the ISO will start running as if you are booting from a live USB. - -Next, you need to press enter whilst your option is start Linux Mint as per the picture below. - -![][14] - -**Step 6:** Let’s start the installation procedure. - -Choose the language you want for your Linux Mint virtual machine. - -![Choose your native language][15] - -I’m based in the UK, so I have a UK keyboard layout. You can choose the one you want. - -![Choose your keyboard layout according to your hardware configuration][16] - -You may check the box to download and install any third-party software during the installation. - -![You may install media codecs while installing Linux Mint][17] - -You can proceed to erase the disk and install Linux Mint. - -Erase disk? Really? - -This step may seem scary because you may think that it will harm your real system. - -Let me assure you that it won’t do any damage to your actual disk. Remember you created 10-20 GB of virtual disk in step 3? Now you are inside that disk. - -When it asks for erasing the disk, it is erasing the virtual disk created for it. It doesn’t impact your real system disk and its data. - -![It is safe to erase your disk only at a Virtual Machine level][18] - -Next, select your time zone and click continue. You may [change time zone in Linux][19] later as well. - -![][20] - -You will be prompted to create your user account, your host name (computer’s name) and to choose a password. Once done, click continue to finalize the installation. - -![][21] - -Please wait a few minutes for the process to complete. - -![Wait a few minutes for the process to finish][22] - -The installation has now finished. Click on “Restart now”. - -![Well done! You have successfully installed Linux Mint][23] - -When you reach this step, Linux Mint will be installed and ready to use! - -![][24] - -You don’t have an installation medium so just power off the virtual machine. - -![][25] - -Now to use your virtual machine, click on the start button. - -![][26] - -You can explore a fully functional system, and at this time if you shut down Linux Mint like it was physically installed, it will automatically power off the virtual machine. - -![][27] - -Enjoy Linux Mint in VirtualBox. I hope you were able to install Linux Mint in VirtualBox. If you face any issues, please let me know in the comment section. I’ll try to help you out. - --------------------------------------------------------------------------------- - -via: https://itsfoss.com/install-linux-mint-in-virtualbox/ - -作者:[Dimitrios Savvopoulos][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://itsfoss.com/author/dimitrios/ -[b]: https://github.com/lujun9972 -[1]: https://www.linuxmint.com/ -[2]: https://itsfoss.com/best-linux-beginners/ -[3]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/05/install-linux-mint-in-virtualbox.png?ssl=1 -[4]: https://www.virtualbox.org/ -[5]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/05/download-virtulabox.jpg?ssl=1 -[6]: https://www.linuxmint.com/download.php -[7]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/04/1.-Create-new.jpg?ssl=1 -[8]: https://blog.linuxmint.com/?p=3832 -[9]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/04/2.-Create-virtual-hard-disk.jpg?resize=800%2C472&ssl=1 -[10]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/04/3.-settings.jpg?resize=800%2C470&ssl=1 -[11]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/04/4.-display.jpg?resize=800%2C472&ssl=1 -[12]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/04/5.-cpu.jpg?resize=800%2C468&ssl=1 -[13]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/04/6.-choose-iso.jpg?resize=800%2C472&ssl=1 -[14]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/04/7.-boot.jpg?resize=800%2C459&ssl=1 -[15]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/04/8.-choose-language.png?resize=800%2C679&ssl=1 -[16]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/04/9.-English-UK.png?resize=800%2C679&ssl=1 -[17]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/04/10.-install-third-party-software.png?resize=800%2C679&ssl=1 -[18]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/04/11.-installation-type.png?resize=800%2C679&ssl=1 -[19]: https://itsfoss.com/change-timezone-ubuntu/ -[20]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/04/12.-timezone.png?resize=800%2C679&ssl=1 -[21]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/04/13.-user-account.png?resize=800%2C679&ssl=1 -[22]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/04/14.-installation-screen.png?resize=800%2C679&ssl=1 -[23]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/04/15.-installation-finish.png?resize=800%2C679&ssl=1 -[24]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/04/16.-remove-the-media.png?resize=800%2C679&ssl=1 -[25]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/04/17.-power-off.png?resize=800%2C678&ssl=1 -[26]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/04/18.-init-the-fresh-installed-mint.png?resize=800%2C476&ssl=1 -[27]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/04/19.-Linux-mint-19.3-final.png?resize=800%2C469&ssl=1 diff --git a/sources/tech/20200525 LanguageTool Review- Free and Open Source Grammar Checker.md b/sources/tech/20200525 LanguageTool Review- Free and Open Source Grammar Checker.md deleted file mode 100644 index afd1a08e49..0000000000 --- a/sources/tech/20200525 LanguageTool Review- Free and Open Source Grammar Checker.md +++ /dev/null @@ -1,155 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (LanguageTool Review: Free and Open Source Grammar Checker) -[#]: via: (https://itsfoss.com/languagetool-review/) -[#]: author: (Abhishek Prakash https://itsfoss.com/author/abhishek/) - -LanguageTool Review: Free and Open Source Grammar Checker -====== - -This week’s open source software highlight is [LanguageTool][1]. It is a proofreading software that checks the grammar, style and spelling in more than 20 languages. - -I have been using it for past several days and I feel confident enough to review it and share my experience with it. I have used the popular proofreading tool [Grammarly][2] in the past and I’ll make some comparison between these two tools. - -### LanguageTool: Open source proofreading software - -![][3] - -[LanguageTool][1] grammar checker is available in [multiple formats][4]: - - * You can copy-paste your text on its website. - * You can install browser extension that will check for errors as you type anything, anywhere in the web browser. - * You can install a Java-based desktop application for offline usage. - * You can install add-on for LibreOffice and MS Office. - * Add-ons are also [available for a number of other software][5] like Sublime Text, Thunderbird, Vim, Visual Studio Code etc. - * [Android app][6] is also available. - * API is also available if you want to use LanguageTool in your software or service. API offering comes under premium services. - - - -You can find source code of LanguageTool and its related assets on [their GitHub repository][7]. - -[LanguageTool also has a premium version][8] that you can purchase. The premium version offers additional error checks. - -I am using LanguageTool premium version as a browser extension. Almost all the writing I do is online and thus the browser extension is perfect for me. - -The most convenient way to try LanguageTool is by using its browser extension. Install the browser add-on and next time you type anything in the browser, LanguageTool will start checking your text for grammatical and spelling errors. It will also check for styling errors. - -### Experience with LanguageTool: How good is it? - -LanguageTool leaves a good first impression. It starts checking for errors as you start typing. - -Different types of errors have different color codes. Spelling mistakes are highlighted in red color, grammatical mistakes are in yellow colors and styling errors have a blueish shade. - -Clicking on the error suggestion replaces your text with the suggested one. You may also ignore the suggestion. You’ll also see number of issues identified by LanguageTool in the current text check. - -![Spelling mistake identified by LanguageTool][9] - -#### Personal dictionary - -You can also create your personal directory and add words in it. This is helpful because no proofreading tool can give a green light to technical terms like systemd, iptables and brand names like [WireGuard][10]. To avoid these words labeled as spelling mistakes, add them to your personal dictionary. - -You may edit your personal dictionary from your LanguageTool account. - -![LanguageTool Personal Dictionary][11] - -#### Details on the error suggestion - -If it finds grammatical errors, it also gives a quick explanation of the error. You can get more details by clicking the tool tip which takes you to a reputable external source. - -![You can get additional details on the errors][12] - -#### Synonym suggestion (in beta) - -If you double-click on a word, it will also suggest synonyms. - -![][13] - -#### Are there any privacy issues? - -If you use the online services of LanguageTool, your text is sent to their servers over an **encrypted** connection. All their servers are hosted at Hetzner Online GmbH in Germany. - -LanguageTool states that it doesn’t store any text that you check using its services. You can read their privacy policy [here][14]. - -The free to use languagetool.org website shows ads (there are no third-party ads in the browser add-on). To test their claim of “sending text over an encrypted server”, I typed sample text containing words like vacuum cleaner, laptop etc. - -Thankfully, the displayed ad on their website was nothing related to the text I typed. I haven’t noticed any vacuum cleaner ads on the websites I visit or on Facebook. That’s a good thing. - -#### It doesn’t work flawlessly all the time - -No software is perfect and LanguageTool is not an exception. While it is helpful in finding obvious spelling and grammatical mistakes, it struggles in some simple scenario. - -For example, if a sentence contains several blank spaces together, LanguageTool failed to find an issue with that. - -![Too many whitespaces and yet it went undetected][15] - -This is weird because if I look at their ‘error rules’, I can see a [whitespace repetition rule][16]. I think this rule is applicable only for the Java-based LanguageTool apps, not the browser add-on I am using. - -I also found some other cases where LanguageTool should have identified errors but it didn’t. For example, it didn’t alert for the missing ‘to’ in the text below: - -![LanguageTool fails to find the missing “to”][17] - -When I checked it against the [Grammarly free version][2], it was able to point it out. - -![Grammarly was quick to identify it][18] - -I also found an infinite loop of suggestion. It first suggests using syntaxes as plural of syntax. - -![Suggestion for using ‘syntaxes’][19] - -And then it doesn’t accept ‘syntaxes’ as a valid word. - -![And then it doesn’t accept ‘syntaxes’][20] - -I have seen such “infinite error loop” with Grammarly as well in the past, so I won’t be too hard on LanguageTool for such issues. - -### Conclusion - -Despite some hiccups, I am satisfied with LanguageTool proofreading tool. Both free and premium version are good enough for finding obvious spelling mistakes and grammatical errors. - -The premium version offers over 2500 additional error checks and it costs around $15-$70 per year depending on your geographical region. This is a lot cheaper than [Grammarly][2] which costs $140 per year. - -I opted for the premium version because it will help this open-source project. Premium users also get email support. - -You are not forced to go premium, of course. You can use the free version and if you have some questions or need support, there is a [community forum][21] that you can join for free. - -LanguageTool can certainly be considered one of the [essential open-source tools for writers][22]. I am going to continue using LanguageTool. If you find grammatical or spelling mistakes in It’s FOSS articles in the future, blame LanguageTool, not me. Just kidding :) - --------------------------------------------------------------------------------- - -via: https://itsfoss.com/languagetool-review/ - -作者:[Abhishek Prakash][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://itsfoss.com/author/abhishek/ -[b]: https://github.com/lujun9972 -[1]: https://languagetool.org/ -[2]: https://itsfoss.com/recommends/grammarly/ -[3]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/05/languagetool.png?fit=800%2C593&ssl=1 -[4]: https://languagetool.org/compare -[5]: http://wiki.languagetool.org/software-that-supports-languagetool-as-a-plug-in-or-add-on -[6]: https://play.google.com/store/apps/details?id=org.softcatala.corrector -[7]: https://github.com/languagetool-org/ -[8]: https://languagetoolplus.com/ -[9]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/05/langaugetool-error-detection.png?ssl=1 -[10]: https://itsfoss.com/wireguard/ -[11]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/05/languagetool-personal-dictionary.png?ssl=1 -[12]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/05/languagetool-error-explanation.png?ssl=1 -[13]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/05/languagetool-synonym-suggestion.png?ssl=1 -[14]: https://languagetoolplus.com/legal/privacy -[15]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/05/languagetool-whitespaces.png?ssl=1 -[16]: https://community.languagetool.org/rule/show/WHITESPACE_RULE?lang=en -[17]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/05/languagetool-suggestion-3.jpg?fit=800%2C219&ssl=1 -[18]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/05/languagetool-suggestion-grammarly.jpg?fit=800%2C272&ssl=1 -[19]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/05/languagetool-suggestion.png?ssl=1 -[20]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/05/languagetool-suggestion-1.png?ssl=1 -[21]: https://forum.languagetool.org/ -[22]: https://itsfoss.com/open-source-tools-writers/ diff --git a/sources/tech/20200525 Using ‘apt search- and ‘apt show- Commands to Search and Find Details of Packages in Ubuntu.md b/sources/tech/20200525 Using ‘apt search- and ‘apt show- Commands to Search and Find Details of Packages in Ubuntu.md deleted file mode 100644 index d1d80bcb5d..0000000000 --- a/sources/tech/20200525 Using ‘apt search- and ‘apt show- Commands to Search and Find Details of Packages in Ubuntu.md +++ /dev/null @@ -1,172 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Using ‘apt search’ and ‘apt show’ Commands to Search and Find Details of Packages in Ubuntu) -[#]: via: (https://itsfoss.com/apt-search-command/) -[#]: author: (Abhishek Prakash https://itsfoss.com/author/abhishek/) - -Using ‘apt search’ and ‘apt show’ Commands to Search and Find Details of Packages in Ubuntu -====== - -_**This is a detailed beginners guide to apt search command. Using apt search and apt show commands, you can get details of the available versions, dependencies, repositories and other important information about packages in Ubuntu.**_ - -Have you ever wondered if a certain package is available to install via [apt package manager][1]? - -Have you wondered if the package offered by [Ubuntu repositories][2] are the latest one or not? - -The apt package manager in [Ubuntu][3] and many other distribution provides two handy [apt command options][4] for this purpose. - -The apt search command looks for the provided string in the name and description of the packages. - -``` -apt search package_name -``` - -The apt show command provides detailed information on a package: - -``` -apt show package_name -``` - -The commands don’t require you to [be root in Ubuntu][5]. Here’s an example of these commands: - -![][6] - -### Why would you want to use apt search or apt show command? - -Let’s say you want to [install Gambas programming language in Ubuntu][7]. You are happy with your knowledge of the apt command so you decided to use the command line for installing application. - -You open a terminal and use the apt command to install gambas but it results in [unable to locate package error][8]. - -``` -sudo apt install gambas -Reading package lists... Done -Building dependency tree -Reading state information... Done -E: Unable to locate package gambas -``` - -Why did Ubuntu not find the gambas package? Because there is no such package called gambas. Instead, it is available as gambas3. This is a situation where you could take the advantage of the apt search command. - -Let’s move to apt show command. This command provides detailed information about a package, its repository, dependencies and a lot more. - -Knowing what version of a package is available from the official repository could help you in deciding whether you should install it from some other sources. - -Quick recall - -The apt package manager works on a local database/cache of available packages from various repositories. This database contains the information about the available package version, dependencies etc. It doesn’t contain the entire package itself. The packages are downloaded from the remote repositories. - -When you run the sudo apt update command, this cache is created/updated in the /var/lib/apt/lists/ directory. The apt search and apt show commands utilize this cache. - -The term package is used for an application, program, software. - -### Search for available packages using apt search command - -![][9] - -Let me continue the gambas example. Say, you search for - -``` -apt search gambas -``` - -It will give you a huge list of packages that have “gambas” in its name or description. This output list is in alphabetical order. - -Now, you’ll of course have to make some intelligent prediction about the package you want. In this example, the first result says “Complete visual development environment for Gambas”. This gives you a good hint that this is the main package you are looking for. - -![][10] - -Why so many packages associated with gambas? Because a number of these gambas packages are probably dependencies that will installed automatically if you install the gambas3 package. If you use the _‘apt show gambas3_‘ command, it will show all the dependencies that will be installed with gambas3 package. - -Some of these listed packages could be libraries that a developer may need in some special cases while developing her/his software. - -#### Use apt search for package name only - -By default, apt search command looks for the searched term in both the name of the package and its description. - -You may narrow down the search by instructing the apt command to search for package names only. - -``` -apt search --names-only search_term -``` - -If you are following this as a tutorial, give it a try. Check the output with search term ‘transitional’ with and without –names-only option and you’ll see how the output changes. - -``` -apt search transitional -apt search --names-only transitional -``` - -**Bonus Tip**: You can use ‘apt list –installed’ command to [look for installed packages in Ubuntu][11]. - -### Get detailed information on a package using apt show command - -The output of the apt search commands a brief introduction of the packages. If you want more details, use the apt show command. - -``` -apt show exact_package_name -``` - -The apt show command works on the exact package name and it gives you a lot more information on the package. You get: - - * Version information - * Repository information - * Origin and maintainer of the package information - * Where to file a bug - * Download and installation size - * Dependencies - * Detailed description of the package - * And a lot more - - - -Here’s an example: - -![][12] - -You need to give the exact package name otherwise the apt show won’t work. The good thing is that tab completion works apt show command. - -As you can see in the previous image, you have plenty of information that you may found helpful. - -The apt show command also works on installed packages. In that case, you can see which source the package was installed from. Was it a PPA or some third-party repository or universe or the main repository itself? - -Personally, I use apt show a lot. This helps me know if the package version provided by Ubuntu is the latest or not. Pretty handy tool! - -### Conclusion - -If you read my detailed [guide on the difference between apt and apt-get commands][13], you would know that this ‘apt search’ command works similar to ‘apt-cache search’. There is no such command as “apt-get search”. - -The purpose of creating apt command is to give you one tool with only enough option to manage the packages in your Debian/Ubuntu system. The apt-get, apt-cache and other apt tools still exist, and they can be used in scripting for more complex scenarios. - -I hope you found this introduction to **apt search** and **apt show** commands useful. I welcome your questions and suggestions on this topic. - -If you liked it, please share it on various Linux forums and communities you frequent. That helps us a lot. Thank you. - --------------------------------------------------------------------------------- - -via: https://itsfoss.com/apt-search-command/ - -作者:[Abhishek Prakash][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://itsfoss.com/author/abhishek/ -[b]: https://github.com/lujun9972 -[1]: https://wiki.debian.org/Apt -[2]: https://itsfoss.com/ubuntu-repositories/ -[3]: https://ubuntu.com/ -[4]: https://itsfoss.com/apt-command-guide/ -[5]: https://itsfoss.com/root-user-ubuntu/ -[6]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/05/apt-search-apt-show-example-800x493.png?resize=800%2C493&ssl=1 -[7]: https://itsfoss.com/install-gambas-ubuntu/ -[8]: https://itsfoss.com/unable-to-locate-package-error-ubuntu/ -[9]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/05/apt-search-command.png?ssl=1 -[10]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/05/apt-search-command-example.png?fit=800%2C297&ssl=1 -[11]: https://itsfoss.com/list-installed-packages-ubuntu/ -[12]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/05/apt-show-command-example-800x474.png?resize=800%2C474&ssl=1 -[13]: https://itsfoss.com/apt-vs-apt-get-difference/ diff --git a/sources/tech/20200525 What to do When You See -Repository does not have a release file- Error in Ubuntu.md b/sources/tech/20200525 What to do When You See -Repository does not have a release file- Error in Ubuntu.md deleted file mode 100644 index 6cfd9f34de..0000000000 --- a/sources/tech/20200525 What to do When You See -Repository does not have a release file- Error in Ubuntu.md +++ /dev/null @@ -1,115 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (What to do When You See “Repository does not have a release file” Error in Ubuntu) -[#]: via: (https://itsfoss.com/repository-does-not-have-release-file-error-ubuntu/) -[#]: author: (Abhishek Prakash https://itsfoss.com/author/abhishek/) - -What to do When You See “Repository does not have a release file” Error in Ubuntu -====== - -One of the [several ways of installing software in Ubuntu][1] is by using PPA or adding third-party repositories. A few magical lines give you easy access to a software or its newer version that is not available by default in [Ubuntu][2]. - -All thing looks well and good until you get habitual of adding additional third-party repositories and one day, you see an error like this while [updating Ubuntu][3]: - -**E: The repository ‘ focal Release’ does not have a Release file. -N: Updating from such a repository can’t be done securely, and is therefore disabled by default. -N: See apt-secure(8) manpage for repository creation and user configuration details.** - -In this tutorial for Ubuntu beginners, I’ll explain what does this error mean, why do you see it and what can you do to handle this error? - -### Understanding “Repository does not have a release file” error - -![][4] - -Let’s go step by step here. The error message is: - -**E: The repository ‘ focal release’ does not have a release file** - -The important part of this error message is “focal release”. - -You probably already know that [each Ubuntu release has a codename][5]. For Ubuntu 20.04, the codename is Focal Fossa. The “focal” in the error message indicates Focal Fossa which is Ubuntu 20.04. - -The error is basically telling you that though you have added a third-party repository to your system’s sources list, this new repository is not available for your current Ubuntu version. - -_**Why so? Because probably you are using a new version of Ubuntu and the developer has not made the software available for this new version.**_ - -At this point, I highly recommend reading my detailed guides on [PPA][6] and [Ubuntu repositories][7]. These two articles will give you a better, in-depth knowledge of the topic. Trust me, you won’t be disappointed. - -### How to know if the PPA/third party is available for your Ubuntu version [Optional] - -First you should [check your Ubuntu version and its codename][8] using ‘lsb_release -a’ command: - -``` -[email protected]:~$ lsb_release -a -No LSB modules are available. -Distributor ID: Ubuntu -Description: Ubuntu 20.04 LTS -Release: 20.04 -Codename: focal -``` - -As you can see, the codename it shows is focal. Now the next thing you can do is to go to the website of the software in question. - -This could be the tricky part but you can figure it out with some patience and effort. - -In the example here, the error complained about ****. It is a PPA repository and you may easily find its webpage. How, you may ask. - -Use Google or a [Google alternative search engine][9] like Duck Duck Go and search for “ppa numix”. This should give you the first result from [launchpad.net][10] which is the website used for hosting PPA related code. - -On the webpage of the PPA, you can go to the “Overview of published packages” and filter it by the codename of your Ubuntu version: - -![][11] - -For non-PPA third-party repository, you’ll have to check of the official website of the software and see if the repository is available for your Ubuntu version or not. - -### What to do if the repository is not available for your Ubuntu version - -In case when the repository in question is not available for your Ubuntu version, here’s what you can do: - - * Delete the troublesome repository from your list of repository so that you don’t see the error every time you run the update. - * Get the software from another source (if it is possible). - - - -To delete the troublesome repository, start Software & Updates tool: - -![][12] - -Go to the Other Software tab and look for the repository in question. Highlight it and then click on Remove button to delete it from your system. - -![Remove Ppa][13] - -This will [delete the PPA][14] or the repository in question. - -Next step is to get the software from some other source and that’s totally subjective. In some cases, you can still download the DEB file from the PPA website and use the software (I have explained the steps in the [PPA guide][6]). Alternatively, you can check the project’s website if there is a Snap/Flatpak or Python version of the software available. - --------------------------------------------------------------------------------- - -via: https://itsfoss.com/repository-does-not-have-release-file-error-ubuntu/ - -作者:[Abhishek Prakash][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://itsfoss.com/author/abhishek/ -[b]: https://github.com/lujun9972 -[1]: https://itsfoss.com/install-remove-software-manjaro/ -[2]: https://ubuntu.com/ -[3]: https://itsfoss.com/update-ubuntu/ -[4]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/05/Repository-does-not-have-a-release-file.png?ssl=1 -[5]: https://itsfoss.com/linux-code-names/ -[6]: https://itsfoss.com/ppa-guide/ -[7]: https://itsfoss.com/ubuntu-repositories/ -[8]: https://itsfoss.com/how-to-know-ubuntu-unity-version/ -[9]: https://itsfoss.com/privacy-search-engines/ -[10]: https://launchpad.net/ -[11]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/05/check-repo-version.png?ssl=1 -[12]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/04/software-updates-settings-ubuntu-20-04.jpg?ssl=1 -[13]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/05/remove-ppa.jpg?ssl=1 -[14]: https://itsfoss.com/how-to-remove-or-delete-ppas-quick-tip/ diff --git a/sources/tech/20200526 Create interactive content in WordPress with the H5P plugin.md b/sources/tech/20200526 Create interactive content in WordPress with the H5P plugin.md deleted file mode 100644 index 871439e73a..0000000000 --- a/sources/tech/20200526 Create interactive content in WordPress with the H5P plugin.md +++ /dev/null @@ -1,130 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Create interactive content in WordPress with the H5P plugin) -[#]: via: (https://opensource.com/article/20/5/h5p-wordpress) -[#]: author: (Don Watkins https://opensource.com/users/don-watkins) - -Create interactive content in WordPress with the H5P plugin -====== -Turn your WordPress site into an interactive learning management system -with this open source plugin. -![Family learning and reading together at night in a room][1] - -WordPress is best known as a website content management system, but it also a great [learning management system][2] (LMS) for delivering online courses. If that is what you are looking for out of WordPress, then [H5P][3] should be the top plugin on your list. - -H5P is a way to create and share interactive HTML5 content, including presentations, games, quizzes, forms, and more, in a browser. You can download a wide variety of content types from H5P's [Examples and Downloads][4] page, or you can create unique content to embed in your WordPress site. - -H5P provides plugins and integrations for WordPress, Moodle, Drupal, Canvas, Brightspace, Blackboard, and more. In this article, I will show how to use H5P in WordPress to create a reading comprehension quiz for students. - -### Install the H5P plugin - -The first step is to install the plugin. Log into your WordPress admin panel, go to **Plugins**, select **Add New**, and search for **H5P** in the Plugins field. When you find it, select **Install Now**. - -![Adding the H5P plugin][5] - -(Don Watkins, [CC BY-SA 4.0][6]) - -H5P should now appear in the list of installed plugins. Be sure to **Activate** the plugin by going to the H5P menu at the bottom of your WordPress admin panel and clicking the button. You will see the following display—be sure to consent so you can connect to the H5P Hub. - -![H5P consent option][7] - -(Don Watkins, [CC BY-SA 4.0][6]) - -Now you can begin adding H5P content to your WordPress installation. - -### Create a quiz - -One of my favorite poems is Robert Frost's "The Road Not Taken." Suppose you are teaching a class that is studying this poem, and one of your objectives is for your students to remember the poem's author. First, create a new WordPress post on your site that contains the poem's text and its author. - -![Creating a WordPress post][8] - -(Don Watkins, [CC BY-SA 4.0][6]) - -Now you want to test your students' comprehension with an HTML5 interactive content embedded below the poem. - -In the WordPress admin panel, look near the bottom for the **H5P Content** menu and select it. In the menu that appears, click **Add New**. - -![H5P Content menu][9] - -(Don Watkins, [CC BY-SA 4.0][6]) - -You will see an array of content options that are available. Since you want to create a multiple-choice quiz, look for the **Multiple Choice** option and click **Get** to its right. - -![H5P content types][10] - -(Don Watkins, [CC BY-SA 4.0][6]) - -A form will open for you to start creating the quiz. Fill in the required fields (marked with a red asterisk)—give your quiz a title (e.g., "Road Not Taken Quiz"), enter a question (e.g., "Who wrote, 'The Road Not Taken'?") and correct and incorrect answers, and select the correct answer in the dialog box. When you finish creating the quiz, save the content. - -![H5P quiz][11] - -(Don Watkins, [CC BY-SA 4.0][6]) - -### Embed the quiz in a post - -Now you're ready to insert the quiz exactly where you want it to appear in your post. Open the post where you want to put the quiz (e.g., "The Road Not Taken" post) in your WordPress editor, and you should see an **Add H5P** button near the top of the interface. Place your cursor wherever you want the quiz to appear in the post, and click **Add H5P**. Your H5P content will appear in a dialog box like this: - -![H5P list of interactive content][12] - -(Don Watkins, [CC BY-SA 4.0][6]) - -Select the content you want, and H5P will insert an embed code (e.g., `[h5p id="1"]`) in the post, like this: - -![H5P embed code in a post][13] - -(Don Watkins, [CC BY-SA 4.0][6]) - -Save your post, then open it in your browser. The quiz is exactly where you wanted it to appear in the post: - -![H5P quiz shown in the post][14] - -(Don Watkins, [CC BY-SA 4.0][6]) - -When a student answers this question correctly, they get pleasant visual feedback: - -![Correct answer selection][15] - -(Don Watkins, [CC BY-SA 4.0][6]) - -### The possibilities are endless - -H5P offers a wide range of options to add interactivity to WordPress posts. In this example, you could have created a more complex set of multiple-choice questions. H5P also has lots of other content types, including interactive video, arithmetic quizzes, an audio recorder, image hotspots, fill-in-the-blank quizzes, and [many more][4]. - -H5P also provides [excellent documentation][16] and [great tutorials][17] to help anyone who wants to use the plugin on their WordPress site. H5P software is open source under the [MIT License][18] with the code available on [GitHub][19]. H5P also welcomes contributions to the community; check out the [developer guide][20] for more information. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/5/h5p-wordpress - -作者:[Don Watkins][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/don-watkins -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/family_learning_kids_night_reading.png?itok=6K7sJVb1 (Family learning and reading together at night in a room) -[2]: https://en.wikipedia.org/wiki/Learning_management_system -[3]: https://h5p.org/ -[4]: https://h5p.org/content-types-and-applications -[5]: https://opensource.com/sites/default/files/uploads/addplugins-h5p.png (Adding the H5P plugin) -[6]: https://creativecommons.org/licenses/by-sa/4.0/ -[7]: https://opensource.com/sites/default/files/uploads/h5p-consent.png (H5P consent option) -[8]: https://opensource.com/sites/default/files/uploads/wordpress-post.png (WordPress post) -[9]: https://opensource.com/sites/default/files/uploads/h5p-content-menu.png (H5P Content menu) -[10]: https://opensource.com/sites/default/files/uploads/h5p-content-types.png (H5P content types) -[11]: https://opensource.com/sites/default/files/uploads/h5p-multiple-choice-quiz.png (H5P quiz) -[12]: https://opensource.com/sites/default/files/uploads/h5p-insert-interactive-content.png (H5P list of interactive content) -[13]: https://opensource.com/sites/default/files/uploads/h5p-embedded-content.png (H5P embed code in a post) -[14]: https://opensource.com/sites/default/files/uploads/h5p-quiz.png (H5P quiz shown in the post) -[15]: https://opensource.com/sites/default/files/uploads/h5p-correct-answer.png (Correct answer selection) -[16]: https://h5p.org/documentation/setup/wordpress -[17]: https://h5p.org/documentation/for-authors/tutorials -[18]: https://h5p.org/MIT-licensed -[19]: https://github.com/h5p -[20]: https://h5p.org/developers diff --git a/sources/tech/20200529 Beaker Browser 1.0 Beta- One Step Forward and Two Steps Back.md b/sources/tech/20200529 Beaker Browser 1.0 Beta- One Step Forward and Two Steps Back.md deleted file mode 100644 index 3b93e61af5..0000000000 --- a/sources/tech/20200529 Beaker Browser 1.0 Beta- One Step Forward and Two Steps Back.md +++ /dev/null @@ -1,90 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Beaker Browser 1.0 Beta: One Step Forward and Two Steps Back) -[#]: via: (https://itsfoss.com/beaker-browser-1-release/) -[#]: author: (John Paul https://itsfoss.com/author/john/) - -Beaker Browser 1.0 Beta: One Step Forward and Two Steps Back -====== - -I recently reviewed the [Beaker Browser][1]. About a week after that review was published, the devs [released Beaker 1.0 Beta][2]. And that changes almost everything I had observed in the previous article. - -This made me do an entire article on the new Beaker Browser.Here’s what’s been changed! - -### No more Dat, Beaker now uses Hypercore protocol - -![][3] - -One of the most significant changes to Beaker is the introduction of a new protocol. Up to now, Beaker has used the [Dat protocol][4] to distribute content. Beta 1.0 replaces Dat with [Hypercore][5]. - -One of the components is Hyperdrive [version 10][6], which was released the same days as Beaker. Hyperdrive is “a POSIX-like filesystem implementation, written in Node.js, that’s designed to be the storage layer for fast, scalable, and secure peer-to-peer applications.” - -Like BitTorrent, Hyperdrive can be used to share a large collection of files. However, unlike BitTorrent, the contents can be modified. - -![][7] - -Switching to the new protocol brings the following changes: - - * Performance is now vastly superior thanks to new data structures. - * Connection-reliability has improved thanks to a switch to a hole-punching DHT. - * A new “mounts” feature for composing multiple Hyperdrives into a single hierarchy. - - - -Since Beaker switched over to a new protocol, all previously created websites don’t work anymore. They did include a tool to convert sites from Dat to Hypercore. I tried it on a couple of one-page sites and it failed. It only created a new site that was totally empty of content. - -### New Beaker-website creating tools - -The Beaker devs introduced several new tools to make editing easier. Now when you edit or create a site, you will get a split-screen view with a code editor on the left and a preview window on the right. The preview is updated whenever you save your work. - -![Beaker Site Editing][8] - -Besides the editor you can also open a file manager to import and manage files and images. They also included a terminal application called [webterm][9]. This terminal can only interact with the contents of the site you are working on, but it is still pretty cool. webterm only comes with 10 simple commands. If you are adventurous you can write your own commands for it, using Javascript. - -You can pop out each of these tools into their own window. If you have all three open, the left-hand panel can get crowded very quickly. - -You can see more information about the release [here][2] - -### Final thoughts on the Beaker Browser 1.0 beta release - -When I saw the announcement for Beaker Browser 1.0 Beta, I was hopeful that some of the complaints I had in the review would be fixed. Unfortunately, that didn’t happen. - -My biggest problem with Beaker Browser was that it was hard to find `dat` powered content. In the previous version, there was a page with a list of about a dozen projects running on the Dat protocol, but that was it. - -If you dig around on the new version, you can find a list of people who have profiles created on Hypercore. Unfortunately, most of those pages are either blank or something someone quickly threw together. I imagine that this will change with the final version of 1.0 is released. - -![Beaker User Directory][10] - -I did enjoy the editing tools. It made it very easy to slap together a quick webpage with a couple of lines of Markdown. I did create a site, but I’m not going to leave Beaker Browser running 24/7 to seed it. There currently isn’t any other way to do it. - -What are your thoughts on the Beaker Browser? What are your thoughts on the peer-to-peer web? Please let us know in the comments below. - -If you found this article interesting, please take a minute to share it on social media, Hacker News, or [Reddit][11]. - --------------------------------------------------------------------------------- - -via: https://itsfoss.com/beaker-browser-1-release/ - -作者:[John Paul][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://itsfoss.com/author/john/ -[b]: https://github.com/lujun9972 -[1]: https://itsfoss.com/beaker-browser/ -[2]: https://beakerbrowser.com/2020/05/14/beaker-1-0-beta.html -[3]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/05/Beaker-Browser-1-beta.png?ssl=1 -[4]: https://www.datprotocol.com/ -[5]: https://hypercore-protocol.org/ -[6]: https://blog.hypercore-protocol.org/posts/announcing-hyperdrive-10/ -[7]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/05/beaker-start-page.jpg?resize=800%2C426&ssl=1 -[8]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/05/beaker-site-editing-800x426.jpg?resize=800%2C426&ssl=1 -[9]: https://docs.beakerbrowser.com/advanced/webterm -[10]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/05/beaker-user-directory.jpg?resize=800%2C426&ssl=1 -[11]: https://reddit.com/r/linuxusersgroup diff --git a/sources/tech/20200606 What are the pros and cons of virtual events.md b/sources/tech/20200606 What are the pros and cons of virtual events.md deleted file mode 100644 index 4b540c180e..0000000000 --- a/sources/tech/20200606 What are the pros and cons of virtual events.md +++ /dev/null @@ -1,51 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (What are the pros and cons of virtual events?) -[#]: via: (https://opensource.com/article/20/6/virtual-events) -[#]: author: (Lauren Maffeo https://opensource.com/users/lmaffeo) - -What are the pros and cons of virtual events? -====== -Take our poll to tell us what you enjoy most about virtual events within -the open source community. -![Teamwork starts with communication amongst teams and across silos][1] - -The COVID-19 pandemic disturbed the work of event organizers everywhere. To slow the spread of this highly contagious virus, conferences that tend to host thousands in person faced a choice: Move entirely online, or cancel altogether. Many open source event organizers chose the latter, but not all of them. - -[Open Source 101][2] was due to be held in Austin, TX, on April 14. Instead, it hosted 1,000 attendees virtually. Later this month, the Linux Foundation will host the annual North American contingent of its [Open Source Summit][3] online. And rather than hosting DrupalCon around the world as planned, the Drupal Association [will host DrupalCon Global][4] online from July 14 - 17.  - -If there's any group that could move events online without missing a beat, it's the open source community. Open source teams are used to meeting online and working asynchronously to support diverse time zones. - -And moving community events online could make those communities more inclusive. That's because virtual events allow anyone, anywhere in the world to attend the summits and sessions that are most relevant to them, on their own schedules.  - -This decreases the costs of time and money that prevent many from attending in person. Many virtual equivalents of in-person events are being offered at drastically reduced costs, if not for free. That cost reduction in tickets, coupled with not needing to spend money on flights and hotels, goes a long way towards increasing access. - -Still, I can't help feeling like the lack of in-person events this year is a loss. I've worked on remote teams for more than five years, and on remote open source projects in my spare time. I am among the biggest advocates of remote work you'll find. That's the same reason why I look forward to my teams' in-person offsites each year. - -That time to meet in person, celebrate achievements, decide on new visions for our projects, and socialize is crucial. It plays a key role in bridging the distance gap by helping us put names to faces and getting to know each other.  - -On a personal note, I've shared before how I started [contributing to open source][5] after attending a huge conference where I met several community leaders. By meeting and making connections face to face, I got plugged in much faster than if I had stumbled onto GitHub and searched through random projects. I fully support public health efforts to keep people safe, *and *haven't found virtual events to be a strong substitute for the informal conversations in the "hallway track." - -**Have you attended a virtual open source event this spring? What were the pros and cons compared to their in-person counterparts?** - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/6/virtual-events - -作者:[Lauren Maffeo][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/lmaffeo -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/fistbump-team-teamwork.png?itok=WuSu8-wE (Teamwork starts with communication amongst teams and across silos) -[2]: https://www.allthingsopen.org/open-source-101-at-home-2020-event-summary/?utm_source=All+Things+Open+Universe&utm_campaign=9fb4857423-EMAIL_CAMPAIGN_2020_01_15_01_25_COPY_01&utm_medium=email&utm_term=0_bcf95632f2-9fb4857423-243641509 -[3]: https://events.linuxfoundation.org/open-source-summit-north-america/ -[4]: https://events.drupal.org/global2020 -[5]: https://opensource.com/article/19/6/conference-proposal-tips diff --git a/sources/tech/20200608 A secure and private open source alternative to Alexa.md b/sources/tech/20200608 A secure and private open source alternative to Alexa.md deleted file mode 100644 index ec6a09acc0..0000000000 --- a/sources/tech/20200608 A secure and private open source alternative to Alexa.md +++ /dev/null @@ -1,95 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (A secure and private open source alternative to Alexa) -[#]: via: (https://opensource.com/article/20/6/open-source-voice-assistant) -[#]: author: (Steve Ovens https://opensource.com/users/stratusss) - -A secure and private open source alternative to Alexa -====== -Mycroft brings more privacy, security, and freedom into your voice -assistant applications. -![radio communication signals][1] - -I grew up in rural towns all over Ontario, Canada. We weren't particularly well off, although, as a kid in the middle of nowhere, I wasn't really aware of our socioeconomic status. What I was aware of was this beige box called a computer that sat in my dad's office. Dad worked for the bank, and for his job, it was essential for him to have a computer. So while we never had the latest gaming console, we always had a computer. - -It's probably because of this that I developed a pretty intense relationship with all things computers. Today, I am fortunate to work for Red Hat, but that's another story altogether. Growing up in the '80s and having my teenage years in the mid-90s, I have a vivid awareness of how computers have changed. I remember watching as my dad logged online for the first time on our 9600-baud modem. I remember the first time I was able to download skins for buildings in my favorite game, Sim City 2000. - -I mention all this for a reason: I have watched computers evolve my entire life, from mashing arcane commands into DOS (ironically, some say I still perform the same tasks years later in my role at Red Hat), to GUIs of "fat" applications, to web apps, and mobile. The one commonality that has stood out has been the end user's demand for an ever-simplified interface to interact with technology. - -### From touch to voice - -For several years, the cool thing was to be able to poke at your device's screen and have it react. Touch screens were all the rage. Nowadays, the consumer space is trending towards digital assistants. Some stats say that by 2022, 55% of US households will have a voice assistant. Other sources say that Amazon sells approximately 14 million of these devices _per quarter_, while Google trails behind with around 11 million. If you want a concrete market value, MarketWatch estimates the value of this industry will be $7.8 billion by 2023. This doesn't even take into account the phones that everyone has in their pockets! Whatever metrics you use, one thing is clear: voice assistants are becoming increasingly important. - -So are your only options Google, Amazon, or Apple? _NOPE!_ If they were, I wouldn't be writing this article, where I'll introduce you to [Mycroft][2]. - -### Mycroft: An open source voice assistant for developers - -For me, Mycroft's big selling feature is that it is open source. This means that I can get in, tinker around, and contribute to the project. It's largely based in Python, which works out just fine for me. - -Before I go any further, I want to draw your attention to the subheading: "for developers." These are my words, and while I contribute to the project, I do not speak for it. However, I want to emphasize that the project is not at a state where it's ready to gain mass adoption. Mycroft's [official documentation][3] is generally very good, but there are rough edges that are being smoothed out all the time. So, if you are willing to put in some effort, perhaps file some bugs, and take the long view, this project is absolutely worth your time. If you are looking for an off-the-shelf, ready to go project, you may need to come back in a year or so. - -Here are some of the major reasons it makes sense to get involved with the Mycroft project. - -#### Privacy - -As I mentioned, voice assistants are everywhere, and that's only increasing. Although they are often forgotten, they are listening to everything. [Apple][4], [Google][5], and [Amazon][6] have all been found listening to the recordings their voice assistants capture. In [some cases][7], these recordings are even being used in courts of law. - -What if you work out of your home office (even before the world got turned upside down by COVID-19)? How can you protect the privacy of your users and clients, especially when most people don't even realize that the technology meant to make their lives easier is capturing their private conversations? - -Even if you aren't worried about exposing your conversations, are you OK with companies gathering this data for targeted advertising? Mycroft puts privacy at the forefront. Its default speech-to-text (STT) backend is Google's STT service, but you can choose from a wide variety of providers, including Google, IBM's Watson, Mozilla, Kaldi, Microsoft Azure, and more. In addition, Mycroft proxies all STT requests that go through their servers for specific providers (Google being one of them). - -#### Security - -Remember how I said Mycroft is for developers? Since you self-host Mycroft, this means its security is as good as you can make it. You can (and should) implement VLANs, routing rules, firewall rules, and whatever other security that is relevant for your environment. - -Even if your security is not top-notch, the obfuscation you receive from having such a tiny footprint means that, outside of random chance or a targeted attack, your Mycroft instance is relatively safe from the outside world. If it's on your network, you control what and who has access to your voice assistant. That's a good thing. - -#### Did I mention Python? - -I love Python. It's one of the main reasons I was able to get involved so quickly. I use Python extensively in my day-to-day, both for fun and profit. I introduced my wife to Mycroft, and she immediately started adding tasks to _my_ backlog for all the things she wants _her_ voice assistant to be able to do. - -While I was hard at work picking through my backlog, I noticed that one of the Mycroft intent parsers (which I will discuss in my next article) did not handle apostrophes properly. So, in true open source fashion, I forked the code, fixed it up, and created a pull request (PR) against the project. After some small back and forth, my PR was brought up to the project standards and voila! Mycroft now handles apostrophes better. How cool is that? - -A) I was able to fork the code, fix it, and run the fix locally and  - -B) have these changes accepted by the project to benefit everyone  - -  - -It's mind-blowing. - -Not only that, but other projects including [KDE Plasma on TV][8] have integrated Mycroft to make their projects more widely appealing. I'd love to hear about more projects that have taken advantage of Mycroft, so please reach out on Twitter or leave a comment below if you know of any. - -### Science non-fiction - -As a kid, I always loved science fiction; I still do, in fact. I wanted to be able to be like Jean-Luc Picard and say, "Computer, Earl Grey. Hot," and have things magically happen. While food replicators are still a long way off, with Mycroft and a little bit of know-how, I can say things like, "Hey, Mycroft, start the tea kettle" or "Hey, Mycroft, add bread to my shopping list," and Mycroft will make it so. - -I'm relatively new to the Mycroft developer community, but we are a small group of tightly knit folks who want to live in a world where there is an open source competitor to the Alexas, Siris, and Googles of the world. Stop by and chat with us on [Mattermost][9]. - -Need to keep your schedule straight? Learn how to do it using open source with these free... - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/6/open-source-voice-assistant - -作者:[Steve Ovens][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/stratusss -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/sound-radio-noise-communication.png?itok=KMNn9QrZ (radio communication signals) -[2]: https://mycroft.ai/ -[3]: https://mycroft-ai.gitbook.io/docs/ -[4]: https://www.forbes.com/sites/kateoflahertyuk/2019/07/28/apple-siri-eavesdropping-puts-millions-of-users-at-risk/#3eea76e6a530 -[5]: https://www.digitalmusicnews.com/2019/07/12/google-employees-google-home/ -[6]: https://www.cnbc.com/2019/04/11/how-to-stop-amazon-from-listening-to-what-you-say-to-alexa.html -[7]: https://www.cnn.com/2017/03/07/tech/amazon-echo-alexa-bentonville-arkansas-murder-case/index.html -[8]: https://dot.kde.org/2020/03/26/plasma-tv-presenting-plasma-bigscreen -[9]: https://chat.mycroft.ai/ diff --git a/sources/tech/20200609 humanID Project- Restoring Civil Discussion Through Better Online Identity.md b/sources/tech/20200609 humanID Project- Restoring Civil Discussion Through Better Online Identity.md deleted file mode 100644 index f9eeba832f..0000000000 --- a/sources/tech/20200609 humanID Project- Restoring Civil Discussion Through Better Online Identity.md +++ /dev/null @@ -1,85 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (humanID Project: Restoring Civil Discussion Through Better Online Identity) -[#]: via: (https://www.linux.com/audience/developers/humanid-project-restoring-civil-discussion-through-better-online-identity/) -[#]: author: (Swapnil Bhartiya https://www.linux.com/author/swapnil/) - -humanID Project: Restoring Civil Discussion Through Better Online Identity -====== - -[![][1]][2] - -[![][1]][2] - -Every day, billions of people use social sign-ons, such as “Login with Facebook”, to access applications over the Internet. A major drawback of this system is the inability to distinguish a real human user from a bot. - -Nonprofit organization [humanID][3], a recipient of [Harvard University’s Social Impact Fund][4], came up with an innovative idea: develop a one-click anonymous sign-on that serves as an alternative to social sign-on. - -“With humanID, everyone can use services without giving up privacy or having their data sold. Bot networks are automatically excluded, while applications can easily block abusive users and trolls, creating more civil digital communities,” says [Bastian Purrer, Co-Founder of humanID][5]. - -humanID was born during Purrer’s stint in Indonesia. He was helping out a political party’s campaign and was aghast to discover how much of the political conversation during the election was controlled by bots and trolls. - -When he realized that political parties routinely deploy bots to promote propaganda and false facts, it became clear that the key to restoring civil discussion, and the vision of an internet for everyone, was better online identity. - -**The mission -** Besides Purrer, humanID’s other co-founders are [Sidiq Permana][6] and [Shuyao Kong][7]. Together, they lead a 20-person organization, with the tech team based in Indonesia while the business team is in Boston. - -“Fixing the Internet is the core mission that unites all three co-founders. Having witnessed how public opinions and sentiments are swayed by fake accounts, we believe that restoring online identity is the first step to restoring authenticity and accountability on the Internet,” says Kong. “We target consumer use cases that are currently serviced by email-and- password, or social sign-ons. This includes the majority of apps on our phones.” - -Purrer says the goal of the project is to have one humanID per person.  “We want people to have control over their own identity from a privacy perspective. We want humanID to be so intuitive and prevalent that it becomes the default identity layer for applications.” - -An identity is a permanent representation within a certain context. On the Internet, just like in real life, our identity differs from community to community. humanID enables this, by giving users a different, unique identity in every community. - -“It is, if the user chooses so, also a different identity than their offline identity. This is where anonymity comes in. Anonymity means that your offline identity, your physical self, cannot be revealed based on your digital identity,” says Kong, who has worked previously in the blockchain and privacy space. - -Permana, who’s leading humanID’s technical development, says, “We achieve this by hashing users’ phone numbers, with a unique, different hash for each user and each application — making cross-referencing between communities impossible. The irreversibility of the hashes ensures secure anonymity. The fact that we do not permanently save any unhashed information makes it impossible, not just for our partner applications but even for ourselves, to reveal a user’s offline identity in the form of his phone number.” - -The humanID team believes a persistent, safe identity will be better than any of the existing online identities that are not safe from surveillance and cannot be held accountable for their online behavior. - -**The underlying tech -** humanID reached out to the Linux Foundation because it saw “tremendous value to be part of the force that’s driving the industry standard.” - -“The Internet is built on layers of open-source, free-to-use protocols. humanID is created in this tradition. The solution hashes users’ phone numbers and email addresses, securing them safely away from hackers and media giants. Each user will have a unique hash for each application he or she signs on so there’s no cross-referencing,” explains Purrer. - -“Our database stores users’ country codes, but relinquishes access to the rest of the information we hash. We are using OAuth at the moment, but actively exploring tech that enhances the security of humanID. Developers can implement the social login within a few hours of work,” he says. - -**The use cases -** One use case they are deploying for their first client [GreenZone][8] is tracking COVID without sacrificing users’ privacy. Permana explains, “GreenZone is a tracking application that doesn’t track users’ location. Instead, it shows ‘green zones’ of low-risk areas where no symptoms are reported, therefore, alleviating anxiety by showing users whether they are in a safe zone or not. All data is entirely peer-to-peer and there is no government, police or regulators involved.” - -According to him, humanID’s first set of customers will be those that are privacy-conscious because their customers demand native privacy when using their product. These businesses include COVID-tracking, health and self-tracking apps, self-help forums, and VPNs. - -“We also target social networks, petition sites, and any site with a forum or comment section. All of these businesses suffer heavily from spam abuse and automated accounts. With humanID, everyone can use services without giving away privacy or having their data sold. Bot networks are automatically excluded, while applications can easily block abusive users and trolls,” he says. - -Purrer clarifies that humanID does not intend to replace government-issued IDs or business-internal identity management. - -“We don’t intend to compete with these existing businesses or standards, but to add a new and fresh idea in the struggle to bring back privacy, safety and accountability on the web,” he says. - -The project has been driven by open source and volunteer work for 1.5 years. “We’re actively seeking support and grants to accelerate our work to bring humanID to market and sign up clients. Beyond this, we aim to cover our cost from our client base and not be dependent on charitable donations beyond 2022,” Purrer adds. - -Check out the demo below, if you have any questions feel free to contact the team on [github][9]. - --------------------------------------------------------------------------------- - -via: https://www.linux.com/audience/developers/humanid-project-restoring-civil-discussion-through-better-online-identity/ - -作者:[Swapnil Bhartiya][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://www.linux.com/author/swapnil/ -[b]: https://github.com/lujun9972 -[1]: https://www.linux.com/wp-content/uploads/2020/06/icon-1080750_1920-1068x1068.png (icon-1080750_1920) -[2]: https://www.linux.com/wp-content/uploads/2020/06/icon-1080750_1920.png -[3]: https://www.human-id.org/ -[4]: https://innovationlabs.harvard.edu/social-impact-fellowship-fund/#:~:text=What%20is%20the%20social%20impact,five%20years%2C%20beginning%20in%202019. -[5]: https://www.linkedin.com/in/bastianpurrer/ -[6]: https://www.linkedin.com/in/sidiqpermana/ -[7]: https://www.linkedin.com/in/shuyao-kong/ -[8]: https://greenzone.live/beta/ -[9]: https://github.com/bluenumberfoundation diff --git a/sources/tech/20200611 Nextcloud Vs ownCloud- What-s the Difference- Which one Should You Use.md b/sources/tech/20200611 Nextcloud Vs ownCloud- What-s the Difference- Which one Should You Use.md deleted file mode 100644 index 0959aa2411..0000000000 --- a/sources/tech/20200611 Nextcloud Vs ownCloud- What-s the Difference- Which one Should You Use.md +++ /dev/null @@ -1,197 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Nextcloud Vs ownCloud: What’s the Difference? Which one Should You Use?) -[#]: via: (https://itsfoss.com/nextcloud-vs-owncloud/) -[#]: author: (Ankush Das https://itsfoss.com/author/ankush/) - -Nextcloud Vs ownCloud: What’s the Difference? Which one Should You Use? -====== - -[Nextcloud][1] and [ownCloud][2] are two of the most popular names that you will come across when we talk about self-hosted open-source cloud storage services. - -Now, Nextcloud and ownCloud are similar in so many ways that it often confuses people. - -And this is why we at It’s FOSS thought of creating this comparison of Nextcloud and ownCloud. I’ll discuss the difference between ownCloud and Nextcloud. I’ll also share how both services are similar. - -### The history of ownCloud and Nextcloud - -In 2010, [Frank Karlitschek][3] started the ownCloud project by announcing it during a [Camp KDE keynote session][4]. - -![ownCloud interface][5] - -It started off as a personal cloud storage solution to give users the ability to have control of their own data without relying on other cloud storage providers which then translated to the start of ownCloud Inc. - -Unfortunately, Frank Karlitschek, along with several original developers left ownCloud Inc. They didn’t officially state any reason for that – but they hinted about the problem of having a business model that did not compliment an open-source solution. - -Now, ownCloud focuses primarily on Enterprise offerings and offers a separate sever edition (to self-host) for users. - -Frank Karlitschek started Nextcloud as a fork of ownCloud right after leaving ownCloud Inc. - -![Nextcloud interface][6] - -Considering that it’s a fork, you will find many similarities, however, the product has evolved a lot over the years arguably making it more popular than ownCloud. It is striving to become a collaboration platform like Microsoft Office 365 and Google Docs. - -Similar to ownCloud, you will find a self-hosted option and an enterprise-tailored solution. - -### Nextcloud vs ownCloud: Similarities - -![Nextcloud Vs Owncloud][7] - -Let’s talk about the similarities between Nextcloud and ownCloud. - -#### User Interface - -It’s safe to consider that the user interface offered by Nextcloud and ownCloud is very similar to each other. - -Yes, you might find some under-the-hood changes and maybe several subtle differences. But, overall, it looks/feels very much the same. - -#### Collaboration Features - -Unless you consider all the nitty gritty features that they both offer, fundamentally, it’s more or less the same. - -You can manage tasks, upload files, have a calendar, and do a lot of basic collaboration activities in both Nextcloud and ownCloud. - -#### Self-hosting Option - -It’s quite obvious — but just for your information, you can easily deploy either of them (Nextcloud and ownCloud) on your own server without opting for enterprise services. - -Use a cloud service like Linode or [DigitalOcean][8]. They even have one-click installer option to deploy a full-fledged Nextcloud or ownCloud server in minutes. - -#### Cross-platform support - -Both ownCloud and Nextcloud offers support for desktop clients and mobile apps (iOS & Android) to enhance the convenience of collaboration activities. - -So, you should be good to go with either of them if you’re looking for cross-platform support for yourself. - -### Nextcloud vs ownCloud: Key Differences - -Now that you are aware of the similarities, let’s see how Nextcloud and ownCloud are different. - -#### License Differences - -For most of the users, being a truly open-source solution matters a lot. And, that is why it is important to know the license a service comes under. - -ownCloud offers the standard edition (or the community edition) under the [AGPLv3 license][9] but the enterprise edition comes under [ownCloud’s commercial license][10]. - -While Nextcloud’s both enterprise and community editions come under the **APGPLv3 license.** - -So, depending on what you’re looking for, you need to make a choice here. - -#### Exclusive Features - -Sometimes it’s a deal breaker or a selling point to have a set of enterprise-exclusive features on a service. - -So, when I looked around, I found out that ownCloud does offer a set of [exclusive features][11] only for the premium subscribers. - -On the other hand, Nextcloud offers the complete set of features for both community and enterprise editions and the premium subscription only includes support or technical help for enterprise deployments. - -#### Documentation - -![Owncloud Documentation][12] - -Documentation is a very important part of a product/service like ownCloud and Nextcloud where a lot of users manage the instances themselves. - -Of course, depending on your technical expertise and preferences, you might find any of the documentations to be better than the other. - -![Nextcloud Documentation][13] - -However, in our case, [Avimanyu Bandyopadhyay][14] (Research Engineer at It’s FOSS) felt that [ownCloud’s documentation][15] is more useful and easier to follow when compared to [Nextcloud’s documentation][16]. - -_ownCloud has provided a ready-to-deploy configuration file for enterprise use at the bottom of its docker documentation page. But, Nextcloud has kept it separately on GitHub – which might be a little inconvenient_ _to find_. - -So, Nexcloud’s clarity on the documentation part could definitely improve. - -#### Pricing Plans (for enterprise edition) - -No matter how a good a service is — the pricing plans always influences the final decision for enterprises to choose a solution that suits their requirements within a budget. - -If we compare the pricing plans of [Nextcloud][17] and [ownCloud][18], you will notice that ownCloud starts offering enterprise services at **$3,600 for a team of 50 users**. - -In contrast, Nextcloud’s enterprise services **start at €1900 (which is roughly $2050)** for a team of 50 users. - -Of course, it all comes down to your preferences on what exactly are you looking for. - -#### App Marketplace - -![Nextcloud Marketplace][19] - -The availability of apps to extend the functionality of Nextcloud or ownCloud plays an important role to help you choose the best for your use-case.T - -Theoretically, you should find a bunch of useful [apps on Nextcloud][20] and [ownCloud’s marketplace][21]. - -However, you might find a few things missing on ownCloud’s app marketplace like Kanban styled board [Deck][22] and [W2G2][23] (File/Folder locking app). - -![Owncloud Marketplace][24] - -At least, depending on what I look for on a collaboration platform — I couldn’t find anything similar on ownCloud. - -Similarly, I might have missed something that’s available on ownCloud but not on Nextcloud. So, this should be one of your primary factors to consider before deploying ownCloud or Nextcloud for yourself or for your enterprise. - -#### Potential Issues or Bugs - -It’s obvious that both Nextcloud and ownCloud can have their own share of issues. So, if you’re going to self-host either of them, you should check out their GitHub pages to scroll through the active issues. - - * [Nextcloud GitHub][25] - * [ownCloud GitHub][26] - - - -For instance, while writing this article, Nextcloud has an active issue where the [files in a sub-folder of an encrypted folder are not encrypted][27]. Similarly, ownCloud also has a bug with [syncing the files when the user hits the reload button][28]. - -Of course, these are just examples that I took from their list of issues. But, you should keep an eye on some active issues before deploying it yourself that could ultimately help you decide what to choose. - -### So, which one do you choose? Nextcloud or ownCloud? - -Now that you’ve known about what’s different and what’s similar between Nextcloud and ownCloud — it should be slightly easier to choose one. - -However, given the potential of both the services and the number of add-ons they offer, I could have missed a few points here. So, I’d recommend you to go through the documentations for each of them for enterprise-use. For personal usage, you can choose either Nextcloud or ownCloud as per your preferences. - -At It’s FOSS, we [use Nextcloud][29] for storing files, task management and recently for collaborating on documentation. - -What do you think? Nextcloud or ownCloud? Do share your thoughts in the comment section. - --------------------------------------------------------------------------------- - -via: https://itsfoss.com/nextcloud-vs-owncloud/ - -作者:[Ankush Das][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://itsfoss.com/author/ankush/ -[b]: https://github.com/lujun9972 -[1]: https://nextcloud.com/ -[2]: https://owncloud.com/ -[3]: https://en.wikipedia.org/wiki/Frank_Karlitschek -[4]: https://dot.kde.org/2010/01/21/camp-kde-2010-continues-more-talks -[5]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/05/ownCloud-screenshot.jpg?ssl=1 -[6]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/05/nextcloud-screenshot.jpg?ssl=1 -[7]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/06/Nextcloud-vs-OwnCloud-itsfoss.jpg?ssl=1 -[8]: https://itsfoss.com/recommends/digital-ocean/ -[9]: https://www.gnu.org/licenses/agpl-3.0.en.html -[10]: https://owncloud.com/licenses/owncloud-commercial/ -[11]: https://owncloud.com/enterprise-edition/ -[12]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/05/owncloud-documentation.jpg?ssl=1 -[13]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/05/nextcloud-documentation.jpg?ssl=1 -[14]: https://itsfoss.com/author/avimanyu/ -[15]: https://doc.owncloud.org/server/10.4/ -[16]: https://docs.nextcloud.com/ -[17]: https://nextcloud.com/pricing/ -[18]: https://owncloud.com/pricing/ -[19]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/05/nextcloud-marketplace.jpg?ssl=1 -[20]: https://apps.nextcloud.com/ -[21]: https://marketplace.owncloud.com -[22]: https://apps.nextcloud.com/apps/deck -[23]: https://apps.nextcloud.com/apps/w2g2 -[24]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/05/owncloud-marketplace.jpg?ssl=1 -[25]: https://github.com/nextcloud -[26]: https://github.com/owncloud -[27]: https://github.com/nextcloud/desktop/issues/774 -[28]: https://github.com/owncloud/core/issues/37170 -[29]: https://itsfoss.com/nextcloud/ diff --git a/sources/tech/20200612 Fedora 32- Simple Local File-Sharing with Samba.md b/sources/tech/20200612 Fedora 32- Simple Local File-Sharing with Samba.md deleted file mode 100644 index 47263e741c..0000000000 --- a/sources/tech/20200612 Fedora 32- Simple Local File-Sharing with Samba.md +++ /dev/null @@ -1,488 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Fedora 32: Simple Local File-Sharing with Samba) -[#]: via: (https://fedoramagazine.org/fedora-32-simple-local-file-sharing-with-samba/) -[#]: author: (da2ce7 https://fedoramagazine.org/author/da2ce7/) - -Fedora 32: Simple Local File-Sharing with Samba -====== - -![][1] - -Sharing files with Fedora 32 using Samba is cross-platform, convenient, reliable, and performant. - -### What is ‘Samba’? - -[Samba][2] is a high-quality implementation of [Server Message Block protocol (SMB)][3]. Originally developed by Microsoft for connecting windows computers together via local-area-networks, it is now extensively used for internal network communications. - -Apple used to maintain it’s own independent file sharing called “[Apple Filing Protocol (**AFP**)][4]“, however in [recent times][5], it also has also switched to SMB. - -**In this guide we provide the minimal instructions to enable:** - - * Public Folder Sharing (Both Read Only and Read Write) - * User Home Folder Access - - - -``` -Note about this guide: The convention '~]$' for a local user command prompt, and '~]#' for a super user prompt will be used. -``` - -### Public Sharing Folder - -Having a shared public place where authenticated users on an internal network can access files, or even modify and change files if they are given permission, can be very convenient. This part of the guide walks through the process of setting up a shared folder, ready for sharing with Samba. - -``` -Please Note: This guide assumes the public sharing folder is on a Modern Linux Filesystem; other filesystems such as NTFS or FAT32 will not work. Samba uses POSIX Access Control Lists (ACLs). - -For those who wish to learn more about Access Control Lists, please consider reading the documentation: "Red Hat Enterprise Linux 7: System Administrator's Guide: Chapter 5. Access Control Lists", as it likewise applies to Fedora 32. - -In General, this is only an issue for anyone who wishes to share a drive or filesystem that was created outside of the normal Fedora Installation process. (such as a external hard drive). - -It is possible for Samba to share filesystem paths that do not support POSIX ACLs, however this is out of the scope of this guide. -``` - -#### Create Folder - -For this guide the _**/srv/public/**_ folder for sharing will be used. - -> The _/srv/_ directory contains site-specific data served by a Red Hat Enterprise Linux system. This directory gives users the location of data files for a particular service, such as FTP, WWW, or CVS. Data that only pertains to a specific user should go in the _/home/_ directory. -> -> [Red Hat Enterprise Linux 7, Storage Administration Guide: Chapter 2. File System Structure and Maintenance: 2.1.1.8. The /srv/ Directory][6] - -``` -Make the Folder (will provide an error if the folder already exists). -~]# mkdir --verbose /srv/public - -Verify folder exists: -~]$ ls --directory /srv/public - -Expected Output: -/srv/public -``` - -#### Set Filesystem Security Context - -To have _read and write_ access to the public folder the _public_content_rw_t_ security context will be used for this guide. Those wanting _read only_ may use: _public_content_t_. - -> Label files and directories that have been created with the _public_content_rw_t_ type to share them with read and write permissions through vsftpd. Other services, such as Apache HTTP Server, Samba, and NFS, also have access to files labeled with this type. Remember that booleans for each service must be enabled before they can write to files labeled with this type. -> -> [Red Hat Enterprise Linux 7, SELinux User’s and Administrator’s Guide: Chapter 16. File Transfer Protocol: 16.1. Types: public_content_rw_t][7] - -Add _/srv/public_ as _“public_content_rw_t”_ in the system’s local filesystem security context customization registry: - -``` -Add new security filesystem security context: -~]# semanage fcontext --add --type public_content_rw_t "/srv/public(/.*)?" - -Verifiy new security filesystem security context: -~]# semanage fcontext --locallist --list - -Expected Output: (should include) -/srv/public(/.*)? all files system_u:object_r:public_content_rw_t:s0 -``` - -Now that the folder has been added to the local system’s filesystem security context registry; The **restorecon** command can be used to ‘restore’ the context to the folder: - -``` -Restore security context to the /srv/public folder: -$~]# restorecon -Rv /srv/public - -Verify security context was correctly applied: -~]$ ls --directory --context /srv/public/ - -Expected Output: -unconfined_u:object_r:public_content_rw_t:s0 /srv/public/ -``` - -#### User Permissions - -##### Creating the Sharing Groups - -To allow a user to either have _read only_, or _read and write_ accesses to the public share folder create two new groups that govern these privileges: _public_readonly_ and _public_readwrite_. - -User accounts can be granted access to _read only_, or _read and write_ by adding their account to the respective group (and allow login via Samba creating a smb password). This process is demonstrated in the section: “Test Public Sharing (localhost)”. - -``` -Create the public_readonly and public_readwrite groups: -~]# groupadd public_readonly -~]# groupadd public_readwrite - -Verify successful creation of groups: -~]$ getent group public_readonly public_readwrite - -Expected Output: (Note: x:1...: number will probability differ on your System) -public_readonly:x:1009: -public_readwrite:x:1010: -``` - -##### Set Permissions - -Now set the appropriate user permissions to the public shared folder: - -``` -Set User and Group Permissions for Folder: -~]# chmod --verbose 2700 /srv/public -~]# setfacl -m group:public_readonly:r-x /srv/public -~]# setfacl -m default:group:public_readonly:r-x /srv/public -~]# setfacl -m group:public_readwrite:rwx /srv/public -~]# setfacl -m default:group:public_readwrite:rwx /srv/public - -Verify user permissions have been correctly applied: -~]$ getfacl --absolute-names /srv/public - -Expected Output: -file: /srv/public -owner: root -group: root -flags: -s- -user::rwx -group::--- -group:public_readonly:r-x -group:public_readwrite:rwx -mask::rwx -other::--- -default:user::rwx -default:group::--- -default:group:public_readonly:r-x -default:group:public_readwrite:rwx -default:mask::rwx -default:other::--- -``` - -### Samba - -#### Installation - -``` -~]# dnf install samba -``` - -#### Hostname (systemwide) - -Samba will use the name of the computer when sharing files; it is good to set a hostname so that the computer can be found easily on the local network. - -``` -View Your Current Hostname: -~]$ hostnamectl status -``` - -If you wish to change your hostname to something more descriptive, use the command: - -``` -Modify your system's hostname (example): -~]# hostnamectl set-hostname "simple-samba-server" -``` - -``` -For a more complete overview of the hostnamectl command, please read the previous Fedora Magazine Article: "How to set the hostname on Fedora". -``` - -#### Firewall - -Configuring your firewall is a complex and involved task. This guide will just have the most minimal manipulation of the firewall to enable Samba to pass through. - -``` -For those who are interested in learning more about configuring firewalls; please consider reading the documentation: "Red Hat Enterprise Linux 8: Securing networks: Chapter 5. Using and configuring firewall", as it generally applies to Fedora 32 as well. -``` - -``` -Allow Samba access through the firewall: -~]# firewall-cmd --add-service=samba --permanent -~]# firewall-cmd --reload - -Verify Samba is included in your active firewall: -~]$ firewall-cmd --list-services - -Output (should include): -samba -``` - -#### Configuration - -##### Remove Default Configuration - -The stock configuration that is included with Fedora 32 is not required for this simple guide. In particular it includes support for sharing printers with Samba. - -For this guide make a backup of the default configuration and create a new configuration file from scratch. - -``` -Create a backup copy of the existing Samba Configuration: -~]# cp --verbose --no-clobber /etc/samba/smb.conf /etc/samba/smb.conf.fedora0 - -Empty the configuration file: -~]# > /etc/samba/smb.conf -``` - -##### Samba Configuration - -``` -Please Note: This configuration file does not contain any global definitions; the defaults provided by Samba are good for purposes of this guide. -``` - -``` -Edit the Samba Configuration File with Vim: -~]# vim /etc/samba/smb.conf -``` - -Add the following to _/etc/samba/smb.conf_ file: - -``` -# smb.conf - Samba Configuration File - -# The name of the share is in square brackets [], -# this will be shared as //hostname/sharename - -# There are a three exceptions: -# the [global] section; -# the [homes] section, that is dynamically set to the username; -# the [printers] section, same as [homes], but for printers. - -# path: the physical filesystem path (or device) -# comment: a label on the share, seen on the network. -# read only: disable writing, defaults to true. - -# For a full list of configuration options, -# please read the manual: "man smb.conf". - -[global] - -[public] -path = /srv/public -comment = Public Folder -read only = No -``` - -#### Write Permission - -By default Samba is not granted permission to modify any file of the system. Modify system’s security configuration to allow Samba to modify any filesystem path that has the security context of _public_content_rw_t_. - -For convenience, Fedora has a built-in SELinux Boolean for this purpose called: _smbd_anon_write_, setting this to _true_ will enable Samba to write in any filesystem path that has been set to the security context of _public_content_rw_t_. - -For those who are wishing Samba only have a read-only access to their public sharing folder, they may choose skip this step and not set this boolean. - -``` -There are many more SELinux boolean that are available for Samba. For those who are interested, please read the documentation: "Red Hat Enterprise Linux 7: SELinux User's and Administrator's Guide: 15.3. Samba Booleans", it also apply to Fedora 32 without any adaptation. -``` - -``` -Set SELinux Boolean allowing Samba to write to filesystem paths set with the security context public_content_rw_t: -~]# setsebool -P smbd_anon_write=1 - -Verify bool has been correctly set: -$ getsebool smbd_anon_write - -Expected Output: -smbd_anon_write --> on -``` - -### Samba Services - -The Samba service is divided into two parts that we need to start. - -#### Samba ‘smb’ Service - -The Samba “Server Message Block” (SMB) services is for sharing files and printers over the local network. - -Manual: “[smbd – server to provide SMB/CIFS services to clients][8]“ - -#### Enable and Start Services - -``` -For those who are interested in learning more about configuring, enabling, disabling, and managing services, please consider studying the documentation: "Red Hat Enterprise Linux 7: System Administrator's Guide: 10.2. Managing System Services". -``` - -``` -Enable and start smb and nmb services: -~]# systemctl enable smb.service -~]# systemctl start smb.service - -Verify smb service: -~]# systemctl status smb.service -``` - -#### Test Public Sharing (localhost) - -To demonstrate allowing and removing access to the public shared folder, create a new user called _samba_test_user_, this user will be granted permissions first to read the public folder, and then access to read and write the public folder. - -The same process demonstrated here can be used to grant access to your public shared folder to other users of your computer. - -The _samba_test_user_ will be created as a locked user account, disallowing normal login to the computer. - -``` -Create 'samba_test_user', and lock the account. -~]# useradd samba_test_user -~]# passwd --lock samba_test_user - -Set a Samba Password for this Test User (such as 'test'): -~]# smbpasswd -a samba_test_user -``` - -##### Test Read Only access to the Public Share: - -``` -Add samba_test_user to the public_readonly group: -~]# gpasswd --add samba_test_user public_readonly - -Login to the local Samba Service (public folder): -~]$ smbclient --user=samba_test_user //localhost/public - -First, the ls command should succeed, -Second, the mkdir command should not work, -and finally, exit: -smb: \> ls -smb: \> mkdir error -smb: \> exit - -Remove samba_test_user from the public_readonly group: -gpasswd --delete samba_test_user public_readonly -``` - -##### Test Read and Write access to the Public Share: - -``` -Add samba_test_user to the public_readwrite group: -~]# gpasswd --add samba_test_user public_readwrite - -Login to the local Samba Service (public folder): -~]$ smbclient --user=samba_test_user //localhost/public - -First, the ls command should succeed, -Second, the mkdir command should work, -Third, the rmdir command should work, -and finally, exit: -smb: \> ls -smb: \> mkdir success -smb: \> rmdir success -smb: \> exit - -Remove samba_test_user from the public_readwrite group: -~]# gpasswd --delete samba_test_user public_readwrite -``` - -After testing is completed, for security, disable the **samba_test_user**‘s ability to login in via samba. - -``` -Disable samba_test_user login via samba: -~]# smbpasswd -d samba_test_user -``` - -### Home Folder Sharing - -In this last section of the guide; Samba will be configured to share a user home folder. - -For example: If the user bob has been registered with _smbpasswd_, bob’s home directory _/home/bob_, would become the share _//server-name/bob_. - -This share will only be available for bob, and no other users. - -``` -This is a very convenient way of accessing your own local files; however naturally it carries at a security risk. -``` - -#### Setup Home Folder Sharing - -##### Give Samba Permission for Public Folder Sharing - -``` -Set SELinux Boolean allowing Samba to read and write to home folders: -~]# setsebool -P samba_enable_home_dirs=1 - -Verify bool has been correctly set: -$ getsebool samba_enable_home_dirs - -Expected Output: -samba_enable_home_dirs --> on -``` - -##### Add Home Sharing to the Samba Configuration - -**Append the following to the systems smb.conf file:** - -``` -# The home folder dynamically links to the user home. - -# If 'bob' user uses Samba: -# The homes section is used as the template for a new virtual share: - -# [homes] -# ... (various options) - -# A virtual section for 'bob' is made: -# Share is modified: [homes] -> [bob] -# Path is added: path = /home/bob -# Any option within the [homes] section is appended. - -# [bob] -# path = /home/bob -# ... (copy of various options) - - -# here is our share, -# same as is included in the Fedora default configuration. - -[homes] - comment = Home Directories - valid users = %S, %D%w%S - browseable = No - read only = No - inherit acls = Yes -``` - -##### Reload Samba Configuration - -``` -Tell Samba to reload it's configuration: -~]# smbcontrol all reload-config -``` - -#### Test Home Directory Sharing - -``` -Switch to samba_test_user and create a folder in it's home directory: -~]# su samba_test_user -samba_test_user:~]$ cd ~ -samba_test_user:~]$ mkdir --verbose test_folder -samba_test_user:~]$ exit - -Enable samba_test_user to login via Samba: -~]# smbpasswd -e samba_test_user - -Login to the local Samba Service (samba_test_user home folder): -$ smbclient --user=samba_test_user //localhost/samba_test_user - -Test (all commands should complete without error): -smb: \> ls -smb: \> ls test_folder -smb: \> rmdir test_folder -smb: \> mkdir home_success -smb: \> rmdir home_success -smb: \> exit - -Disable samba_test_user from login in via Samba: -~]# smbpasswd -d samba_test_user -``` - --------------------------------------------------------------------------------- - -via: https://fedoramagazine.org/fedora-32-simple-local-file-sharing-with-samba/ - -作者:[da2ce7][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://fedoramagazine.org/author/da2ce7/ -[b]: https://github.com/lujun9972 -[1]: https://fedoramagazine.org/wp-content/uploads/2020/06/sambabasics-816x346.png -[2]: https://www.samba.org/samba/ -[3]: https://en.wikipedia.org/wiki/Server_Message_Block -[4]: https://en.wikipedia.org/wiki/Apple_Filing_Protocol -[5]: https://appleinsider.com/articles/13/06/11/apple-shifts-from-afp-file-sharing-to-smb2-in-os-x-109-mavericks -[6]: https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/storage_administration_guide/ch-filesystem#s3-filesystem-srv -[7]: https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/selinux_users_and_administrators_guide/chap-managing_confined_services-file_transfer_protocol#sect-Managing_Confined_Services-File_Transfer_Protocol-Types -[8]: https://www.samba.org/samba/docs/current/man-html/smbd.8.html diff --git a/sources/tech/20200612 How to Install Opera Browser on Ubuntu -Easy Way.md b/sources/tech/20200612 How to Install Opera Browser on Ubuntu -Easy Way.md deleted file mode 100644 index 285a3a8e30..0000000000 --- a/sources/tech/20200612 How to Install Opera Browser on Ubuntu -Easy Way.md +++ /dev/null @@ -1,149 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (How to Install Opera Browser on Ubuntu [Easy Way]) -[#]: via: (https://itsfoss.com/install-opera-ubuntu/) -[#]: author: (Abhishek Prakash https://itsfoss.com/author/abhishek/) - -How to Install Opera Browser on Ubuntu [Easy Way] -====== - -_**Learn how to install Opera browser easily and safely on Ubuntu and Debian based distributions.**_ - -[Opera browser][1] was among the first few browsers to have a speed dial feature for quickly accessing most visited websites from the new tab. - -Opera still offers several interesting features such as a free VPN, ad-blocker, social media messengers in the sidebar, battery saver, grouping tabs in workspaces etc. - -Personally, I do not use Opera. It is not open source. It’s [so-called free-VPN is not that good][2] (it’s hardly even a VPN). After [its acquisition by a Chinese group][3], transparency took another hit. It [collects a vast amount of data][4], same as Alibaba’s UC Browser. - -Anyway, I am not here to make a case against Opera. If you want to install and use Opera on Ubuntu, let me show you how to do that easily and safely. - -Non-FOSS alert! - -Opera browser is not open source. It is covered here because it is available on Linux and the article’s focus is on Linux. - -### Installing Opera browser on Ubuntu - -Installing Opera Browser in Ubuntu and Debian-based distributions is as simple as installing the DEB file from its download page and double-clicking on it. - -Go to [Opera’s download page][5] and click on Download button to download the .DEB installer file. - -![Download Opera Browser][6] - -Once you have downloaded it, double-click on it to [install the application from deb file][7]. In Ubuntu 20.04, you may have to [right click and select “Open With Software” option][8]. - -It will open Opera in Software Center and you can just lick on the install button to install Opera. - -![][9] - -The good thing about this method is that it automatically adds an entry in the repository list. This way, you’ll get all the future updates to the Opera browser with the regular system updates. - -![Opera source added to repository list to provide you regular updates][10] - -This is same as [installing Google Chrome on Ubuntu][11] as an entry is adding for Chrome to provide you regular updates. - -See, how easy it was to install Opera? - -#### How to remove Opera browser - -You can look for the installed applications in the software center and uninstall Opera from there. - -![Remove Opera from the Software Center][12] - -You may also use terminal to remove it in this fashion: - -``` -sudo apt remove opera-stable -``` - -You may also choose to remove the additional Opera repository added in the sources list. - -![Remove Opera Repository][13] - -Installing Opera browser via command line (for intermediate to expert users) - -Installing Opera browser graphically as described above is simplest and easiest method. If you want to take the command line route, you can do that as well. - -First, make sure to [install Curl on Ubuntu][14]: - -``` -sudo apt install curl -``` - -Download and add the Opera repository key: - -``` -curl https://deb.opera.com/archive.key | sudo apt-key add - -``` - -Now add the Opera repository in your sources list directory (not file): - -``` -echo deb https://deb.opera.com/opera-stable/ stable non-free | sudo tee /etc/apt/sources.list.d/opera.list -``` - -Update the package cache so that your system is aware of the packages available by the newly added repository: - -``` -sudo apt update -``` - -Finally, install the opera-stable package to install Opera. - -``` -sudo apt install opera-stable -``` - -During the installation, you’ll be prompted for adding Opera repository to sources list. Select NO because you already did that. - -To remove Opera browser installed this way, you should use the following commands one by one: - -``` -sudo apt remove opera-stable -sudo rm -f /etc/apt/sources.list.d/opera.list -``` - -#### Opera as Snap - -Opera browser is also available as a snap package officially. If you have [Snap support enabled in your Linux distribution][15], you may install Opera via Snap: - -``` -sudo snap install opera -``` - -**Conclusion** - -One of It’s FOSS readers contacted me with a repository issue that was caused by the incorrect Opera browser installation. - -I had to write this straightforward tutorial because some other websites on the internet are suggesting methods with unnecessarily complicated commands that might end up with a corrupt sources.list. I do hope it helps new Linux users. - --------------------------------------------------------------------------------- - -via: https://itsfoss.com/install-opera-ubuntu/ - -作者:[Abhishek Prakash][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://itsfoss.com/author/abhishek/ -[b]: https://github.com/lujun9972 -[1]: https://www.opera.com/hi -[2]: https://www.tomsguide.com/us/opera-vpn,review-4496.html -[3]: https://www.nytimes.com/2016/02/11/business/dealbook/china-opera-kunlun-qihoo-golden-brick.html -[4]: https://restoreprivacy.com/secure-browser/ -[5]: https://www.opera.com/hi/computer/opera -[6]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/06/opera-browser-download.png?ssl=1 -[7]: https://itsfoss.com/install-deb-files-ubuntu/ -[8]: https://itsfoss.com/cant-install-deb-file-ubuntu/ -[9]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/06/install-opera-ubuntu.png?ssl=1 -[10]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/06/opera-source-added.png?ssl=1 -[11]: https://itsfoss.com/install-chrome-ubuntu/ -[12]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/06/remove-opera-browser-ubuntu.png?ssl=1 -[13]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/06/remove-opera-repository.png?ssl=1 -[14]: https://itsfoss.com/install-curl-ubuntu/ -[15]: https://itsfoss.com/install-snap-linux/ diff --git a/sources/tech/20200613 How to Use Microsoft OneDrive in Linux With Rclone Open-Source Tool -For Intermediate to Expert Users.md b/sources/tech/20200613 How to Use Microsoft OneDrive in Linux With Rclone Open-Source Tool -For Intermediate to Expert Users.md deleted file mode 100644 index c39f2e2745..0000000000 --- a/sources/tech/20200613 How to Use Microsoft OneDrive in Linux With Rclone Open-Source Tool -For Intermediate to Expert Users.md +++ /dev/null @@ -1,194 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (How to Use Microsoft OneDrive in Linux With Rclone Open-Source Tool [For Intermediate to Expert Users]) -[#]: via: (https://itsfoss.com/use-onedrive-linux-rclone/) -[#]: author: (Community https://itsfoss.com/author/itsfoss/) - -How to Use Microsoft OneDrive in Linux With Rclone Open-Source Tool [For Intermediate to Expert Users] -====== - -_**Brief: A step-by-step tutorial showing how to use the rclone command line tool to synchronize OneDrive in Linux.**_ - -There are [several cloud storage services available for Linux][1]. There is [Dropbox][2] that gives 2 GB of free space. You can also use [Mega][3] where you can get 15 GB of free storage. - -Microsoft’s own Cloud storage service, OneDrive gives 5 GB of free storage to any Microsoft account holder. The one major problem is that unlike Dropbox and Mega, Microsoft does not provide a desktop client for Linux. - -This means that you’ll have to resort to using web browser for accessing your files in OneDrive which is not very convinient. - -There is a hassle-free, GUI application [Insync][4] that lets you [use OneDrive on Linux easily][5]. But it’s a premium software and not everyone would like that. - -If you are not afraid of the Linux terminal, let me show you a command line tool rclone that you can use for synchronizing Microsoft OneDrive in Linux. - -![][6] - -### What is rclone? - -Rclone is an open source command line tool that enables you to synchronize a local Linux directory with various cloud storage services. - -With rclone, you can backup files to cloud storage, restore files from cloud storage, mirror cloud data, migrate data between cloud services, use multiple cloud storage as disk. - -You can use it with Google Drive, OneDrive, Nextcloud, Amazon S3 and over [40 such cloud services][7]. - -Rclone is an extensive command line tool and using it could be confusing with so many options. This is why I wrote this tutorial to show you how to use rclone with Microsoft OneDrive. - -### Sync Microsoft OneDrive in Linux with rclone - -Using Rclone in Linux is not that complicated but requires some patience and familiarity with the Linux terminal. You need to tweak the configuration a little to make it work. Let’s see how to do that. - -#### Step 1: Install Rclone - -I am [using Ubuntu 20.04][8] in this tutorial but you should be able to follow this tutorial in pretty much any Linux distribution. Just the rclone installation instruction could be different but the rest of steps remains the same. - -In Debian/Ubuntu based distributions use: - -``` -sudo apt install rclone -``` - -For Arch-based distributions, use: - -``` -sudo pacman -S rclone -``` - -For other distributions, please use your distribution’s package manager. - -#### Step 2: Adding new remote - -Once you have installed rclone successfully, you need to configure rclone. Enter the following command in the terminal: - -``` -rclone config -``` - -If it’s your first time using rclone, you have to add a new remote to rclone. Select ‘**n**‘ to add new remote. - -![Configuring Rclone][9] - -Now you have to enter the name of remote. You can enter any name here that matches the cloud service so that it is easy to identify. I am using ‘**onedrive**‘. - -![Configuring Rclone ][10] - -#### Step 3: Select cloud service you want to sync with rclone - -After entering name and hitting enter, you will see a list of cloud services like Google cloud storage, Box, One Drive and others. - -You have to enter the number of the service you want to use. In this case, it’s ‘One Drive’. Make sure you enter the correct number. - -![Selecting Cloud Service][11] - -As you don’t need to enter client ID or secret ID hit **Enter** twice. - -Next enter **‘N’** for selecting **no** for advanced configuration. Of course, if you want to configure something very specific, you can go ahead with **Y**. - -![Configuring OneDrive][12] - -When you’re asked for **‘Use auto config’**, press **Y**. - -#### Step 4: Login to OneDrive account - -When you enter ‘y’ and hit enter, your default browser will open and here you have to log into your Microsoft account. And if it asks for permission click on **‘yes’**. - -![One Drive Logging In][13] - -#### Step 5: Enter account type - -Now you have to select account type. For most of the users it will be the first one, **‘One drive Personal or business’**. I believe it is personal so go with 1. - -![][14] - -After that, you will get a list of ‘Drives’ associated with your account. So, for the most part, you need to select ‘0’ to select your drive and enter ‘**Y**‘ for yes in next step. - -![][15] - -It will ask for one last time if this configuration is okay? Hit **‘Y’** if it is. - -![][16] - -And then enter **‘q’** to exit the Rclone configuration menu. - -![][17] - -#### Step 5: Mounting OneDrive int file manager - -Create folder in your home directory where you will mount OneDrive. I will name the folder “OneDrive”. You can name it whatever you want, but please make sure you change the name to yours in the commands. - -[Create a new folder with mkdir command][18] in your home directory or wherever you want: - -``` -mkdir ~/OneDrive -``` - -Now you have to use the following command: - -``` -rclone --vfs-cache-mode writes mount "one drive": ~/OneDrive -``` - -In above command “one drive” is the name of the “remote”, so you should use the correct name there if yours is different. You can check the name of the “remote” in step 2 of this tutorial. - -![Mounting One Drive][19] - -This command will mount one drive in given location and will continue to run in terminal. When you stop the process with,`ctrl + c` the one drive will be unmounted. - -To mount one drive on startup, follow the next step below. - -#### Step 6: Mount One Drive on startup - -Every Linux distribution gives some way to manage startup application. I am using [Ubuntu’s Startup Application Preferences tool][20] here. - -Open “**Startup Applications**“. And click on “**Add**“. Now, in the command field, enter the following: - -``` -sh -c "rclone --vfs-cache-mode writes mount onedrive: ~/OneDrive" -``` - -![Mounting OneDrive On Startup][21] - -That’s it. Now, you can easily use OneDrive on Linux without any hiccups. - -As you can see, using OneDrive in Linux with rclone takes some effort. If you want an easy way out, get a GUI tool like [Insync][4]. and use OneDrive natively in Linux. - -I hope you find this tutorial helpful. If you have any questions or suggestion, we’ll be happy to help you out. - -### Sumeet - -Computer engineer, FOSS lover, lower level computing enthusiast. Believe in helping others and spreading knowledge. When I get off from computer (it rarely happens) I do painting, reading and watching movies/series. Love the work of Sir Arthur Conan Doyle, J. R. R. Tolkien and J. K. Rowling. BTW, I use Arch. - --------------------------------------------------------------------------------- - -via: https://itsfoss.com/use-onedrive-linux-rclone/ - -作者:[Community][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://itsfoss.com/author/itsfoss/ -[b]: https://github.com/lujun9972 -[1]: https://itsfoss.com/cloud-services-linux/ -[2]: https://www.dropbox.com/ -[3]: https://itsfoss.com/recommends/mega/ -[4]: https://itsfoss.com/recommends/insync/ -[5]: https://itsfoss.com/use-onedrive-on-linux/ -[6]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/06/sync-onedrive-in-linux-rclone.png?ssl=1 -[7]: https://rclone.org/#providers -[8]: https://itsfoss.com/things-to-do-after-installing-ubuntu-20-04/ -[9]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/06/Configuring-Rclone.png?resize=800%2C298&ssl=1 -[10]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/06/Configuring-Rclone-1.png?resize=800%2C303&ssl=1 -[11]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/06/Selecting-cloud-service.png?resize=800%2C416&ssl=1 -[12]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/06/Configuring-OneDrive-1.png?resize=800%2C416&ssl=1 -[13]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/06/One-Drive-logging-in.png?resize=800%2C432&ssl=1 -[14]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/06/Configuring-OneDrive-2.png?resize=800%2C430&ssl=1 -[15]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/06/Configuring-OneDrive-3.png?resize=800%2C428&ssl=1 -[16]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/06/Configuring-One-Drive.png?resize=800%2C426&ssl=1 -[17]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/06/Exiting-Rclone-Configuration.png?resize=800%2C255&ssl=1 -[18]: https://linuxhandbook.com/mkdir-command/ -[19]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/06/Mounting-one-drive-1.png?fit=800%2C432&ssl=1 -[20]: https://itsfoss.com/manage-startup-applications-ubuntu/ -[21]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/06/Mounting-OneDrive-on-startup.png?fit=800%2C499&ssl=1 diff --git a/sources/tech/20200613 Manjaro Linux Review- ‘Arch Linux for Human Beings- Provides Rolling Release for Every User.md b/sources/tech/20200613 Manjaro Linux Review- ‘Arch Linux for Human Beings- Provides Rolling Release for Every User.md deleted file mode 100644 index c0deeab7e4..0000000000 --- a/sources/tech/20200613 Manjaro Linux Review- ‘Arch Linux for Human Beings- Provides Rolling Release for Every User.md +++ /dev/null @@ -1,219 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Manjaro Linux Review: ‘Arch Linux for Human Beings’ Provides Rolling Release for Every User) -[#]: via: (https://itsfoss.com/manjaro-linux-review/) -[#]: author: (Dimitrios Savvopoulos https://itsfoss.com/author/dimitrios/) - -Manjaro Linux Review: ‘Arch Linux for Human Beings’ Provides Rolling Release for Every User -====== - -[Manjaro 20.0 Lysia][1] has been released lately. In this article, I’ll take a look at the features of [Manjaro Linux][2] in general, discuss [why people like Manjaro][3] and compare the performance of Cinnamon desktop with Linux Mint 19.3 Cinnamon edition. - -### Manjaro Linux: Why so popular? - -![Image Source][4] - -To every stereotype there is some element of truth. One of the main reasons that Manjaro is so popular has to do with its roots. Manjaro is based on Arch Linux and inherits many elements of [Arch Linux][5] but it is a very distinct project. - -Unlike Arch Linux, almost everything is pre-configured in Manjaro. This makes it one of the most [user-friendly Arch-based distributions][6]. A lot of new users get attracted to this idea and I can’t blame them. - -Will Manjaro then can be the new Ubuntu for a new comer? My answer is Yes! - -[Ubuntu][7] and [Canonical][8] will always have my utmost respect as it has a huge success on making Linux easily accessible to newcomers. - -Just as Ubuntu made “Linux for human beings”, Manjaro made “Arch Linux for human beings”. - -But his doesn’t mean Manjaro is a [Linux distribution for beginners][9] only. Manjaro can be suitable for both and experienced users. - -Let me go over some of the main features of Manjaro. - -#### Easy installation - -[Installing Arch Linux can be a nightmare][10] for many users. On the other hand, [installing Manjaro Linux][11] is easier thanks to the [Calamares][12] graphical installer. - -![Manjaro Linux graphical installer][13] - -If you want to take control in your own hands, you can use [Manjaro Architect][14]. It provides a terminal-based installer. It is still easier than installing directly through commands. - -![][15] - -#### Desktop environments and Window Managers of your choice - -Officially Manjaro Linux supports [Xfce desktop][16] as the default choice. The Xfce in Manjaro looks good thanks to the customization. Manjaro also offers GNOME and KDE Plasma variants. - -If that is not enough, Manjaro community maintains [Awesome][17], [Bspwm][18], [Budgie][19], [Cinnamon][20], [i3][21], LXDE, LXQt, [MATE][22] and [Openbox][23]. - -![Desktop flavors available via Manjaro Architect][24] - -#### X86 architecture is not a limitation for Manjaro - -You are not limited to [X86 architecture][25] with Manjaro as it is ARM architecture friendly. - -Images for [PineBook Pro][26], [Raspberry Pi][27], [Rock Pi][28] 4, Rock Pro 64, [Khadas Vim][29] 1 & 3 and [other single board computers][30] are available in Xfce and KDE Plasma flavors. - -#### Rolling release but not rolling blindly - -Manjaro is a stable bleeding edge rolling release and is claimed to be more tested than Arch Linux because it performs some [additional testing][31] before releasing the updates. - -![][32] - -#### **New** **hardware? One click and it’s done.** - -Manjaro comes with a [hardware detection tool][33] known as MHWD. If you need drivers for your hardware, just open it, click on “Auto Install” and wait until it’s finished. That’s it. - -![Manjaro hardware configuration GUI tool][34] - -#### **Ease to switch Linux kernels.** - -Power-users and people who need special features of the [Linux Kernel][35] that don’t come with the default one, can just switch to a different Kernel with one click. - - * **RT-Kernel** (Real Time) is suitable for a multimedia user and for applications real time features. - * **LTS kernel** is the way to go if stability your priority. - * **Latest kernel** has the latest features and supports the latest hardware. Did you get a recently introduced to the market graphics card? The newest kernel is for you. - - - -![Manjaro kernel GUI switch][36] - -Manjaro supports multiple installed Kernels at the same time. Just re-boot your system and make your selection in the boot menu. - -#### Access to the massive Arch User Repository (AUR) - -What doesn’t work so well with Ubuntu-based distributions is managing [Personal Package Archives (PPAs)][37]. A PPA is a repository for a single or several applications, usually from an independent developer. - -Managing PPAs can become troublesome. They should be purged as they can become abandoned and orphaned without notice. You need to reinstate them if you reinstall Ubuntu. - -If you use Manjaro, you also have access to the [Arch User Repository][38] (AUR). The [AUR is probably the largest repository][39] catering for any distribution. It’s certainly stocked with the freshest produce. - -#### Snap and Flatpack support in the Pamac software manager - -![Snap applications in Pamac][40] - -Pamac 9.4 series has enabled Snap and Flatpak support by default. You can now install snaps or flatpaks with Pamac in GUI or terminal and access an even [larger selection of the Linux applications][41]. - -#### Global set of mirrors - -No-matter your location Manjaro has a [great number of servers][42] which is known as mirrors and you can choose the closest available. - -Top tip! - -If you are a frequent traveler all you have to do is to open the terminal and run the following command: - -sudo pacman-mirrors –geoip && sudo pacman -Syyu - -This simple command will ping a list of mirrors for your country only, rating each one and reordering the list so the faster mirrors are at the top. Don’t forget to run the command once you get back home! - -#### ZFS filesystem support - -As mentioned previously, command line interface installer is called Manjaro Architect and if you are an experienced user there is a [guide to follow][14]. You can use [ZFS filesystem][43] as root in Manjaro 20.0 Lysia Architect. - -### Performance comparison of Manjaro 19 Cinnamon with Linux Mint 19.3 Cinnamon - -I am not an expert on performance comparison and other low-level stuff. So, please forgive me if you dislike this comparison. - -Manjaro feels snappier than Ubuntu and its derivatives. So, what can explain the speed benefits? -A possible explanation could be the RAM and active tasks usage on idle. - -Here are the stats for idle Manjaro Cinnamon. The idle memory usage is 577 MB. - -![htop running on Manjaro 19.0.2 – Cinnamon 4.4.8][44] - -Here are the stats for an idle Linux Mint Cinnamon. The idle memory usage is 656 MB. - -![htop running on Linux Mint 19.3 – Cinnamon 4.4.8][45] - -By running the below command you can [check the running services in Linux][46]: - -``` -systemctl list-unit-files --state=enabled --no-pager -``` - -The results on Manjaro: - -![Manjaro running services][47] - -The results on Linux Mint: - -![Linux Mint running services][48] - -Each of these services consume system resources, and more specifically system memory and kernel time. - -#### Conclusion - -Manjaro takes most of the risk out of the rolling model by delaying the release of new applications and features for several weeks. The rolling distribution, out-of-the-box Arch experience will win you over. - - * No-hassle experience - * Kernel management - * Superior packaging system - * Excellent hardware detection - * Fast & responsive - - - -Let me know your thoughts on Manjaro on the comments below and don’t forget to [subscribe to our weekly Linux newsletter][49]. - --------------------------------------------------------------------------------- - -via: https://itsfoss.com/manjaro-linux-review/ - -作者:[Dimitrios Savvopoulos][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://itsfoss.com/author/dimitrios/ -[b]: https://github.com/lujun9972 -[1]: https://itsfoss.com/manjaro-20-release/ -[2]: https://manjaro.org/ -[3]: https://itsfoss.com/why-use-manjaro-linux/ -[4]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/06/manjaro_wallpaper.jpg?ssl=1 -[5]: https://www.archlinux.org/ -[6]: https://itsfoss.com/arch-based-linux-distros/ -[7]: https://ubuntu.com/ -[8]: https://canonical.com/ -[9]: https://itsfoss.com/best-linux-beginners/ -[10]: https://itsfoss.com/install-arch-linux/ -[11]: https://itsfoss.com/install-manjaro-linux/ -[12]: https://calamares.io/ -[13]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2019/03/manjaro_install_installer_partition-1.png?resize=800%2C499&ssl=1 -[14]: https://itsfoss.com/manjaro-architect-review/ -[15]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2017/06/manjaro-architect-main.png?ssl=1 -[16]: https://www.xfce.org/ -[17]: https://awesomewm.org/ -[18]: https://github.com/baskerville/bspwm -[19]: https://github.com/solus-project/budgie-desktop -[20]: https://github.com/linuxmint/Cinnamon -[21]: https://i3wm.org/ -[22]: https://mate-desktop.org/ -[23]: http://openbox.org/wiki/Main_Page -[24]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2017/06/manjaro-architect-de.png?ssl=1 -[25]: https://www.computerhope.com/jargon/x/x86.htm -[26]: https://itsfoss.com/pinebook-pro/ -[27]: https://itsfoss.com/raspberrypi/ -[28]: https://rockpi.org/ -[29]: https://itsfoss.com/vim3l/ -[30]: https://itsfoss.com/raspberry-pi-alternatives/ -[31]: https://manjaro.org/features/fresh-and-stable/ -[32]: https://i1.wp.com/manjaro.org/img/features/repositories.png?ssl=1 -[33]: https://wiki.manjaro.org/index.php?title=Manjaro_Hardware_Detection -[34]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/04/hardware-detection.png?ssl=1 -[35]: https://itsfoss.com/find-which-kernel-version-is-running-in-ubuntu/ -[36]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/04/Manjaro-kernel-switch.png?ssl=1 -[37]: https://itsfoss.com/ppa-guide/ -[38]: https://aur.archlinux.org/ -[39]: https://itsfoss.com/aur-arch-linux/ -[40]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/04/snap-app-pacman.jpg?resize=800%2C489&ssl=1 -[41]: https://itsfoss.com/essential-linux-applications/ -[42]: https://wiki.manjaro.org/Pacman-mirrors#Purpose -[43]: https://itsfoss.com/what-is-zfs/ -[44]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/04/htop_manjaro_cinnamon.jpg?ssl=1 -[45]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/04/htop_mint.png?ssl=1 -[46]: https://itsfoss.com/start-stop-restart-services-linux/ -[47]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/04/Manjaro-cropped.png?ssl=1 -[48]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/04/Mint-cropped.png?ssl=1 -[49]: https://itsfoss.com/subscribe-to-newsletter/ diff --git a/sources/tech/20200615 My Linux Story- remixing distributions at 17 years old.md b/sources/tech/20200615 My Linux Story- remixing distributions at 17 years old.md deleted file mode 100644 index 1ea0af33af..0000000000 --- a/sources/tech/20200615 My Linux Story- remixing distributions at 17 years old.md +++ /dev/null @@ -1,65 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (My Linux Story: remixing distributions at 17 years old) -[#]: via: (https://opensource.com/article/20/6/linux-remix) -[#]: author: (Kai Lyons https://opensource.com/users/kailikeslinux) - -My Linux Story: remixing distributions at 17 years old -====== -Open source and Linux create an environment ripe for hands-on learning -and experimentation, and it's never too early to start. -![Person programming on a laptop on a building][1] - -The [Lumina desktop][2] was originally developed by iXSystems for TrueOS, which later became Project Trident. It's well-known as the BSD desktop environment but has been ported to Linux. It introduces desktop elements like a panel, system tray, and so on, to the Fluxbox window manager, and is highly portable. It's a good desktop, and while it's generally easy to install, there aren't many distributions offering it by default. - -I'm the sole contributor and maintainer to the Ubuntu Lumina remix. My work on the Ubuntu Lumina project has been a lengthy process, and much of it has been learning along the way. As of this writing, I'm 17 years old, but I've been a technology enthusiast since age six when a friend of mine helped me write my first ever "Hello, world" script. - -### My introduction to Linux - -Although I am a distribution developer, I haven't been on Linux all that long. I didn't start using Linux until 2018 when I first got into Fedora 29. My original reason for installing Linux was to build an operating system, and Linux taught me an important lesson—in open source, you can build upon the successful work of others. You can learn the components of the existing scaffolding, which grants you a substantial headstart in reaching your ultimate goal. - -My original plan was to write a custom kernel. Once I learned what a monumental task it was, I decided to redirect that enthusiasm to working with the Linux kernel for a while, since I ultimately wanted to make an operating system. - -I got started on Fedora using the Gnome desktop. I still couldn't tell you for sure how I got it to fit on a 1GB flash drive, but that's why Fedora 29 was my pick—I fell in love with Gnome 3 immediately, and [Gnome Boxes][3] was the first virtual machine I ever used. I've found many other desktops to love, too—Pantheon, Cinnamon, LXQt, and others. After testing FreeBSD for the first time only a short three months after finding Linux, I found Lumina. - -### My first operating system attempts - -My initial attempts to design my own distribution with Lumina as the default environment were mostly exercises in experimenting with tools. The tool I used most at first was [Linux-Live][4]. I never thought of working on an operating system from anything but the live-system. It actually wouldn't be until Ubuntu Lumina that I would even try to do it with an installed system. - -My first distribution had no name, and it was a [Linux From Scratch][5] (LFS) system. It taught me a lot, but in the end, it wasn't what I really wanted; it didn't even have a proper installer. - -My second through seventh tries were random assortments of mashing software together, and only one of them ever got "shipped." I don't remember the name of it, or even whether it worked, but it was something that I had made myself, and it showed me what was possible. While the end results weren't what I ultimately wanted, I still loved the process of making them. - -I spent time reading LFS, remixing Gentoo and Arch, made a couple of weird Debian tries, and finally decided to create an Ubuntu Cinnamon remix. I soon found out that Joshua Peisach had already made one. I didn't get far on my own remix; it never booted, so I abandoned the idea. With Joshua's encouragement, there were a few intermediate attempts at remixes (a failed attempt at Pantheon, and then i3) before I settled on concentrating on Lumina. - -### Lumina desktop on Linux - -My Lumina-based distribution is still in development, meaning it's usable but has several significant omissions. The goal of the project is to provide a comfortable and lightweight OS. The Lumina desktop environment doesn't have many tools compared to a full desktop environment, including those considered to be minimal, like LXQt. And while Lumina is a little clunky, it's about as lightweight as XFCE. - -While it's true that I'm the only contributor to the project, I have gotten a lot of help along the way. Advice from Martin Wimpress, Joshua Peisach, Rik Mills, Thomas Castleman, and many other incredible distribution developers has guided me through many a twist and turn on what could have been a discouraging learning curve. - -### Open source knowledge - -This is what remixing, and indeed, open source itself, is all about—learning and helping one another while making better technology. My work builds upon the work of other distribution maintainers, packagers, a BSD desktop, an ISO-Builder developed for Budgie, and the entire Linux community. There's no question in my mind that I wouldn't have a bootable OS to call my own and to share with others without Linux and open source. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/6/linux-remix - -作者:[Kai Lyons][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/kailikeslinux -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/computer_code_programming_laptop.jpg?itok=ormv35tV (Person programming on a laptop on a building) -[2]: https://opensource.com/article/19/12/linux-lumina-desktop -[3]: https://opensource.com/article/19/5/getting-started-gnome-boxes-virtualization -[4]: https://www.linuxliveusb.com/ -[5]: http://www.linuxfromscratch.org/ diff --git a/sources/tech/20200616 Hard lessons learned about Kubernetes garbage collection.md b/sources/tech/20200616 Hard lessons learned about Kubernetes garbage collection.md deleted file mode 100644 index dacb4d3798..0000000000 --- a/sources/tech/20200616 Hard lessons learned about Kubernetes garbage collection.md +++ /dev/null @@ -1,88 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Hard lessons learned about Kubernetes garbage collection) -[#]: via: (https://opensource.com/article/20/6/kubernetes-garbage-collection) -[#]: author: (Oleg Matskiv https://opensource.com/users/oleg-matskiv) - -Hard lessons learned about Kubernetes garbage collection -====== -Why I'll never skim Kubernetes documentation again. -![Ship captain sailing the Kubernetes seas][1] - -Some time ago, I learned an important Kubernetes lesson the hard way. The story begins with [Kubernetes Operators][2], which is a method of packaging, deploying, and managing a Kubernetes application. The thing I tripped up on was [garbage collection][3] in the cluster, which cleans up objects that no longer have an owner object (but more on that later). - -### The task - -Last year, the team I work on was assigned to develop a Kubernetes Operator. For most people on the team, this was their first experience with the [Operator SDK][4] (software development kit) and [Kubernetes controllers][5], which are the control loops that power Kubernetes. We all read some basic introductory information about Operator SDK and followed the [quickstart guide][6] for building an Operator in the Go programming language. We learned some basic principles and a few handy tricks, and we were eager to apply them. - -Our task was to develop an Operator that would install, configure, and ensure production readiness for a number of projects. The goal was to have automation for managing a fleet of instances with minimal manual work for our [site reliability engineering (SRE)][7] team. Not an easy task, but we liked the challenge and the technologies we could use, so we were moving fast and breaking some things along the way. - -### The bug - -Initially, we were chasing a proof of concept implementation, so we logged bugs with a plan to fix them later. - -![Decision-making matrix][8] - -([Davidjcmorris][9], [CC-BY-SA-4.0][10]) - -The bug I will describe fits perfectly into Quadrant II of this [Eisenhower Matrix][11] (as Stephen Covey espoused)—not urgent, but important. Very important actually—all the namespaces that our Operator created would sometimes terminate without any request from a user. It didn't happen very often, so we decided to fix it later. - -Eventually, I picked up this bug from our backlog and started looking for a root cause. The Operator definitely couldn't terminate the namespace, as we didn't have any Delete API calls written in the code at that point, which, in hindsight, was the first clue. I started my detective work by dialing up the logging on the [Kubernetes API server][12] and making sure the logs were being safely saved. Then I waited for the issue to happen again. - -Once the issue occurred in an environment I set up, I searched the logs for this combination of strings: `"requestURI":"/api/v1/namespaces/my-namespace"` \+ `"verb":"delete"`_._ - -From my search results, I found what was executing the namespace deletion: `"user":{"username":"system:serviceaccount:kube-system:generic-garbage-collector"`. - -Now I knew _how_ the namespaces were removed, but I didn't know _why_. I opened the Kubernetes [garbage collection documentation][3], but since I am not a patient man, I just skimmed through the basic information about the `ownerReference` field and continued thinking about why this was happening. - -We were using the `ownerReference` metadata field on the namespaces that we created. The owner was our own resource defined by the [custom resource API][13]. And when our custom resource was deleted, the associated namespaces that it owned through the `ownerReference` were deleted as well. This deletion of associated objects made the uninstallation step a breeze. - -I didn't see any problem with this, so I continued reading the logs for more clues. I noticed that the namespace would be removed when the `kube-controller-manager` pod restarted. The reason for the restart made sense to me: the `kube-controller-manager` pod runs on the master node, we only had one master node in our development cluster, and the load on that node was very high for the instance size we used. - -So I tried to reproduce the issue myself. I deleted the `kube-controller-manager` pod, a new one spun up, and I checked its logs. Once I saw some logs about garbage collection, I finally put two and two together and went back to the garbage collection docs. And there it was: - -> "**Note:** Cross-namespace owner references are disallowed by design. This means: 1) Namespace-scoped dependents can only specify owners in the same namespace, and owners that are cluster-scoped. 2) Cluster-scoped dependents can only specify cluster-scoped owners, but not namespace-scoped owners." - -Our custom resource was namespace-scoped, but the namespaces are cluster-scoped. And the Kubernetes API server creates namespaces even if the owner reference we use is disallowed by design. So the namespaces were created with the owner references, and then they had to be deleted since garbage collection follows the documented rules.  - -### The lessons learned - -The technical lesson I learned is simple: Don't use owner references in which a namespace-scoped resource owns a cluster-scoped resource or a resource in a different namespace. When you use these "disallowed by design" owner references, your Kubernetes resources will be deleted by the garbage-collection routine whenever the `kube-controller-manager pod` starts up. - -But the more important lesson I learned is _not to underestimate the documentation_. If I was more patient when I read the documentation the first time, I would have definitely saved myself some time. - -You might also think that we could have avoided this if we followed my advice back when the invalid owner reference was added to the codebase. But it turns out it was not documented yet. A [pull request][14] in February 2019 added this important note, long after Kubernetes was a well-established technology. - -I think this highlights the fact that there is always room for improvement in documentation. Let's do it together, starting with reading the guide to [contributing to Kubernetes docs][15]. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/6/kubernetes-garbage-collection - -作者:[Oleg Matskiv][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/oleg-matskiv -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/ship_captain_devops_kubernetes_steer.png?itok=LAHfIpek (Ship captain sailing the Kubernetes seas) -[2]: https://kubernetes.io/docs/concepts/extend-kubernetes/operator/ -[3]: https://kubernetes.io/docs/concepts/workloads/controllers/garbage-collection/ -[4]: https://sdk.operatorframework.io/ -[5]: https://kubernetes.io/docs/concepts/architecture/controller/ -[6]: https://sdk.operatorframework.io/docs/golang/quickstart/ -[7]: https://www.redhat.com/en/topics/devops/what-is-sre -[8]: https://opensource.com/sites/default/files/uploads/512px-7_habits_decision-making_matrix.png (Decision-making matrix) -[9]: https://commons.wikimedia.org/wiki/File:7_habits_decision-making_matrix.png -[10]: https://creativecommons.org/licenses/by-sa/4.0/ -[11]: https://en.wikipedia.org/wiki/Time_management#The_Eisenhower_Method -[12]: https://kubernetes.io/docs/reference/command-line-tools-reference/kube-apiserver/ -[13]: https://kubernetes.io/docs/concepts/extend-kubernetes/api-extension/custom-resources/ -[14]: https://github.com/kubernetes/website/pull/12543 -[15]: https://kubernetes.io/docs/contribute/ diff --git a/sources/tech/20200619 A little bit of plain Javascript can do a lot.md b/sources/tech/20200619 A little bit of plain Javascript can do a lot.md deleted file mode 100644 index ac36191038..0000000000 --- a/sources/tech/20200619 A little bit of plain Javascript can do a lot.md +++ /dev/null @@ -1,115 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (A little bit of plain Javascript can do a lot) -[#]: via: (https://jvns.ca/blog/2020/06/19/a-little-bit-of-plain-javascript-can-do-a-lot/) -[#]: author: (Julia Evans https://jvns.ca/) - -A little bit of plain Javascript can do a lot -====== - -I’ve never worked as a professional frontend developer, so even though I’ve been writing HTML/CSS/JS for 15 years for little side projects, all of the projects have been pretty small, sometimes I don’t write any Javascript for years in between, and I often don’t quite feel like I know what I’m doing. - -Partly because of that, I’ve leaned on libraries a lot! Ten years ago I used to use jQuery, and since maybe 2017 I’ve been using a lot of vue.js for my little Javascript projects (you can see a [little whack-a-mole game I made here as an intro to Vue][1]). - -But last week, for the first time in a while, I wrote some plain Javascript without a library and it was fun so I wanted to talk about it a bit! - -### experimenting with just plain Javascript - -I really like Vue. But last week when I started building , I had slightly different constraints than usual – I wanted to use the same HTML to generate both a PDF (with [Prince][2]) and to make an interactive version of the questions. - -I couldn’t really see how that would work with Vue (because Vue wants to create all the HTML itself), and because it was a small project I decided to try writing it in plain Javascript with no libraries – just write some HTML/CSS and add a single ``. - -I hadn’t done this in a while, and I learned a few things along the way that made it easier than I thought it would be when I started. - -### do almost everything by adding & removing CSS classes - -I decided to implement almost all of the UI by just adding & removing CSS classes, and using [CSS transitions][3] if I want to animate a transition. - -here’s a small example, where clicking the “next” question button adds the “done” class to the parent div. - -``` -div.querySelector('.next-question').onclick = function () { - show_next_row(); - this.parentElement.parentElement.classList.add('done'); -} -``` - -This worked pretty well. My CSS as always is a bit of a mess but it felt manageable. - -### add/remove CSS classes with `.classList` - -I started out by editing the classes like this: `x.className = 'new list of classes'`. That felt a bit messy though and I wondered if there was a better way. And there was! - -You can also add CSS classes like this: - -``` -let x = document.querySelector('div'); -x.classList.add('hi'); -x.classList.remove('hi'); -``` - -`element.classList.remove('hi')` is way cleaner than what I was doing before. - -### find elements with `document.querySelectorAll` - -When I started learning jQuery I remember thinking that if you wanted to easily find something in the DOM you had to use jQuery (like `$('.class')`). I just learned this week that you can actually write `document.querySelectorAll('.some-class')` instead, and then you don’t need to depend on any library! - -I got curious about when `querySelectorAll` was introduced. I Googled a tiny bit and it looks like the [Selectors API was built sometime between 2008 and 2013 – I found a [post from the jQuery author discussing the proposed implementation in 2008][4], and [a blog post from 2011][5] saying it was in all major browsers by then, so maybe it didn’t exist when I started using jQuery but it’s definitely been around for quite a while :) - -### set `.innerHTML` - -In one place I wanted to change a button’s HTML contents. Creating DOM elements with `document.createElement` is pretty annoying, so I tried to do that as little as possible and instead set `.innerHTML` to the HTML string I wanted: - -``` -button.innerHTML = `I learned something! - -`; -``` - -### scroll through the page with `.scrollIntoView` - -The last fun thing I learned about is `.scrollIntoView` – I wanted to scroll down to the next question automatically when someone clicked “next question”. Turns out this is just one line of code: - -``` -row.classList.add('revealed'); -row.scrollIntoView({behavior: 'smooth', block: 'center'}); -``` - -### another vanilla JS example: peekobot - -Another small example of a plain JS library I thought was nice is [peekobot][6], which is a little chatbot interface that’s 100 lines of JS/CSS. - -Looking at [its Javascript][7], it uses some similar patterns – a lot of `.classList.add`, some adding elements to the DOM, some `.querySelectorAll`. - -I learned from reading peekobot’s source about [.closest][8] which finds the closest ancestor that matches a given selector. That seems like it would be a nice way to get rid of some of the `.parentElement.parentElement` that I was writing in my Javascript, which felt a bit fragile. - -### plain Javascript can do a lot! - -I was pretty surprised by how much I could get done with just plain JS. I ended up writing about 50 lines of JS to do everything I wanted to do, plus a bit extra to collect some anonymous metrics about what folks were learning. - -As usual with my frontend posts, this isn’t meant to be Serious Frontend Engineering Advice – my goal is to be able to write little websites with less than 200 lines of Javascript that mostly work. If you are also flailing around in frontend land I hope this helps a bit! - --------------------------------------------------------------------------------- - -via: https://jvns.ca/blog/2020/06/19/a-little-bit-of-plain-javascript-can-do-a-lot/ - -作者:[Julia Evans][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://jvns.ca/ -[b]: https://github.com/lujun9972 -[1]: https://jvns.ca/blog/2017/06/26/vue-js-fun/ -[2]: https://www.princexml.com/ -[3]: https://3dtransforms.desandro.com/card-flip -[4]: https://johnresig.com/blog/thoughts-on-queryselectorall/ -[5]: https://tiffanybbrown.com/2011/08/12/meet-the-selectors-api/ -[6]: https://peekobot.github.io/peekobot/ -[7]: https://github.com/Peekobot/peekobot/blob/master/peekobot.js -[8]: https://developer.mozilla.org/en-US/docs/Web/API/Element/closest diff --git a/sources/tech/20200619 How to prepare to write your first Mycroft AI skill using Python.md b/sources/tech/20200619 How to prepare to write your first Mycroft AI skill using Python.md deleted file mode 100644 index 0dd35e3446..0000000000 --- a/sources/tech/20200619 How to prepare to write your first Mycroft AI skill using Python.md +++ /dev/null @@ -1,338 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (How to prepare to write your first Mycroft AI skill using Python) -[#]: via: (https://opensource.com/article/20/6/mycroft-voice-assistant-skill) -[#]: author: (Steve Ovens https://opensource.com/users/stratusss) - -How to prepare to write your first Mycroft AI skill using Python -====== -Planning is the essential first step in writing a skill and teaching -Mycroft how to do what you want it to do. -![A person looking at a phone][1] - -With the recent worldwide pandemic and stay-at-home orders, I have been looking for things to do to replace some of my usual activities. I started to update my home electronics setup and, as part of that, to delve into home automation. Some of my friends use Amazon's Alexa to turn lights on and off in their house, and that is appealing on some level. However, I am a privacy-conscious individual, and I was never really comfortable with devices from Google or Amazon listening to my family all the time (I'll ignore cellphones for the sake of this conversation). I have known about the open source voice assistant [Mycroft][2] for about four years, but due to early struggles with the project, I'd never investigated it too closely. The project has come a very long way since I first stumbled across it, and it checks a lot of boxes for me: - - * Self-hosted - * Easy onboarding (via Python) - * Open source - * Privacy-conscious - * Interactive chat channel - - - -In the [first article][3] in this series, I introduced Mycroft, and in the [second article][3], I touched upon the concept of skills in artificial intelligence. In its most basic form, a skill is a block of code that is executed to achieve the result desired for an intent. Intents attempt to determine _what_ you want, and a skill is the way Mycroft responds. If you can think of an outcome, there is probably a way to create a skill that makes it happen. - -At their heart, Mycroft skills are just Python programs. Generically, they have three or four sections: - - 1. The **import** section is where you load any Python modules required to accomplish the task. - 2. An optional **function** section contains snippets of code that are defined outside of the main class section. - 3. The **class** section is where all the magic happens. A class should always take the `MycroftSkill` as an argument. - 4. The **create_skill()** section is what Mycroft uses to load your skill. - - - -When I write a skill, I often start by writing a standard Python file to ensure my code does what I think it does. I do this mainly because the workflow that I am used to, including debugging tools, exists outside of the Mycroft ecosystem. Therefore, if I need to step through my code, I find it much more familiar to use my IDE ([PyCharm][4]) and its built-in tools, but this is a personal preference. - -All the code for this project can be found in my [GitLab repo][5]. - -### About intent parsers - -The skill in this project uses both the [Padatious][6] and [Adapt][7] intent parsers, which I described in my [previous][3] article. Why? First of all, this tutorial is meant to provide a concrete example of some of the features you might want to consider using in your own skill. Second, Padatious intents are very straightforward but do not support [regular expressions][8], while Adapt puts regex to good use. Also, Padatious intents aren't context-aware, which means that, while you could prompt the user for a response and then parse it following some decision-tree matrix, you might be better off using the Adapt intent parser with Mycroft's built-in context handler. Note that, by default, Mycroft assumes you are using the Padatious intent handler. Finally, it's good to note that Adapt is a keyword intent parser. This can make complex parsing cumbersome if you are not a regex ninja. (I am not.) - -## Implement the 3 T's - -Before you start writing a skill, consider the 3 T's: _Think things through_! Similar to when you're writing an outline for an essay, when you're starting to develop a skill, write down what you want your skill to do. - -This tutorial will step through writing a Mycroft skill to add items to the [OurGroceries][9] app (which I am not affiliated with). In truth, this skill was my wife's idea. She wanted an application she could use on her phone to manage her shopping lists. We tried almost a dozen apps to try to meet our individual needs—I needed an API or a way to easily interact with the backend, and she had a giant list of criteria, one of the most important was that it is easy to use from her phone. After she made her list of Must-haves, Nice-to-haves, and Wish-list items, we settled on OurGroceries. It does not have an API, but it does have a way to interact with it through JSON. There is even a [handy library][10] called `py-our-groceries` in PyPI (which I have contributed some small amount to). - -Once I had an objective and a target platform, I started to outline what the skill needed to do: - - 1. Login/authenticate - 2. Get a list of the current grocery lists - 3. Add item to a specific grocery list - 4. Add item to a category under a specific list - 5. Add a category (since OurGroceries allows items to be placed in categories) - - - -With this in mind, I started to sketch out the required Python. Here is what I came up with. - -## Create the Python sketch - -By reading the examples for the `py-our-groceries` library, I figured out I needed to import just two things: `asyncio` and `ourgroceries`. - -Simple enough. Next, I knew that I needed to authenticate with `username` and `password`, and I knew what tasks the program needed to do. So my sketch ended up looking like this: - - -``` -import asyncio -from ourgroceries import OurGroceries -import datetime -import json -import os - -USERNAME = "" -PASSWORD = "" -OG = OurGroceries(USERNAME, PASSWORD) - -def fetch_list_and_categories(): -    pass - -def return_category_id(): -    pass - -def add_to_my_list(): -    pass - -def add_category(): -    pass -``` - -I won't go into the full details of what makes this sketch tick, as that is outside the scope of this series. However, if you want, you can [view the working outline][11] in its entirety. - -Before you can begin programming, you need to have your username, password, and a list ID. The username and password are obvious. The list ID can be retrieved from the URL after clicking on the link, or more programmatically, you can use the Developer Tools for your browser of choice and inspect the objects. Here is what the Developer Tools looks like [in Firefox][12]: - -![CC BY-SA Steve Ovens][13] - -Once you have a list ID, log into OurGroceries and get a cookie. To do this, create an OurGroceries _object_ and then pass it into `asyncio`. While you are at it, you might as well define your list ID, as well: - - -``` -OG = OurGroceries(USERNAME, PASSWORD) -asyncio.run(OG.login()) -MY_LIST_ID = "a1kD7kvcMPnzr9del8XMFc" -``` - -For the purposes of this project, you need to define two object types to help organize your code: `groceries` and `categories`. The `fetch_list_and_categories` method is pretty straightforward: - - -``` -def fetch_list_and_categories(object_type=None): -    if object_type == "groceries": -        list_to_return = asyncio.run(OG.get_list_items(list_id=MY_LIST_ID)) -    elif object_type == "categories": -        list_to_return = asyncio.run(OG.get_category_items()) -    else: -        list_to_return = None -    return (list_to_return) -``` - -OurGroceries allows you to add more than one category or item with the same name. For example, if you already have "Meat" on your list and you add it again, you will see a category called "Meat (2)" (this number increments whenever you create a category with the same name). For us, this was undesirable behavior. We also wanted to avoid duplication as much as possible, so I made a rudimentary attempt at detecting plurals; for example, my code checks for both "Meat" and "Meats." I am sure there is a more intelligent way of performing these checks, but this example highlights some of the things you may want to think about as you progress. For brevity, I will omit these checks, so the `return_category_id` method looks something like this: - - -``` -def return_category_id(category_to_search_for, all_categories): -    category_to_search_for_lower = category_to_search_for.lower() -    category_id = None -    if len(all_categories['list']['items']) is not 0: -        for category_heading in all_categories['list']['items']: -            # Split the heading because if there is already a duplicate it -            # presents as "{{item}} (2)" -            category_heading_lowered = category_heading['value'].lower().split()[0] -            if category_to_search_for_lower == category_heading_lowered: -                category_id = category_heading['id'] -                break -    return(category_id) -``` - -To add an item to the list, you want to: - - 1. Check that the item does not already exist - 2. Obtain the category ID - 3. Add the item to the list under a specific category (if specified) - - - -The `add_to_my_list` method ends up something like this: - - -``` -def add_to_my_list(full_list, item_name, all_categories, category="uncategorized"): -    # check to make sure the object doesn't exist -    # The groceries live in my_full_list['list']['items'] -    # Start with the assumption that the food does not exist -    food_exists = False -    toggle_crossed_off = False -    category_lowered = category.lower() -    for food_item in full_list['list']['items']: -        if item_name in food_item['value']: -            print("Already exists") -            food_exists = True -    if not food_exists: -        category_id = return_category_id(category_lowered, all_categories) -        asyncio.run(OG.add_item_to_list(MY_LIST_ID, item_name, category_id)) -        print("Added item") -``` - -Finally, `add_category` runs the `asyncio` command to create a category if it does not already exist: - - -``` -def add_category(category_name, all_categories): -    category_id = return_category_id(category_name, all_categories) -    if category_id is None: -        asyncio.run(OG.create_category(category_name)) -        refresh_lists() -        print("Added Category") -    else: -        print("Category already exists") -``` - -You should now be able to test your sketch to make sure everything in each function works. Once you are satisfied with the sketch, you can move on to thinking about how to implement it in a Mycroft skill. - -## Plan the Mycroft skill - -You can apply the same principles you used to sketch out your Python to developing a Mycroft skill. The [official documentation][14] recommends using an interactive helper program called the Mycroft Skills Kit to set up a skill. `mycroft-msk create` asks you to: - - * Name your skill - * Enter some phrases commonly used to trigger your skill - * Identify what dialog Mycroft should respond with - * Create a skill description - * Pick an icon from `fontawesome.com/cheatsheet` - * Pick a color from `mycroft.ai/colors` or `color-hex.com` - * Define a category (or categories) where the skill belongs - * Specify the code's license - * State whether the skill will have dependencies - * Indicate whether you want to create a GitHub repo - - - -Here is a demonstration of how `mycroft-msk create` works: - -![mycroft-msk create working][15] - -(Steve Ovens, [CC BY-SA 4.0][16]) - -After you answer these questions, Mycroft creates the following structure under `mycroft-core/skills/`: - - -``` -├── __init__.py -├── locale -│   └── en-us -│       ├── ourgroceries.dialog -│       └── ourgroceries.intent -├── __pycache__ -│   └── __init__.cpython-35.pyc -├── README.md -├── settings.json -└── settingsmeta.yaml -``` - -You can ignore most of these files for now. I prefer to make sure my code is working before trying to get into Mycroft-specific troubleshooting. This way, if things go wrong later, you know it is related to how your Mycroft skill is constructed and not the code itself. As with the Python sketch, take a look at the outline that Mycroft created in `__init__.py`. - -All Mycroft skills should have an `__init__.py`. By convention, all code should go in this file, although if you are a skilled Python developer and know how this file works, you could choose to break your code out. - -Inside the file Mycroft created, you can see: - - -``` -from mycroft import MycroftSkill, intent_file_handler - -class OurGroceries(MycroftSkill): -    def __init__(self): -        MycroftSkill.__init__(self) - -    @intent_file_handler('ourgroceries.intent') -    def handle_test(self, message): -        self.speak_dialog('ourgroceries') - -def create_skill(): -    return OurGroceries() -``` - -In theory, this code will execute based on the trigger(s) you create during the `msk create` process. Mycroft first tries to find a file with the `.dialog` file extension that matches the argument passed to `selfspeak_dialog()`. In the example above, Mycroft will look for a file called `ourgroceries.dialog` and then say one of the phrases it finds there. Failing that, it will say the name of the file. I'll get more into this in a follow-up article about responses. If you want to try this process, feel free to explore the various input and output phrases you can come up with during skill creation. - -While the script is a great starting point, I prefer to think through the `__init__.py` on my own. As mentioned earlier, this skill will use both the Adapt and Padatious intent handlers, and I also want to demonstrate [conversational context handling][17] (which I'll get deeper into in the next article). So start by importing them: - - -``` -from mycroft import intent_file_handler, MycroftSkill, intent_handler -from mycroft.skills.context import adds_context, removes_context -``` - -In case you are wondering, the order you specify your import statements does not matter in Python. After the imports are done, look at the class structure. If you want to learn more about classes and their uses, [Real Python][18] has a great primer on the subject. - -As above, start by mocking up your code with its intended functionality. This section uses the same goals as the Python sketch, so go ahead and plug some of that in, this time adding some comments to help guide you: - - -``` -class OurGroceriesSkill(MycroftSkill): -    def __init__(self): -        MycroftSkill.__init__(self) -    -    # Mycroft should call this function directly when the user -    # asks to create a new item -    def create_item_on_list(self, message): -        pass -    -                # Mycroft should also call this function directly -    def create_shopping_list(self, message): -        pass -    -    # This is not called directly, but instead should be triggered -    # as part of context aware decisions -    def handle_dont_create_anyways_context(self): -        pass -                -    # This function is also part of the context aware decision tree -    def handle_create_anyways_context(self): -        pass -    -    -    def stop(self): -        pass -``` - -### The `__init__` and `initialize` methods - -A skill has a few "special" functions that you should know about. The `__init__(self)` method is called when the skill is first instantiated. In Python IDEs, variables that are declared outside of the `__init__` section will often cause warnings. Therefore, they are often used to declare variables or perform setup actions. However, while you can declare variables intended to match the skills settings file (more on this later), you cannot use the Mycroft methods (such as `self.settings.get)` to retrieve the values. It is generally not appropriate to attempt to make connections to the outside world from `__init__`. Also, the `__init__` function is considered optional within Mycroft. Most skills opt to have one, and it is considered the "Pythonic" way of doing things. - -The `initialize` method is called after the skill is fully constructed and registered with the system. It is used to perform any final setup for the skill, including accessing skill settings. It is optional, however, and I opted to create a function that gets the authentication information. I called it `_create_initial_grocery_connection`, if you are curious and want to look ahead. I will revisit these two special functions in the next article when I start walking through creating the skill code. - -Finally, there is a special function called `stop()`, which I didn't use. The stop method is called anytime a user says, "stop." If you have a long-running process or audio playback, this method is useful. - -## Wrapping up - -So you now have the outline of what you want to accomplish. This will definitely grow over time. As you develop your skill, you will discover new functionality that your skill will require to work optimally. - -Next time, I will talk about the types of intents you will use, how to set them up, and how to deal with regular expressions. I'll also explore the idea of [conversational contexts][17], which are used for getting feedback from the user. - -Do you have any comments, questions, or concerns? Leave a comment, visit me on Twitter [@linuxovens][19], or stop by [Mycroft skills chat channels][20]. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/6/mycroft-voice-assistant-skill - -作者:[Steve Ovens][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/stratusss -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/idea_innovation_mobile_phone.png?itok=RqVtvxkd (A person looking at a phone) -[2]: https://mycroft.ai/ -[3]: https://opensource.com/article/20/6/open-source-voice-assistant -[4]: https://www.jetbrains.com/pycharm/ -[5]: https://gitlab.com/stratus-ss/mycroft-ourgroceries-skill -[6]: https://mycroft-ai.gitbook.io/docs/skill-development/user-interaction/intents/padatious-intents -[7]: https://mycroft-ai.gitbook.io/docs/skill-development/user-interaction/intents/adapt-intents -[8]: https://www.computerhope.com/jargon/r/regex.htm -[9]: https://www.ourgroceries.com/overview -[10]: https://github.com/ljmerza/py-our-groceries -[11]: https://gitlab.com/stratus-ss/mycroft-ourgroceries-skill/-/blob/master/talk_to_ourgroceries.py -[12]: https://developer.mozilla.org/en-US/docs/Tools -[13]: https://opensource.com/sites/default/files/resize/ourgroceries_ids-675x201.jpg (Getting an ID) -[14]: https://mycroft-ai.gitbook.io/docs/skill-development/introduction/your-first-skill -[15]: https://opensource.com/sites/default/files/uploads/msk-create-15fps.gif (mycroft-msk create working) -[16]: https://creativecommons.org/licenses/by-sa/4.0/ -[17]: https://mycroft-ai.gitbook.io/docs/skill-development/user-interaction/conversational-context -[18]: https://realpython.com/python3-object-oriented-programming/ -[19]: https://twitter.com/linuxovens?lang=en -[20]: https://chat.mycroft.ai/community/channels/skills diff --git a/sources/tech/20200622 Manage your Kubernetes cluster with Lens.md b/sources/tech/20200622 Manage your Kubernetes cluster with Lens.md deleted file mode 100644 index beb5127a3d..0000000000 --- a/sources/tech/20200622 Manage your Kubernetes cluster with Lens.md +++ /dev/null @@ -1,122 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Manage your Kubernetes cluster with Lens) -[#]: via: (https://opensource.com/article/20/6/kubernetes-lens) -[#]: author: (Chris Collins https://opensource.com/users/clcollins) - -Manage your Kubernetes cluster with Lens -====== -Lens is a useful, attractive, open source user interface for working -with Kubernetes clusters. -![Ship captain sailing the Kubernetes seas][1] - -As more workloads are migrated to containerized environments, it becomes challenging to manage those larger numbers of containers and the connections between them and other systems. As the scale and complexity of a containerized environment increase past a human's ability to manage, container orchestration platforms such as [Kubernetes][2] become increasingly important. Such platforms, however, come with their own management challenges that require metrics, observability, and a user-friendly interface to present their huge amount of complexity. - -### Enter Lens - -[Lens][3], which bills itself as "the Kubernetes IDE," is a useful, attractive, open source user interface (UI) for working with Kubernetes clusters. Out of the box, Lens can connect to Kubernetes clusters using your kubeconfig file and will display information about the cluster and the objects it contains. Lens can also connect to—or install—a Prometheus stack and use it to provide metrics about the cluster, including node information and health. - -![Lens UI displaying an overview of workloads on the cluster][4] - -An overview of workloads on the cluster. (Chris Collins, [CC BY-SA 4.0][5]) - -Like Kubernetes' dashboard and OpenShift, Lens provides live updates on the state of objects in the cluster and metrics collected by [Prometheus][6]. - -### Get started - -Installing Lens is straightforward. [AppImage][7] packages are available for Linux, and there are binaries available for macOS and Windows clients. This tutorial explains how to download and use the Lens AppImage to install and use Lens on Linux. - -According to [AppImage's FAQ][8], an AppImage is "a downloadable file for Linux that contains an application and everything the application needs to run." An application packaged as an AppImage is just that—a single executable file that can be downloaded and run. - -The AppImage for Lens can be downloaded from the [Lens Releases][9] page on GitHub. After you download it, mark the file executable with `chmod`, and then either execute it directly or copy it to a place in your `$PATH`: - - -``` -# Download the 3.4.0 AppImage for Lens, mark it executable and copy it to your $PATH -# (output omitted for brevity) - -$ wget -$ chmod +x Lens-3.4.0.AppImage -$ sudo mv Lens-3.4.0.AppImage /usr/sbin/lens -``` - -Then you can start Lens by typing `lens` on the command line. - -### Connect Lens to a Kubernetes cluster - -Once you launch Lens, connect it to a Kubernetes cluster by clicking the **+** icon in the top-left corner and selecting a kubeconfig. Next, a drop-down box will appear containing any Kubernetes contexts from your `~/.kube/config` file, or you can select a custom one. Because cluster and authentication information about the cluster for any context is included in the kubeconfig file, Lens treats each context as a different cluster, unfortunately. - -This is particularly unhelpful compared with how OpenShift creates context information in the kubeconfig file automatically for any project (namespace) you switch to. As a site-reliability engineer (SRE) working on hundreds of clusters, I had dozens and dozens of "clusters" to choose from when setting up Lens. In practice, I found it best to select the `default` context for any cluster. You can manage all namespaces and workloads once Lens has connected, and there's no need to add them all. - -Once it's connected, Lens will display a ton of information about your cluster. You can see the workloads that are running: pods and deployments, daemon sets, cron jobs, etc. You can also view information about config maps and secrets, networking information, storage, namespaces, and events. Each will let you drill down into the information about a given object, and you can even edit the objects directly in Lens. - -![Lens displaying details of pods running on the cluster, including information on a specific pod.][10] - -Details of pods running on the cluster. (Chris Collins, [CC BY-SA 4.0][5]) - -### Gather metrics about your cluster - -One of Lens' incredibly helpful features is its ability to connect to a Prometheus stack installed in your cluster to gather metrics about the cluster and its nodes for both current and historical data. This is great for getting at-a-glance information about the cluster right within the Lens UI without having to go to an external dashboard. However, the information presented is not comprehensive–it's good for an overview, but you may still wish to utilize a visualization tool such as Grafana with a more complicated dashboard to gather more specialized information. - -Along with being able to connect to an existing Prometheus stack provisioned in the cluster, Lens can install applications on your behalf, too. This is very useful for enthusiasts running Kubernetes clusters in their homelabs to be able to deploy and connect to Prometheus in a single click. - -### Install Prometheus with Lens - -If you have been following along with this series, especially [_Build a Kubernetes cluster with the Raspberry Pi_][11], you will have a Kubernetes cluster provisioned in your homelab for education and tinkering. One thing the vanilla cluster lacks is metrics, and this is a great opportunity to add Prometheus to the cluster and install the [kube-state-metrics][12] service to gather information about the cluster. - -To install it, just right-click on the cluster icon in the top-left corner of the Lens UI (after connecting to the cluster, of course) and select **Settings**. Under **Features** on the Settings page, you will find a **Metrics** section and a button to install Prometheus. Click **Install** to deploy the Prometheus stack to your cluster, and Lens will auto-detect its existence and begin displaying metrics. (It will take a minute—the new Prometheus has to collect some metrics first.) - -I also appreciate that Lens links directly to the manifests used to deploy this stack, so you can verify what will be created before doing it, if you want. - -![Lens UI, displaying hardware utilization metrics about the cluster][13] - -Hardware utilization metrics about the cluster. (Chris Collins, [CC BY-SA 4.0][5]) - -### Fix kube-state-metrics - -Unfortunately, while Prometheus will install just fine on a Raspberry Pi-based cluster, the kube-state-metrics service will fail. Currently, the kube-state-metrics project does not build an AArch64/ARM64 image, so pods created from that image will continuously crash with `exec format error` messages in the logs. - -Luckily [this issue is being tracked][14], and the kube-state-metrics project is working toward building the infrastructure to produce official ARM images. Until then, however, you can use a community-developed image and patch the kube-state-metrics deployment directly using Lens. - -Go back into the cluster information, click on **Workloads**, and select **Deployments**. A list of all the Kubernetes deployment objects in the cluster will appear in the pane on the right. You should be able to pick out the kube-state-metrics deployment easily by the angry red entry under the **Conditions** column that indicates the crash-looping pod issue. - -Select the kube-state-metrics deployment, and details of the object will slide out from the right in an overlay window. In the upper-right corner of this window is a pencil icon. Clicking that icon opens an editor window with the YAML representation of the kube-state-metrics deployment. Scroll down, and edit the `.spec.template.spec.containers.image` value. By default, this value points to the official image: `quay.io/coreos/kube-state-metrics:v1.9.5`. - -Replace this value with `'docker.io/carlosedp/kube-state-metrics:v1.9.5'`, and click **Save**. This will trigger the deployment to roll out new kube-state-metrics pods with an ARM64 architecture, and they should become ready and begin reporting the metrics directly to Prometheus. - -### Lens lets you see clearly - -Kubernetes is complex, and any tool that makes it easier to visualize and work with Kubernetes clusters can lower the barrier of entry for new folks and make life considerably easier for experienced Kubernetes administrators. Lens knocks this out of the park with an attractive, intuitive, and easy-to-use UI for managing one or more clusters, from the 10,000-foot view down into the nitty-gritty of individual Kubernetes objects. Lens also helps display metrics about the cluster and makes installing and using a Prometheus stack to display the metrics almost push-button. - -I am extremely impressed with Lens and use it to manage several Kubernetes clusters in my own homelab, and I hope you find it useful as well. Do you have tools you like for managing or visualizing what goes on in your Kubernetes clusters? Share them in the comments, so we can all try them out! - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/6/kubernetes-lens - -作者:[Chris Collins][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/clcollins -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/ship_captain_devops_kubernetes_steer.png?itok=LAHfIpek (Ship captain sailing the Kubernetes seas) -[2]: https://opensource.com/resources/what-is-kubernetes -[3]: https://k8slens.dev/ -[4]: https://opensource.com/sites/default/files/uploads/lens2.png (Lens UI displaying an overview of workloads on the cluster) -[5]: https://creativecommons.org/licenses/by-sa/4.0/ -[6]: https://opensource.com/sitewide-search?search_api_views_fulltext=prometheus -[7]: https://opensource.com/article/20/6/appimages -[8]: https://docs.appimage.org/user-guide/faq.html#question-what-is-an-appimage -[9]: https://github.com/lensapp/lens/releases/latest -[10]: https://opensource.com/sites/default/files/uploads/lens3.png (Lens displaying details of pods running on the cluster, including information on a specific pod.) -[11]: https://opensource.com/article/20/6/kubernetes-raspberry-pi -[12]: https://github.com/kubernetes/kube-state-metrics -[13]: https://opensource.com/sites/default/files/uploads/lens1.png (Lens UI, displaying hardware utilization metrics about the cluster) -[14]: https://github.com/kubernetes/kube-state-metrics/issues/1037 diff --git a/sources/tech/20200623 Take control of your data with associative arrays in Bash.md b/sources/tech/20200623 Take control of your data with associative arrays in Bash.md deleted file mode 100644 index eb178a4677..0000000000 --- a/sources/tech/20200623 Take control of your data with associative arrays in Bash.md +++ /dev/null @@ -1,106 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Take control of your data with associative arrays in Bash) -[#]: via: (https://opensource.com/article/20/6/associative-arrays-bash) -[#]: author: (Seth Kenlon https://opensource.com/users/seth) - -Take control of your data with associative arrays in Bash -====== -Associative arrays let you create lists of key and value pairs, instead -of just numbered values. -![bash logo on green background][1] - -If you've ever written code, whether it's a shell script, a Python script, C++, or even Scratch, then you know that variables are vital. Computers and coders use variables as waystations, where they surreptitiously pass information back and forth. For instance, if you need to process a user's name in a shell script, you might set up a variable, put the username into the variable, and then instruct the computer to do something to the variable (check it against a list of authorized users, for example). Variables are important because they enable code to by dynamic: they're placeholders for information that's expected to change every time you run the code. - -But variables, because they're so common, can also become rather unwieldy. Often times, you gather so many variables in a code project that it's next to impossible to keep track of them all. You can use clever conventions, such as prefixing all related variables with a common string (user_name, user_pass, user_time, and so on), or you can create a master list of them somewhere for easy reference, but the overhead of keeping track of it all can becoming taxing. - -One answer to this problem has, traditionally, been arrays. These have worked well in most coding languages, including shell scripting languages like Bash. - -Most shells offer the ability to create, manipulate, and query indexed arrays. In plain English, an indexed array is a list of things prefixed with a number. This list of things, along with their assigned number, is conveniently wrapped up in a single variable, which makes it easy to "carry" around in your code. - -[Bash][2], however, includes the ability to create associative arrays, and it treats these arrays the same as any other array. An associative array lets you create lists of key and value pairs, instead of just numbered values. - -You can assign values to arbitrary keys: - - -``` -$ declare -A userdata -$ userdata[name]=seth -$ userdata[pass]=8eab07eb620533b083f241ec4e6b9724 -$ userdata[login]=`date --utc +%s` -``` - -Query any key: - - -``` -$ echo "${userdata[name]}" -seth -$ echo "${userdata[login]}" -1583362192 -``` - -Most of the usual array operations you'd expect from an array are available. For instance, you can list all values: - - -``` -$ echo "${userdata[*]}" -8eab07eb620533b083f241ec4e6b9724 seth 1583362192 -``` - -You can view the entire array: - - -``` -$ typeset -A -declare -A BASH_ALIASES='()' -declare -A BASH_CMDS='()' -declare -A userdata='([pass]="8eab07eb620533b083f241ec4e6b9724" -[name]="seth" -[login]="1583362192" )' -``` - -You can also remove items from your array using the **unset** command: - - -``` -$ unset userdata[pass] -$ typeset -A -[...] -declare -A userdata='([name]="seth" -[login]="1583362192" )' -``` - -Finally, you can dismiss the entire array. - - -``` -`$ unset "userdata[*]"` -``` - -### Arrays for data - -Arrays are useful tools for storing related data together. You can use a plain old variable in most cases, but sometimes it's more logical to store attributes of a singular data "object" in an array, to keep the data consolidated and indexed. For example, if you're processing login names and times taken from **utmp**, it would be more useful for you to _associate_ the login time with the user to whom the time referred, rather than just storing the two data objects as separate variables with no obvious connection. - -Furthermore, unlike variables, an entry in an array doesn't need to exist before you store data in it. You don't have to know exactly how much data is going to get stored before you store it. That can be a big advantage if you're processing data that you can't control or predict: if you don't know how many users to expect in **utmp** one day to the next, it's hard to build a script to contain all the entries. With an array, though, all you have to do is declare one array and read data into it, creating a new key and value pair until you run out of data to ingest. - -Arrays are powerful, and they're common in programming languages beyond Bash. Start using them now! - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/6/associative-arrays-bash - -作者:[Seth Kenlon][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/seth -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/bash_command_line.png?itok=k4z94W2U (bash logo on green background) -[2]: https://opensource.com/resources/what-bash diff --git a/sources/tech/20200624 A surprising way to do data science with Node.js.md b/sources/tech/20200624 A surprising way to do data science with Node.js.md deleted file mode 100644 index 0a73306647..0000000000 --- a/sources/tech/20200624 A surprising way to do data science with Node.js.md +++ /dev/null @@ -1,450 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (A surprising way to do data science with Node.js) -[#]: via: (https://opensource.com/article/20/6/server-side-data-science-nodejs) -[#]: author: (Cristiano L. Fontana https://opensource.com/users/cristianofontana) - -A surprising way to do data science with Node.js -====== -Do a common data science task with Node.js and D3.js. -![Computer screen with files or windows open][1] - -[JavaScript][2] (also known as JS) is the [lingua franca][3] of the web, as it is supported by all the major web browsers—the other languages that run in browsers are [transpiled][4] (or translated) to JavaScript. Sometimes JS [can be confusing][5], but I find it pleasant to use because I try to stick to the [good parts][6]. JavaScript was created to run in a browser, but it can also be used in other contexts, such as an [embedded language][7] or for [server-side applications][8]. - -In this tutorial, I will explain how to write a program that will run in Node.js, which is a runtime environment that can execute JavaScript applications. What I like the most about Node.js is its [event-driven architecture][9] for [asynchronous programming][10]. With this approach, functions (aka callbacks) can be attached to certain events; when the attached event occurs, the callback executes. This way, the developer does not have to write a main loop because the runtime takes care of that. - -JavaScript also has new [async functions][11] that use a different syntax, but I think they hide the event-driven architecture too well to use them in a how-to article. So, in this tutorial, I will use the traditional callbacks approach, even though it is not necessary for this case. - -### Understanding the program task - -The program task in this tutorial is to: - - * Read some data from a [CSV file][12] that contains the [Anscombe's quartet][13] dataset - * Interpolate the data with a straight line (i.e., _f(x) = m·x + q_) - * Plot the result to an image file - - - -For more details about this task, you can read the previous articles in this series, which do the same task in [Python and GNU Octave][14] and [C and C++][15]. The full source code for all the examples is available in my [polyglot_fit repository][16] on GitLab. - -### Installing - -Before you can run this example, you must install Node.js and its package manager [npm][17]. To install them on [Fedora][18], run: - - -``` -`$ sudo dnf install nodejs npm` -``` - -On Ubuntu: - - -``` -`$ sudo apt install nodejs npm` -``` - -Next, use `npm` to install the required packages. Packages are installed in a local [`node_modules` subdirectory][19], so Node.js can search for packages in that folder. The required packages are: - - * [CSV Parse][20] for parsing the CSV file - * [Simple Statistics][21] for calculating the data correlation factor - * [Regression-js][22] for determining the fitting line - * [D3-Node][23] for server-side plotting - - - -Run npm to install the packages: - - -``` -`$ npm install csv-parse simple-statistics regression d3-node` -``` - -### Commenting code - -Just like in C, in JavaScript, you can insert [comments][24] by putting `//` before your comment, and the interpreter will discard the rest of the line. Another option: JavaScript will discard anything between `/*` and `*/`: - - -``` -// This is a comment ignored by the interpreter. -/* Also this is ignored */ -``` - -### Loading modules - -You can load modules with the [`require()` function][25]. The function returns an object that contains a module's functions: - - -``` -const EventEmitter = require('events'); -const fs = require('fs'); -const csv = require('csv-parser'); -const regression = require('regression'); -const ss = require('simple-statistics'); -const D3Node = require('d3-node'); -``` - -Some of these modules are part of the Node.js standard library, so you do not need to install them with npm. - -### Defining variables - -Variables do not have to be declared before they are used, but if they are used without a declaration, they will be defined as global variables. Generally, global variables are considered bad practice, as they could lead to [bugs][26] if they're used carelessly. To declare a variable, you can use the [var][27], [let][28], and [const][29] statements. Variables can contain any kind of data (even functions!). You can create some objects by applying the [`new` operator][30] to a constructor function: - - -``` -const inputFileName = "anscombe.csv"; -const delimiter = "\t"; -const skipHeader = 3; -const columnX = String(0); -const columnY = String(1); - -const d3n = new D3Node(); -const d3 = d3n.d3; - -var data = []; -``` - -Data read from the CSV file is stored in the `data` array. Arrays are dynamic, so you do not have to decide their size beforehand. - -### Defining functions - -There are several ways to define functions in JavaScript. For example, the [function declaration][31] allows you to directly define a function: - - -``` -function triplify(x) { -    return 3 * x; -} - -// The function call is: -triplify(3); -``` - -You can also declare a function with an [expression][32] and store it in a variable: - - -``` -var triplify = function (x) { -    return 3 * x; -} - -// The function call is still: -triplify(3); -``` - -Finally, you can use the [arrow function expression][33], a syntactically short version of a function expression, but it has [some limitations][33]. It is generally used for concise functions that do simple calculations on its arguments: - - -``` -var triplify = (x) => 3 * x; - -// The function call is still: -triplify(3); -``` - -### Printing output - -In order to print on the terminal, you can use the built-in [`console` object][34] in the Node.js standard library. The [`log()` method][35] prints on the terminal (adding a newline at the end of the string): - - -``` -`console.log("#### Anscombe's first set with JavaScript in Node.js ####");` -``` - -The `console` object is a more powerful facility than just printing output; for instance, it can also print [warnings][36] and [errors][37]. If you want to print the value of a variable, you can convert it to a string and use `console.log()`: - - -``` -`console.log("Slope: " + slope.toString());` -``` - -### Reading data - -Input/output in Node.js uses a [very interesting approach][38]; you can choose either a synchronous or an asynchronous approach. The former uses blocking function calls, and the latter uses non-blocking function calls. In a blocking function, the program stops there and waits until the function finishes its task, whereas non-blocking functions do not stop the execution but continue their task somehow and somewhere else. - -You have a couple of options here: you could periodically check whether the function ended, or the function could notify you when it ends. This tutorial uses the second approach: it employs [an `EventEmitter`][39] that generates an [event][40] associated with a callback function. The callback executes when the event is triggered. - -First, generate the `EventEmitter`: - - -``` -`const myEmitter = new EventEmitter();` -``` - -Then associate the file-reading's end with an event called `myEmitter`. Although you do not need to follow this path for this simple example—you could use a simple blocking call—it is a very powerful approach that can be very useful in other situations. Before doing that, add another piece to this section for using the CSV Parse library to do the data reading. This library provides [several approaches][41] you can choose from, but this example uses the [stream API][42] with a [pipe][43]. The library needs some configuration, which is defined in an object: - - -``` -const csvOptions = {'separator': delimiter, -                    'skipLines': skipHeader, -                    'headers': false}; -``` - -Since you've defined the options, you can read the file: - - -``` -fs.createReadStream(inputFileName) -  .pipe(csv(csvOptions)) -  .on('data', (datum) => data.push({'x': Number(datum[columnX]), 'y': Number(datum[columnY])})) -  .on('end', () => myEmitter.emit('reading-end')); -``` - -I'll walk through each line of this short, dense code snippet: - - * `fs.createReadStream(inputFileName)` opens a [stream of data][44] that is read from the file. A stream gradually reads a file in chunks. - * `.pipe(csv(csvOptions))` forwards the stream to the CSV Parse library that handles the difficult task of reading the file and parsing it. - * `.on('data', (datum) => data.push({'x': Number(datum[columnX]), 'y': Number(datum[columnY])}))` is rather dense, so I will break it out: - * `(datum) => ...` defines a function to which each row of the CSV file will be passed. - * `data.push(...` adds the newly read data to the `data` array. - * `{'x': ..., 'y': ...}` constructs a new data point with `x` and `y` members. - * `Number(datum[columnX])` converts the element in `columnX` to a number. - * `.on('end', () => myEmitter.emit('reading-end'));` uses the emitter you created to notify you when the file-reading finishes. - - - -When the emitter emits the `reading-end` event, you know that the file was completely parsed and its contents are in the `data` array. - -### Fitting data - -Now that you filled the `data` array, you can analyze the data in it. The function that carries out the analysis is associated with the `reading-end` event of the emitter you defined, so you can be sure that the data is ready. The emitter associates a callback function to that event and executes the function when the event is triggered. - - -``` -myEmitter.on('reading-end', function () { -    const fit_data = data.map((datum) => [datum.x, datum.y]); - -    const result = regression.linear(fit_data); -    const slope = result.equation[0]; -    const intercept = result.equation[1]; - -    console.log("Slope: " + slope.toString()); -    console.log("Intercept: " + intercept.toString()); - -    const x = data.map((datum) => datum.x); -    const y = data.map((datum) => datum.y); - -    const r_value = ss.sampleCorrelation(x, y); - -    console.log("Correlation coefficient: " + r_value.toString()); - -    myEmitter.emit('analysis-end', data, slope, intercept); -}); -``` - -The statistics libraries expect data in different formats, so employ the [`map()` method][45] of the `data` array. `map()` creates a new array from an existing one and applies a function to each array element. The arrow functions are very practical in this context due to their conciseness. When the analysis finishes, you can trigger a new event to continue in a new callback. You could also directly plot the data in this function, but I opted to continue in a new one because the analysis could be a very lengthy process. By emitting the `analysis-end` event, you also pass the relevant data from this function to the next callback. - -### Plotting - -[D3.js][46] is a [very powerful][47] library for plotting data. The learning curve is rather steep, probably because it is a [misunderstood library][48], but it is the best open source option I've found for server-side plotting. My favorite D3.js feature is probably that it works on SVG images. D3.js was designed to run in a web browser, so it assumes it has a web page to handle. Working server-side is a very different environment, and you need a [virtual web page][49] to work on. Luckily, [D3-Node][50] makes this process very simple. - -Begin by defining some useful measurements that will be required later: - - -``` -const figDPI = 100; -const figWidth = 7 * figDPI; -const figHeight = figWidth / 16 * 9; -const margins = {top: 20, right: 20, bottom: 50, left: 50}; - -let plotWidth = figWidth - margins.left - margins.right; -let plotHeight = figHeight - margins.top - margins.bottom; - -let minX = d3.min(data, (datum) => datum.x); -let maxX = d3.max(data, (datum) => datum.x); -let minY = d3.min(data, (datum) => datum.y); -let maxY = d3.max(data, (datum) => datum.y); -``` - -You have to convert between the data coordinates and the plot (image) coordinates. You can use scales for this conversion: the scale's domain is the data space where you pick the data points, and the scale's range is the image space where you put the points: - - -``` -let scaleX = d3.scaleLinear() -               .range([0, plotWidth]) -               .domain([minX - 1, maxX + 1]); -let scaleY = d3.scaleLinear() -               .range([plotHeight, 0]) -               .domain([minY - 1, maxY + 1]); - -const axisX = d3.axisBottom(scaleX).ticks(10); -const axisY = d3.axisLeft(scaleY).ticks(10); -``` - -Note that the `y` scale has an inverted range because in the SVG standard, the `y` scale's origin is at the top. After defining the scales, start drawing the plot on a newly created SVG image: - - -``` -let svg = d3n.createSVG(figWidth, figHeight) - -svg.attr('background-color', 'white'); - -svg.append("rect") -   .attr("width", figWidth) -   .attr("height", figHeight) -   .attr("fill", 'white'); -``` - -First, draw the interpolating line appending a `line` element to the SVG image: - - -``` -svg.append("g") -   .attr('transform', `translate(${margins.left}, ${margins.top})`) -   .append("line") -   .attr("x1", scaleX(minX - 1)) -   .attr("y1", scaleY((minX - 1) * slope + intercept)) -   .attr("x2", scaleX(maxX + 1)) -   .attr("y2", scaleY((maxX + 1) * slope + intercept)) -   .attr("stroke", "#1f77b4"); -``` - -Then add a `circle` for each data point to the right location. D3.js's key point is that it associates data with SVG elements. Thus, you use the `data()` method to associate the data points to the circles you create. The [`enter()` method][51] tells the library what to do with the newly associated data: - - -``` -svg.append("g") -   .attr('transform', `translate(${margins.left}, ${margins.top})`) -   .selectAll("circle") -   .data(data) -   .enter() -   .append("circle") -   .classed("circle", true) -   .attr("cx", (d) => scaleX(d.x)) -   .attr("cy", (d) => scaleY(d.y)) -   .attr("r", 3) -   .attr("fill", "#ff7f0e"); -``` - -The last elements you draw are the axes and their labels; this is so you can be sure they overlap the plot lines and circles: - - -``` -svg.append("g") -   .attr('transform', `translate(${margins.left}, ${margins.top + plotHeight})`) -   .call(axisX); - -svg.append("g") -   .append("text") -   .attr("transform", `translate(${margins.left + 0.5 * plotWidth}, ${margins.top + plotHeight + 0.7 * margins.bottom})`) -  .style("text-anchor", "middle") -  .text("X"); - -svg.append("g") -   .attr('transform', `translate(${margins.left}, ${margins.top})`) -   .call(axisY); - -svg.append("g") -   .attr("transform", `translate(${0.5 * margins.left}, ${margins.top + 0.5 * plotHeight})`) -   .append("text") -   .attr("transform", "rotate(-90)") -  .style("text-anchor", "middle") -  .text("Y"); -``` - -Finally, save the plot to an SVG file. I opted for a synchronous write of the file, so I could show this [second approach][52]: - - -``` -`fs.writeFileSync("fit_node.svg", d3n.svgString());` -``` - -### Results - -Running the script is as simple as: - - -``` -`$ node fitting_node.js` -``` - -And the command-line output is: - - -``` -#### Anscombe's first set with JavaScript in Node.js #### -Slope: 0.5 -Intercept: 3 -Correlation coefficient: 0.8164205163448399 -``` - -Here is the image I generated with D3.js and Node.js: - -![Plot and fit of the dataset obtained with Node.js][53] - -(Cristiano Fontana, [CC BY-SA 4.0][54]) - -### Conclusion - -JavaScript is a very popular language for [serverless computing][55], so this example of server-side data analysis and plotting with Node.js is not unlikely. The two most interesting parts in this tutorial are probably the introduction to the event-driven architecture (for people getting started with Node.js) and the example of server-side plotting (for more knowledgeable readers). - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/6/server-side-data-science-nodejs - -作者:[Cristiano L. Fontana][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/cristianofontana -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/browser_screen_windows_files.png?itok=kLTeQUbY (Computer screen with files or windows open) -[2]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/About_JavaScript -[3]: https://en.wikipedia.org/wiki/Lingua_franca -[4]: https://en.wikipedia.org/wiki/Source-to-source_compiler -[5]: https://www.destroyallsoftware.com/talks/wat -[6]: https://www.youtube.com/watch?v=_DKkVvOt6dk -[7]: https://developer.mozilla.org/en-US/docs/Mozilla/Projects/SpiderMonkey -[8]: https://nodejs.org/en/ -[9]: https://en.wikipedia.org/wiki/Event-driven_architecture -[10]: https://en.wikipedia.org/wiki/Asynchrony_%28computer_programming%29 -[11]: https://developer.mozilla.org/en-US/docs/Learn/JavaScript/Asynchronous/Async_await -[12]: https://en.wikipedia.org/wiki/Comma-separated_values -[13]: https://en.wikipedia.org/wiki/Anscombe%27s_quartet -[14]: https://opensource.com/article/20/2/python-gnu-octave-data-science -[15]: https://opensource.com/article/20/2/c-data-science -[16]: https://gitlab.com/cristiano.fontana/polyglot_fit -[17]: https://www.npmjs.com/ -[18]: https://getfedora.org/ -[19]: https://docs.npmjs.com/configuring-npm/folders.html -[20]: https://csv.js.org/parse/ -[21]: https://simplestatistics.org/ -[22]: http://tom-alexander.github.io/regression-js/ -[23]: https://bradoyler.com/projects/d3-node/ -[24]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Lexical_grammar#Comments -[25]: https://nodejs.org/en/knowledge/getting-started/what-is-require/ -[26]: https://gist.github.com/hallettj/64478 -[27]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/var -[28]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/let -[29]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/const -[30]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/new -[31]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/function -[32]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/function -[33]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions -[34]: https://nodejs.org/api/console.html -[35]: https://nodejs.org/api/console.html#console_console_log_data_args -[36]: https://nodejs.org/api/console.html#console_console_warn_data_args -[37]: https://nodejs.org/api/console.html#console_console_error_data_args -[38]: https://nodejs.org/en/docs/guides/blocking-vs-non-blocking/ -[39]: https://nodejs.org/api/events.html#events_class_eventemitter -[40]: https://nodejs.org/api/events.html#events_events -[41]: https://csv.js.org/parse/api/ -[42]: https://csv.js.org/parse/api/stream/ -[43]: https://csv.js.org/parse/recipies/stream_pipe/ -[44]: https://nodejs.org/api/stream.html#stream_stream -[45]: https://developer.mozilla.org/it/docs/Web/JavaScript/Reference/Global_Objects/Array/map -[46]: https://d3js.org/ -[47]: https://observablehq.com/@d3/gallery -[48]: https://medium.com/dailyjs/the-trouble-with-d3-4a84f7de011f -[49]: https://github.com/jsdom/jsdom -[50]: https://github.com/d3-node/d3-node -[51]: https://www.d3indepth.com/enterexit/ -[52]: https://nodejs.org/api/fs.html#fs_fs_writefilesync_file_data_options -[53]: https://opensource.com/sites/default/files/uploads/fit_node.jpg (Plot and fit of the dataset obtained with Node.js) -[54]: https://creativecommons.org/licenses/by-sa/4.0/ -[55]: https://en.wikipedia.org/wiki/Serverless_computing diff --git a/sources/tech/20200624 Why you should use Node.js for data science.md b/sources/tech/20200624 Why you should use Node.js for data science.md deleted file mode 100644 index 86f6f2ca43..0000000000 --- a/sources/tech/20200624 Why you should use Node.js for data science.md +++ /dev/null @@ -1,450 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Why you should use Node.js for data science) -[#]: via: (https://opensource.com/article/20/6/data-science-nodejs) -[#]: author: (Cristiano L. Fontana https://opensource.com/users/cristianofontana) - -Why you should use Node.js for data science -====== -Node.js and other JavaScript libraries are excellent choices for data -science. Here's why. -![Computer screen with files or windows open][1] - -[JavaScript][2] (also known as JS) is the [lingua franca][3] of the web, as it is supported by all the major web browsers—the other languages that run in browsers are [transpiled][4] (or translated) to JavaScript. Sometimes JS [can be confusing][5], but I find it pleasant to use because I try to stick to the [good parts][6]. JavaScript was created to run in a browser, but it can also be used in other contexts, such as an [embedded language][7] or for [server-side applications][8]. - -In this tutorial, I will explain how to write a program that will run in Node.js, which is a runtime environment that can execute JavaScript applications. What I like the most about Node.js is its [event-driven architecture][9] for [asynchronous programming][10]. With this approach, functions (aka callbacks) can be attached to certain events; when the attached event occurs, the callback executes. This way, the developer does not have to write a main loop because the runtime takes care of that. - -JavaScript also has new [async functions][11] that use a different syntax, but I think they hide the event-driven architecture too well to use them in a how-to article. So, in this tutorial, I will use the traditional callbacks approach, even though it is not necessary for this case. - -### Understanding the program task - -The program task in this tutorial is to: - - * Read some data from a [CSV file][12] that contains the [Anscombe's quartet][13] dataset - * Interpolate the data with a straight line (i.e., _f(x) = m·x + q_) - * Plot the result to an image file - - - -For more details about this task, you can read the previous articles in this series, which do the same task in [Python and GNU Octave][14] and [C and C++][15]. The full source code for all the examples is available in my [polyglot_fit repository][16] on GitLab. - -### Installing - -Before you can run this example, you must install Node.js and its package manager [npm][17]. To install them on [Fedora][18], run: - - -``` -`$ sudo dnf install nodejs npm` -``` - -On Ubuntu: - - -``` -`$ sudo apt install nodejs npm` -``` - -Next, use `npm` to install the required packages. Packages are installed in a local [`node_modules` subdirectory][19], so Node.js can search for packages in that folder. The required packages are: - - * [CSV Parse][20] for parsing the CSV file - * [Simple Statistics][21] for calculating the data correlation factor - * [Regression-js][22] for determining the fitting line - * [D3-Node][23] for server-side plotting - - - -Run npm to install the packages: - - -``` -`$ npm install csv-parse simple-statistics regression d3-node` -``` - -### Commenting code - -Just like in C, in JavaScript, you can insert [comments][24] by putting `//` before your comment, and the interpreter will discard the rest of the line. Another option: JavaScript will discard anything between `/*` and `*/`: - - -``` -// This is a comment ignored by the interpreter. -/* Also this is ignored */ -``` - -### Loading modules - -You can load modules with the [`require()` function][25]. The function returns an object that contains a module's functions: - - -``` -const EventEmitter = require('events'); -const fs = require('fs'); -const csv = require('csv-parser'); -const regression = require('regression'); -const ss = require('simple-statistics'); -const D3Node = require('d3-node'); -``` - -Some of these modules are part of the Node.js standard library, so you do not need to install them with npm. - -### Defining variables - -Variables do not have to be declared before they are used, but if they are used without a declaration, they will be defined as global variables. Generally, global variables are considered bad practice, as they could lead to [bugs][26] if they're used carelessly. To declare a variable, you can use the [var][27], [let][28], and [const][29] statements. Variables can contain any kind of data (even functions!). You can create some objects by applying the [`new` operator][30] to a constructor function: - - -``` -const inputFileName = "anscombe.csv"; -const delimiter = "\t"; -const skipHeader = 3; -const columnX = String(0); -const columnY = String(1); - -const d3n = new D3Node(); -const d3 = d3n.d3; - -var data = []; -``` - -Data read from the CSV file is stored in the `data` array. Arrays are dynamic, so you do not have to decide their size beforehand. - -### Defining functions - -There are several ways to define functions in JavaScript. For example, the [function declaration][31] allows you to directly define a function: - - -``` -function triplify(x) { -    return 3 * x; -} - -// The function call is: -triplify(3); -``` - -You can also declare a function with an [expression][32] and store it in a variable: - - -``` -var triplify = function (x) { -    return 3 * x; -} - -// The function call is still: -triplify(3); -``` - -Finally, you can use the [arrow function expression][33], a syntactically short version of a function expression, but it has [some limitations][33]. It is generally used for concise functions that do simple calculations on its arguments: - - -``` -var triplify = (x) => 3 * x; - -// The function call is still: -triplify(3); -``` - -### Printing output - -In order to print on the terminal, you can use the built-in [`console` object][34] in the Node.js standard library. The [`log()` method][35] prints on the terminal (adding a newline at the end of the string): - - -``` -`console.log("#### Anscombe's first set with JavaScript in Node.js ####");` -``` - -The `console` object is a more powerful facility than just printing output; for instance, it can also print [warnings][36] and [errors][37]. If you want to print the value of a variable, you can convert it to a string and use `console.log()`: - - -``` -`console.log("Slope: " + slope.toString());` -``` - -### Reading data - -Input/output in Node.js uses a [very interesting approach][38]; you can choose either a synchronous or an asynchronous approach. The former uses blocking function calls, and the latter uses non-blocking function calls. In a blocking function, the program stops there and waits until the function finishes its task, whereas non-blocking functions do not stop the execution but continue their task somehow and somewhere else. - -You have a couple of options here: you could periodically check whether the function ended, or the function could notify you when it ends. This tutorial uses the second approach: it employs [an `EventEmitter`][39] that generates an [event][40] associated with a callback function. The callback executes when the event is triggered. - -First, generate the `EventEmitter`: - - -``` -`const myEmitter = new EventEmitter();` -``` - -Then associate the file-reading's end with an event called `myEmitter`. Although you do not need to follow this path for this simple example—you could use a simple blocking call—it is a very powerful approach that can be very useful in other situations. Before doing that, add another piece to this section for using the CSV Parse library to do the data reading. This library provides [several approaches][41] you can choose from, but this example uses the [stream API][42] with a [pipe][43]. The library needs some configuration, which is defined in an object: - - -``` -const csvOptions = {'separator': delimiter, -                    'skipLines': skipHeader, -                    'headers': false}; -``` - -Since you've defined the options, you can read the file: - - -``` -fs.createReadStream(inputFileName) -  .pipe(csv(csvOptions)) -  .on('data', (datum) => data.push({'x': Number(datum[columnX]), 'y': Number(datum[columnY])})) -  .on('end', () => myEmitter.emit('reading-end')); -``` - -I'll walk through each line of this short, dense code snippet: - - * `fs.createReadStream(inputFileName)` opens a [stream of data][44] that is read from the file. A stream gradually reads a file in chunks. - * `.pipe(csv(csvOptions))` forwards the stream to the CSV Parse library that handles the difficult task of reading the file and parsing it. - * `.on('data', (datum) => data.push({'x': Number(datum[columnX]), 'y': Number(datum[columnY])}))` is rather dense, so I will break it out: - * `(datum) => ...` defines a function to which each row of the CSV file will be passed. - * `data.push(...` adds the newly read data to the `data` array. - * `{'x': ..., 'y': ...}` constructs a new data point with `x` and `y` members. - * `Number(datum[columnX])` converts the element in `columnX` to a number. - * `.on('end', () => myEmitter.emit('reading-end'));` uses the emitter you created to notify you when the file-reading finishes. - - - -When the emitter emits the `reading-end` event, you know that the file was completely parsed and its contents are in the `data` array. - -### Fitting data - -Now that you filled the `data` array, you can analyze the data in it. The function that carries out the analysis is associated with the `reading-end` event of the emitter you defined, so you can be sure that the data is ready. The emitter associates a callback function to that event and executes the function when the event is triggered. - - -``` -myEmitter.on('reading-end', function () { -    const fit_data = data.map((datum) => [datum.x, datum.y]); - -    const result = regression.linear(fit_data); -    const slope = result.equation[0]; -    const intercept = result.equation[1]; - -    console.log("Slope: " + slope.toString()); -    console.log("Intercept: " + intercept.toString()); - -    const x = data.map((datum) => datum.x); -    const y = data.map((datum) => datum.y); - -    const r_value = ss.sampleCorrelation(x, y); - -    console.log("Correlation coefficient: " + r_value.toString()); - -    myEmitter.emit('analysis-end', data, slope, intercept); -}); -``` - -The statistics libraries expect data in different formats, so employ the [`map()` method][45] of the `data` array. `map()` creates a new array from an existing one and applies a function to each array element. The arrow functions are very practical in this context due to their conciseness. When the analysis finishes, you can trigger a new event to continue in a new callback. You could also directly plot the data in this function, but I opted to continue in a new one because the analysis could be a very lengthy process. By emitting the `analysis-end` event, you also pass the relevant data from this function to the next callback. - -### Plotting - -[D3.js][46] is a [very powerful][47] library for plotting data. The learning curve is rather steep, probably because it is a [misunderstood library][48], but it is the best open source option I've found for server-side plotting. My favorite D3.js feature is probably that it works on SVG images. D3.js was designed to run in a web browser, so it assumes it has a web page to handle. Working server-side is a very different environment, and you need a [virtual web page][49] to work on. Luckily, [D3-Node][50] makes this process very simple. - -Begin by defining some useful measurements that will be required later: - - -``` -const figDPI = 100; -const figWidth = 7 * figDPI; -const figHeight = figWidth / 16 * 9; -const margins = {top: 20, right: 20, bottom: 50, left: 50}; - -let plotWidth = figWidth - margins.left - margins.right; -let plotHeight = figHeight - margins.top - margins.bottom; - -let minX = d3.min(data, (datum) => datum.x); -let maxX = d3.max(data, (datum) => datum.x); -let minY = d3.min(data, (datum) => datum.y); -let maxY = d3.max(data, (datum) => datum.y); -``` - -You have to convert between the data coordinates and the plot (image) coordinates. You can use scales for this conversion: the scale's domain is the data space where you pick the data points, and the scale's range is the image space where you put the points: - - -``` -let scaleX = d3.scaleLinear() -               .range([0, plotWidth]) -               .domain([minX - 1, maxX + 1]); -let scaleY = d3.scaleLinear() -               .range([plotHeight, 0]) -               .domain([minY - 1, maxY + 1]); - -const axisX = d3.axisBottom(scaleX).ticks(10); -const axisY = d3.axisLeft(scaleY).ticks(10); -``` - -Note that the `y` scale has an inverted range because in the SVG standard, the `y` scale's origin is at the top. After defining the scales, start drawing the plot on a newly created SVG image: - - -``` -let svg = d3n.createSVG(figWidth, figHeight) - -svg.attr('background-color', 'white'); - -svg.append("rect") -   .attr("width", figWidth) -   .attr("height", figHeight) -   .attr("fill", 'white'); -``` - -First, draw the interpolating line appending a `line` element to the SVG image: - - -``` -svg.append("g") -   .attr('transform', `translate(${margins.left}, ${margins.top})`) -   .append("line") -   .attr("x1", scaleX(minX - 1)) -   .attr("y1", scaleY((minX - 1) * slope + intercept)) -   .attr("x2", scaleX(maxX + 1)) -   .attr("y2", scaleY((maxX + 1) * slope + intercept)) -   .attr("stroke", "#1f77b4"); -``` - -Then add a `circle` for each data point to the right location. D3.js's key point is that it associates data with SVG elements. Thus, you use the `data()` method to associate the data points to the circles you create. The [`enter()` method][51] tells the library what to do with the newly associated data: - - -``` -svg.append("g") -   .attr('transform', `translate(${margins.left}, ${margins.top})`) -   .selectAll("circle") -   .data(data) -   .enter() -   .append("circle") -   .classed("circle", true) -   .attr("cx", (d) => scaleX(d.x)) -   .attr("cy", (d) => scaleY(d.y)) -   .attr("r", 3) -   .attr("fill", "#ff7f0e"); -``` - -The last elements you draw are the axes and their labels; this is so you can be sure they overlap the plot lines and circles: - - -``` -svg.append("g") -   .attr('transform', `translate(${margins.left}, ${margins.top + plotHeight})`) -   .call(axisX); - -svg.append("g") -   .append("text") -   .attr("transform", `translate(${margins.left + 0.5 * plotWidth}, ${margins.top + plotHeight + 0.7 * margins.bottom})`) -  .style("text-anchor", "middle") -  .text("X"); - -svg.append("g") -   .attr('transform', `translate(${margins.left}, ${margins.top})`) -   .call(axisY); - -svg.append("g") -   .attr("transform", `translate(${0.5 * margins.left}, ${margins.top + 0.5 * plotHeight})`) -   .append("text") -   .attr("transform", "rotate(-90)") -  .style("text-anchor", "middle") -  .text("Y"); -``` - -Finally, save the plot to an SVG file. I opted for a synchronous write of the file, so I could show this [second approach][52]: - - -``` -`fs.writeFileSync("fit_node.svg", d3n.svgString());` -``` - -### Results - -Running the script is as simple as: - - -``` -`$ node fitting_node.js` -``` - -And the command-line output is: - - -``` -#### Anscombe's first set with JavaScript in Node.js #### -Slope: 0.5 -Intercept: 3 -Correlation coefficient: 0.8164205163448399 -``` - -Here is the image I generated with D3.js and Node.js: - -![Plot and fit of the dataset obtained with Node.js][53] - -(Cristiano Fontana, [CC BY-SA 4.0][54]) - -### Conclusion - -JavaScript is a core technology of today, and it is well suited for data exploration with the right libraries. With this introduction to event-driven architecture and an example of how server-side plotting looks in practice, we can start to consider Node.js and D3.js as alternatives to the common programming languages associated with data science. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/6/data-science-nodejs - -作者:[Cristiano L. Fontana][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/cristianofontana -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/browser_screen_windows_files.png?itok=kLTeQUbY (Computer screen with files or windows open) -[2]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/About_JavaScript -[3]: https://en.wikipedia.org/wiki/Lingua_franca -[4]: https://en.wikipedia.org/wiki/Source-to-source_compiler -[5]: https://www.destroyallsoftware.com/talks/wat -[6]: https://www.youtube.com/watch?v=_DKkVvOt6dk -[7]: https://developer.mozilla.org/en-US/docs/Mozilla/Projects/SpiderMonkey -[8]: https://nodejs.org/en/ -[9]: https://en.wikipedia.org/wiki/Event-driven_architecture -[10]: https://en.wikipedia.org/wiki/Asynchrony_%28computer_programming%29 -[11]: https://developer.mozilla.org/en-US/docs/Learn/JavaScript/Asynchronous/Async_await -[12]: https://en.wikipedia.org/wiki/Comma-separated_values -[13]: https://en.wikipedia.org/wiki/Anscombe%27s_quartet -[14]: https://opensource.com/article/20/2/python-gnu-octave-data-science -[15]: https://opensource.com/article/20/2/c-data-science -[16]: https://gitlab.com/cristiano.fontana/polyglot_fit -[17]: https://www.npmjs.com/ -[18]: https://getfedora.org/ -[19]: https://docs.npmjs.com/configuring-npm/folders.html -[20]: https://csv.js.org/parse/ -[21]: https://simplestatistics.org/ -[22]: http://tom-alexander.github.io/regression-js/ -[23]: https://bradoyler.com/projects/d3-node/ -[24]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Lexical_grammar#Comments -[25]: https://nodejs.org/en/knowledge/getting-started/what-is-require/ -[26]: https://gist.github.com/hallettj/64478 -[27]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/var -[28]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/let -[29]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/const -[30]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/new -[31]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/function -[32]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/function -[33]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions -[34]: https://nodejs.org/api/console.html -[35]: https://nodejs.org/api/console.html#console_console_log_data_args -[36]: https://nodejs.org/api/console.html#console_console_warn_data_args -[37]: https://nodejs.org/api/console.html#console_console_error_data_args -[38]: https://nodejs.org/en/docs/guides/blocking-vs-non-blocking/ -[39]: https://nodejs.org/api/events.html#events_class_eventemitter -[40]: https://nodejs.org/api/events.html#events_events -[41]: https://csv.js.org/parse/api/ -[42]: https://csv.js.org/parse/api/stream/ -[43]: https://csv.js.org/parse/recipies/stream_pipe/ -[44]: https://nodejs.org/api/stream.html#stream_stream -[45]: https://developer.mozilla.org/it/docs/Web/JavaScript/Reference/Global_Objects/Array/map -[46]: https://d3js.org/ -[47]: https://observablehq.com/@d3/gallery -[48]: https://medium.com/dailyjs/the-trouble-with-d3-4a84f7de011f -[49]: https://github.com/jsdom/jsdom -[50]: https://github.com/d3-node/d3-node -[51]: https://www.d3indepth.com/enterexit/ -[52]: https://nodejs.org/api/fs.html#fs_fs_writefilesync_file_data_options -[53]: https://opensource.com/sites/default/files/uploads/fit_node.jpg (Plot and fit of the dataset obtained with Node.js) -[54]: https://creativecommons.org/licenses/by-sa/4.0/ diff --git a/sources/tech/20200626 Advice for getting started with GNOME.md b/sources/tech/20200626 Advice for getting started with GNOME.md deleted file mode 100644 index b1d311e6a9..0000000000 --- a/sources/tech/20200626 Advice for getting started with GNOME.md +++ /dev/null @@ -1,155 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Advice for getting started with GNOME) -[#]: via: (https://opensource.com/article/20/6/gnome-users) -[#]: author: (Opensource.com https://opensource.com/users/admin) - -Advice for getting started with GNOME -====== -The GNOME desktop is a unified interface for Linux that offers lots of -extensions to customize your experience. Here's some advice from GNOME -users on how to get the most from it. -![Digital images of a computer desktop][1] - -GNOME is one of the most popular Linux desktops today. It started as a humble desktop called the GNU Network Object Model Environment (GNOME) and was built on top of the GIMP GTK libraries. Its 1.0 release [was announced in 1999][2], just two years after the project got started. - -Today, the most widely used Linux distributions provide GNOME 3 as their graphical desktop, and it's a great place to start learning Linux. As with any open source desktop, GNOME is extremely amenable to customization. You can alter and add to GNOME until it best suits your unique style of work. - -But the eternal question is: should you? - -We asked GNOME users their thoughts on this question, and some argue it's easier to learn GNOME (and Linux in the process) by using the desktop as delivered from the GNOME developers. - -> Going against the grain, I’d recommend using stock GNOME first and getting completely comfortable with it before delving into any extensions. —John Allison - -> GNOME may need some getting used to. It might turn out to be indigestible, or it might turn out to be the single best way to interact with a Linux machine. Your mileage may vary. —Alexey Rusakov - -> I don’t necessarily like the idea of recommending extensions. While they can be useful, every time someone complains about GNOME being unstable, it ends up being due to some sort of extension. Sometimes I feel as though recommending extensions to GNOME users creates the culture of installing a ginormous number of extensions to make GNOME something that it isn’t, and then the entire desktop comes crashing down. For me, my policy is to use as few extensions as possible. I really like the default GNOME layout with few or no changes. —Jay LaCroix - -It was a common theme among the responses—users new to GNOME should learn GNOME before changing it. - -### New users - -GNOME is deceptively simple—when you turn on your Linux computer, you end up on a desktop with only a few obvious prompts. There's the Activities menu in the upper left corner of the screen and a typical system tray in the upper right. - -Clicking on the Activities menu reveals an overlay containing an application dock. Clicking on the grid icon on the dock shows your installed applications. - -Default apps include the same kinds of services you'd expect from any other desktop—a file manager, PDF reader, network manager, system settings or control panel, and so on. There are also some unexpected but nice defaults. For instance, GNOME includes a robust [virtualization application][3]. - -GNOME has worked its way into becoming the unifying interface for most Linux users. While each distribution has its own convention for package management, software development practices, and nearly everything else, GNOME is a unified front. If you learn GNOME, you learn a common "language" for interacting with the graphical side of Linux. - -GNOME works hard at consistency, too. For instance, one key that is often ignored on keyboards is the Super key, which is the key with (usually) a Windows logo on it, or the Command key on Mac. GNOME uses this as a global hotkey, meaning that, no matter what application you're in, the Super key always talks to GNOME (any application can use the Super key, but few do). That means you have access to desktop functions regardless of what window is currently in focus. - -That's not true for most key combos based around Control or Alt. Being able to "jump" out of an application to access desktop functions is an underrated feature, and once you get used to it, you start to miss it when using other desktops. - -Here's some insight from our responders about acclimating to the GNOME way of doing things: - -> Learn one environment well, and then you may try other ones. —Marcin Juszkiewicz - -> Learn some of the handy shortcuts before attempting to define your own. -> -> * Super+Arrowup to maximize a window -> * Super+Arrowup to minimize a window -> * Super+Arrowleft or Super+ArrowRight to tile the window to take up half the screen -> * Super+PageUP or Super+PageDown to change workspace -> * Launch apps: Super, and then type 3-4 letters of the app you want to Launch (for example, f-i-r-e for Firefox, and so on) -> * Calculations: Super, and then type a simple equation (9*9) for a quick calculation -> - -> -> It’s a beautiful desktop, and it makes learning a new environment fun. Then again, learning something new can also be hard, so if you’re a new user, most of the people responding to us agreed that a slow and steady approach is best. Get familiar with your surroundings before jumping to change everything. —Andreas Nilsson - -> This might be a tough habit to unlearn for many users, but change from _mouse first_ to _Super key first_ for window switching, desktop navigation, launching, and searching. —Tim Quinlan - -### Built-in help - -Need help? There is a tutorial built-in. - -> We have a Help application in GNOME that gets launched at first boot. It has quick videos showing how to launch applications, manage windows and workspaces, and more. You can always find the Help application by searching for it in the Activities screen, or launch help from a terminal. —Felipe Borges - -### Get more apps - -Getting to know a desktop is one thing, but a desktop can only do so much. Obviously, at some point, you're going to want more applications so you can get work done. - -GNOME has an "app store" called Software that offers hundreds of open source applications you can install with a single click. It's topical, convenient, and easy. - -![GNOME software installer][4] - -### Experienced users - -If you're used to trying out different Linux desktops, then customizing your environment is nothing new to you. For GNOME, the easiest and most obvious way to customize the desktop beyond what GNOME provides you in Settings is [Tweaks][5], available from your Software app. - -![GNOME tweaks menu][6] - -Tweaks lets you customize practically anything—themes, the buttons that show up in your window bars, GNOME extensions, fonts, power settings, startup applications, and much more. - -Here is how some users set up their GNOME desktops: - -> [Matt Broberg][7] -> -> * Learn how to [get started with GNOME extensions][8]. -> * Customize the look of GNOME with [GNOME-look.org][9]. -> * All GNOME customizations (extensions included) are saved to a user’s `$HOME/.config` directory, so if I migrate my home directory to another computer, or I put my configs into Git management, I can keep my environment consistent. -> - - -> Daniel Alley -> -> * Install [Dash to Dock][10], [Caffeine][11], [Disconnect Wifi][12], and [Sound Input and Output Device Chooser][13] extensions. -> * Enable minimize and maximize buttons in window bars with GNOME Tweak tool. -> - - -> Grzegorz Grzybek -> -> * One of my favorite extensions is [GTK Title Bar][14], which removes title bars of non-GNOME apps when they’re put into fullscreen mode. -> - - -### Try something the same, or try something different - -GNOME was a direct response to the KDE desktop, which, at the time, was not licensed as [free software][15], and its original design played to the expectations of a KDE user. - -![GNOME desktop example with Fedora][16] - -It has come a long way since the early days and stands beside (and in many ways surpasses) the best-known desktops on other platforms. GNOME 3 is a progressive desktop, moving toward a unified interface for interfaces driven by keyboard, mouse, and touch. It's designed to balance beauty with resource requirements, innovation with familiarity, and efficiency with intuition. - -![GNOME 3 desktop][17] - -But if you're finding that you're familiar enough with GNOME but still not enjoying it, then there's nothing stopping you from trying something entirely different. In fact, it's common to try many different [desktops and window managers][18] on Linux and BSD because having choice in how you interact with your own computer is arguably the best embodiment of the open source spirit. You get to use your technology on your own terms. You never have to settle for what somebody else thinks is best. - -How do you configure GNOME? Do you use GNOME or a different desktop? Tell us in the comments! - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/6/gnome-users - -作者:[Opensource.com][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/admin -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/computer_desk_home_laptop_browser.png?itok=Y3UVpY0l (Digital images of a computer desktop) -[2]: https://www.gnome.org/press/1999/03/gnome-1-0-released/ -[3]: https://opensource.com/article/19/5/getting-started-gnome-boxes-virtualization -[4]: https://opensource.com/sites/default/files/uploads/gnome-software-installer.png (GNOME software installer) -[5]: https://wiki.gnome.org/action/show/Apps/Tweaks?action=show&redirect=Apps%2FGnomeTweakTool -[6]: https://opensource.com/sites/default/files/uploads/gnome-tweaks.png (GNOME tweaks menu) -[7]: https://opensource.com/users/mbbroberg -[8]: https://extensions.gnome.org -[9]: https://www.gnome-look.org -[10]: https://extensions.gnome.org/extension/307/dash-to-dock/ -[11]: https://extensions.gnome.org/extension/517/caffeine/ -[12]: https://extensions.gnome.org/extension/904/disconnect-wifi/ -[13]: https://extensions.gnome.org/extension/906/sound-output-device-chooser/ -[14]: https://extensions.gnome.org/extension/1732/gtk-title-bar/ -[15]: https://www.fsf.org/about/what-is-free-software -[16]: https://opensource.com/sites/default/files/uploads/gnome_desktop.png (GNOME desktop example with Fedora) -[17]: https://opensource.com/sites/default/files/uploads/advent-gnome_0.jpg (GNOME 3 desktop) -[18]: https://opensource.com/article/20/5/linux-desktops diff --git a/sources/tech/20200629 Use intent parsers for your open source home automation project.md b/sources/tech/20200629 Use intent parsers for your open source home automation project.md deleted file mode 100644 index 8730ac5c76..0000000000 --- a/sources/tech/20200629 Use intent parsers for your open source home automation project.md +++ /dev/null @@ -1,600 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Use intent parsers for your open source home automation project) -[#]: via: (https://opensource.com/article/20/6/mycroft-intent-parsers) -[#]: author: (Steve Ovens https://opensource.com/users/stratusss) - -Use intent parsers for your open source home automation project -====== -Use Padatious, Adapt, conversational context, and dialogs to start -programming your first voice AI. -![Working from home at a laptop][1] - -In [part 1][2] and [part 2][3] of this series on the [Mycroft][4] open source voice assistant, I laid the groundwork for learning how to create a skill. In [part 3][5], I walked through creating an outline for a skill and recommended creating the skill in pure Python first to ensure the methods work as intended. That way, when things go wrong, you know it is related to how your Mycroft skill is constructed and not the code itself. - -In this article, you will enhance the outline from part 3 by adding: - - * Mycroft entities - * Padatious intents - * Adapt intents - * Dialogs - * Conversational contexts - - - -The code for this project can be found in [my GitLab][6] repository. - -Let's get to it! - -### Improve your skill - -As a reminder, the purpose of this project is to use Mycroft to add items to shopping lists in the [OurGroceries][7] app. However, this tutorial can be applied to a variety of home automation applications like turning on your lights, getting the morning weather report, or controlling your entertainment systems. - -Here's what the skill's outline looks like so far: - - -``` -from mycroft import intent_file_handler, MycroftSkill, intent_handler -from mycroft.skills.context import adds_context, removes_context - -class OurGroceriesSkill(MycroftSkill): -    def __init__(self): -        MycroftSkill.__init__(self) - -    # Mycroft should call this function directly when the user -    # asks to create a new item -    def create_item_on_list(self, message): -        pass - -    # Mycroft should also call this function directly -    def create_shopping_list(self, message): -        pass - -    # This is not called directly, but instead should be triggered -    # as part of context aware decisions -    def handle_dont_create_anyways_context(self): -        pass - -    # This function is also part of the context aware decision tree -    def handle_create_anyways_context(self): -        pass - -    def stop(self): -        pass - -def create_skill(): -    return OurGroceriesSkill() -``` - -As it stands, Mycroft will load the skill successfully, but it won't do anything because all the methods have the command `pass` in them. For now, ignore the `__init__(self)` method and start working with the `create_item_on_list` method. From the comments, you can see the intent is for Mycroft to call this method directly. That means that you need to declare an _intent_. How do you do that? - -### Working with intents - -You may have noticed that the [outline][8] `mycroft-msk` created (in the third article) has what looks like a weird function, `@intent_file_handler('ourgroceries.intent')`, above the `handle_test` method. These are special notations in Python called decorators (if you want, head over to Real Python for a [primer on Python decorators][9]). For this tutorial, it is sufficient to know that a decorator is a way to pass your function into a prebuilt function developed by Mycroft. This saves a lot of work and boilerplate code. - -Recall from part three of this series that this project uses two intent parsers: Padacious and Adapt, which I described in the second article. - -#### Padatious intents - -So how do you know which decorator to use and where to use it? Great questions! I'll start with Padatious, which is the easier of the two to understand. If you recall from the second article, [Padatious][10] skills are _trained_ based on phrases that the skill's developer decides are relevant for the skill. As Mycroft may install many skills using the Padatious intent engine, each intent is given a score by the neural network module that Mycroft employs. Mycroft then chooses the highest-scoring intent and executes its functions. - -The phrases which Mycroft will use to train the intent are placed inside a file with a `.intent` file extension. You can have multiple `.intent` files, but you must reference each file explicitly. That means if you have `create.item.intent` and `create.category.intent`, there will be no confusion about which file your variables are populated from, as you must call them by file name. As you can see in the output from `mycroft-msk`, the decorator is intuitively named `@intent_file_handler()`. Simply use the name of the file as the argument for the decorator, such as `@intent_file_handler("create.item.intent")`. - -Think about what phrases someone might use to add an item to a shopping list. Since the motivating factor for this skill was using Mycroft to create a grocery list, the example code uses food-related terms, but you could use generic terms. With that said, here are some phrases you might say to add an item to your grocery list: - - * Add tomatoes to my shopping list - * Add tomatoes to the grocery list - * Add tomatoes to Costco list - - - -You may choose to have some grammatically incorrect phrases as well, to account for Mycroft misunderstanding the user's voice. From the list above, what pieces of information are programmatically relevant? `tomatoes`, `shopping list`, `grocery list`, and `Costco list`. The official documentation refers to this type of object as an _entity_. You can think of an entity as a variable, if that makes more sense to you. This will become clearer later when you create an intent file. While the `mycroft-msk` command will put intents in `locale/en-us` by default, I put mine under `vocab/en-us/`. Why? Well, that's because the Adapt intent parser stores its files in `vocab`, and I prefer to keep all my intent files in the same location. My file `vocab/en-us/create.item.intent` starts with: - - -``` -`add {Food} to my {ShoppingList}` -``` - -This defines the _entities_ `Food` and `ShoppingList`. - -**IMPORTANT NOTE**:  Padatious entities are **not** case-sensitive, and Padatious interprets everything in lower-case. For example, `ShoppingList` will be `shoppinglist`. - -Now that you have an intent, have Mycroft say a phrase containing your _entities_. Don't forget to add the intent decorator! Your new function will look like this: - - -``` -    @intent_file_handler("create.item.intent") -    def create_item_on_list(self, message): -        """ -        This function adds an item to the specified list - -        :param message: -        :return: Nothing -        """ -        item_to_add = message.data.get('food') -        list_name = message.data.get('shoppinglist') -        self.speak("Adding %s to %s" % (item_to_add, list_name)) -``` - -The graphic below uses three phrases: - - * Add tomatoes to my shopping list - * Add nails to my hardware list - * Add buns to groceries list - - - -Mycroft will not be able to figure out the intent behind one of these phrases. Can you guess which one and why? - -![Mycroft processing intent][11] - -(Steve Ovens, [CC BY-SA 4.0][12]) - -In case the video was a little too fast for you, here's the answer: Mycroft can't process the phrase `add buns to groceries list` because it is missing the keyword `my`. The intent explicitly says `add {Food} to my {ShoppingList}`. Without the word `my` as input from the user, the Padatious intent for the skill scores low and, therefore, Mycroft doesn't choose this skill to handle the request. The simplest solution is to add a new line to your intent file, like this: - - -``` -`add {Food} to {ShoppingList}` -``` - -Mycroft can often reload skills when it detects a change, but I prefer to restart Mycroft's skills section to make sure. I also clear the logs a lot during testing, so I run the following command to do everything in one line: - - -``` -` ./stop-mycroft.sh skills;sudo rm -f /var/log/mycroft/skills.log; ./start-mycroft.sh skills; mycroft-cli-client` -``` - -Testing the skill after Mycroft restarts yields the following results: - - -``` -add buns to groceries list                                                                 - >> Adding buns to groceries list -``` - -In case it is not clear, any response Mycroft makes in the `mycroft-cli-client` is prefixed by `>>` to indicate its response. Now that you have a basic intent, go back and review the objectives for this skill from part 3 of this series: - - 1. Login/authenticate - 2. Get a list of the current grocery lists - 3. Add item to a specific grocery list - 4. Add item to a category under a specific list - 5. Be able to add a category (since OurGroceries allows items to be placed in categories) - - - -Ignore the first two items for now—those deal with the online portion of the project, and you need to complete the other objectives first. For the third item, you have a basic intent that, in theory, should be able to take the _entities_ Mycroft detects and turn them into variables in the Python code. For the fourth item on the list, add two new lines to your intent: - - -``` -add {Food} to my {ShoppingList} under {Category} -add {Food} to {ShoppingList} under {Category} -``` - -You also need to alter your function slightly. When using the Padatious intent parser, _entities_ are returned via the `message.data.get()` function. This function will return `None` if the entity is undefined. In other words, if Mycroft cannot parse `{Category}` from an `utterance` the user makes, `message.data.get()` will return `None`. With this in mind, here is some quick test code: - - -``` -    @intent_file_handler("create.item.intent") -    def create_item_on_list(self, message): -        """ -        This function adds an item to the specified list - -        :param message: -        :return: Nothing -        """ -        item_to_add = message.data.get('food') -        list_name = message.data.get('shoppinglist') -        category_name = message.data.get('category') -        if category_name is None: -            self.speak("Adding %s to %s" % (item_to_add, list_name)) -        else: -            self.speak("Adding %s to %s under the category %s" % (item_to_add, list_name, category_name)) -``` - -Here is an example that tests these code changes: - -![Mycroft testing code changes][13] - -(Steve Ovens, [CC BY-SA 4.0][12]) - -In the example, Mycroft responds with `>> Adding nails to my hardware list under`, yet the only time you told Mycroft to say the word `under` is when `category_name` has a value other than `None`. This is because the intent parser is interpreting the word `under` as a part of the entity `ShoppingList`. Because the utterance had the word `my` in it, the sentences that matched the utterances could have been either: - - 1. `add {Food} to my {ShoppingList}` -or - 2. `add {Food} to my {ShoppingList} under {Category}` - - - -Since the user did not state the `{Category}`, Mycroft selected the first statement as the most correct. This means that anything _after_ the word `my` would be cast into the entity `{ShoppingList}`. Since, therefore, `{Category}` is `None`, Mycroft speaks, "Adding nails to my hardware list under" instead of "Adding nails to my hardware list under None." - -Padatious may seem a bit simplistic at first. For each phrase you need Mycroft to match, simply add a line to the intent file. However, with a complex intent, you could have several dozen lines attempting to cover all the different utterances you want to handle. - -There is another option that may be worth considering. Padatious intents support _parentheses expansion_. This means you can use a form of _OR_ statements to cut down on the number for lines in an intent. Going back, the example is trying to account for three cases: - - -``` -add {Food} to my {ShoppingList} -add {Food} to my {ShoppingList} under {Category} -add {Food} to the {ShoppingList} -add {Food} to the {ShoppingList} under {Category} -add {Food} to {ShoppingList} -add {Food} to {ShoppingList} under {Category} -``` - -If you want to rewrite this using an _OR_ statement to combine the `my` and `the` keywords, you could write: - - -``` -add {Food} to ( my | the ) {ShoppingList} -add {Food} to ( my | the ) {ShoppingList} under {Category} -add {Food} to {ShoppingList} -add {Food} to {ShoppingList} under {Category} -``` - -This removes two lines from the intent. Parentheses expansion also supports making something optional. So, if you want to make `the` and `my` optional and thus allow for the phrase `add {Food} to {ShoppingList}`, it would look like: - - -``` -add {Food} to ( | my | the ) {ShoppingList} -add {Food} to ( | my | the ) {ShoppingList} under {Category} -``` - -This simple change covers all three scenarios (once you restart the Mycroft skills subsystem). You can go a step further and condense this into a single line if you wish: - - -``` -`add {Food} to ( | my | the ) {ShoppingList} ( | under {Category})` -``` - -**Note:** For easier readability, use white spaces in your intent parentheses expansion. - -To summarize the important points about Padatious intent parsing: - - * You have to give several examples of phrases for Mycroft to come up with the correct match. - * Padatious intents use entities such as `{Food}` to identify object values that can be retrieved from your Python code. - * Entities are _always lower-case_ regardless of how you declare them in the intent file. - * If an entity cannot be parsed from an utterance, its value is `None`. - * The decorator for Padatious intents is `@intent_file_handler('my.intent.file.intent')`. - - - -#### Adapt intents - -Unlike Padatious intents, where you specify entities in the intent file, the Adapt intent parser works with a series of keywords that work in combination with regular expression (regex) files to attempt to capture an entity. You would use Adapt over Padatious when you: - - 1. Expect the utterance to be complex and the more robust parsing of regex is required - 2. Want or need Mycroft to be context-aware - 3. Need intents to be as lightweight as possible - - - -That said, the `voc` files Adapt uses are quite flexible. They can include a single word (as shown in the [official documentation][14]), or they can include the start of a sentence you want to react to. - -As one goal of this project is to have Mycroft create a new shopping list in the OurGroceries app, I wanted to add in some rudimentary checking so that the user is informed if a list with a similar name exists and asked if they still want to create a new list. This should cut down on list duplication and misplacement of items. - -Mock up some code, and then you can deal with the vocab and regex files. While you could use Pytest or similar unit tests to assert specific values, for the sake of simplicity, you will create a list called "shopping list." The Python mock function will look like this: - - -``` -    def create_shopping_list(self, message): -        fake_list = ["shopping list"] -        self.new_shopping_list_name = message.data['ListName'].lower() -        for current_shopping_list in fake_list: -            try: -                if self.new_shopping_list_name in current_shopping_list: -                    if self.new_shopping_list_name == current_shopping_list: -                        self.speak("The shopping list %s already exists" % self.new_shopping_list_name ) -                        break -                    else: -                        self.speak("I found a similar naming list called %s" % current_shopping_list) -                        # This hands off to either handle_dont_create_anyways_context or handle_create_anyways_context -                        # to make a context aware decision -                        self.speak("Would you like me to add your new list anyways?", expect_response=True) -                        break -                else: -                    self.speak("Ok creating a new list called %s" % self.new_shopping_list_name) -            except Exception as ex: -                print(ex) -                pass -``` - -Notice I am using a `forloop` to iterate over `fake_list`. That is because, in theory, multiple lists will be returned from the OurGroceries app. Also note the `try/except` block; I have given a general pass on the exception because, right now, I don't know what kind of exceptions I may run into. As you use and debug your code, you can tighten this up a bit. - -Another line to note is: - - -``` -`self.speak("Would you like me to add your new list anyways?", expect_response=True) ` -``` - -This bit of code will have Mycroft prompt the user for a response and store the result. I'll talk more about this bit of code in the conversational contexts section. - -#### Regular expressions, entities, and Adapt intents - -Now you have some pseudo code, but you need to add the decorator for Mycroft to action your code. You need to create three files for this to work: two vocab files and one regex file. The regex file, which I will name `add.shopping.list.rx`, looks like this: - - -``` -start a new list called (?P<ListName>.*) -create a new list called (?P<ListName>.*) -add a new list called (?P<ListName>.*) -``` - -You could make this a one-liner, but for simplicity's sake, keep it as three lines. Note this strange-looking notation: `(?P.*)`. This is the part of the code that captures and creates the entity. The entity, in this case, is called `ListName`. For checking your syntax, I recommend [Pythex][15]. It is very helpful when I am debugging my regex (I'm pretty terrible at regex). - -**IMPORTANT NOTE:** Adapt intents are case sensitive. - -#### Adapt and vocab files - -Now that your regex includes the full sentences you expect, create your two vocab files. The first file is called `CreateKeyword.voc`. As you can surmise from the file name, all the words you want to associate with the `create` action should reside here. This file is very simple: - - -``` -start a new -create a new -add a new -``` - -In the documentation, you will often see only a single word per line. However, due to some Mycroft default skills using `start` and `create`, I need to add words so that Mycroft will pick my skill appropriately. - -The second file is even easier. It's called `ListKeyword.voc` and has a single word in it: - - -``` -`list` -``` - -With these files defined, you can now construct your decorator: - - -``` -`@intent_handler(IntentBuilder('CreateShoppingIntent').require('CreateKeyword').require('ListKeyword').require("ListName"))` -``` - -The first argument in the `IntentBuilder` is `'CreateShoppingIntent'`; this is the name of the intent and is completely optional. If you want to leave this blank, you can. The `require` section is a bit confusing. When it comes to keywords, the argument for `require` is the name of the file without the file extension. In this case, one of the files is called `ListKeyword.voc`, so the argument being passed into `require` is just `'ListKeyword'`. - -While you can name your vocab files anything you want, I highly recommend using the word `Keyword` in the file so that when you are building your `intent_handler` decorator, it is clear what you are requiring. - -If `require` is actually an entity from a regex file, the argument for `require` is the name of the entity as you defined it in the regex. If your regex was `start a new list called (?P.*)`, then you would write `require('NewList')`. - -Restart the Mycroft skills subsection and try it out. You should see this in the Mycroft command-line interface: - - -``` - add a new list called hardware - >> Ok creating a new list called hardware -  - create a new list called hardware - >> Ok creating a new list called hardware -  - start a new list called hardware - >> Ok creating a new list called hardware -``` - -#### Conversational contexts - -Great, it works! Now add the following decorator to your function: - - -``` -`@adds_context("CreateAnywaysContext")` -``` - -This decorator is tied to the [conversational context][16] that Mycroft supports. Conversational contexts are essentially where you can speak normally to Mycroft and it will understand your meaning. For example, you could ask: "Who was John Quincy Adams?" After Mycroft responds, saying something like "John Quincy Adams was the sixth president of the United States," you could ask: "How old was he when he became president?" If you ask the second question first, Mycroft has no way to know who the pronoun _he_ refers to. However, in the context of this conversation, Mycroft understands that _he_ refers to John Quincy Adams. - -Getting back to creating a conversational context, the argument for its decorator is the name of the context. This example calls the context `CreateAnywaysContext` and hence, the full decorator is `@adds_context("CreateAnywaysContext")`. This mock method is now complete. However, you now need to add two simple methods to handle the user's feedback. You can simplify the grocery list skill by requiring either a yes or a no answer. Create a `YesKeyword.voc` and a `NoKeyword.voc`, and place the words `yes` and `no` in them, respectively. - -Now create two more methods in your Python: - - -``` -@intent_handler(IntentBuilder('DoNotAddIntent').require("NoKeyword").require('CreateAnywaysContext').build()) -@removes_context("CreateAnywayscontext") -def handle_dont_create_anyways_context(self): -    """ -    Does nothing but acknowledges the user does not wish to proceed -    Uses dont.add.response.dialog -    :return: -    """ -    self.speak_dialog('dont.add.response') - -    @intent_handler(IntentBuilder('AddAnywaysIntent').require("YesKeyword").require('CreateAnywaysContext').build()) -@removes_context("CreateAnywayscontext") -def handle_create_anyways_context(self): -    """ -    If the user wants to create a similarly named list, it is handled here -    Uses do.add.response.dialog -    :return: -    """ -    self.speak_dialog('do.add.response') -``` - -There are two things here you have not seen so far: - - 1. `@remove_context` - 2. `self.speak_dialog` - - - -If a method that requires `CreateAnywaysContext` is called, the decorator `@remove_context` gets rid of the context so that Mycroft does not accidentally action a context more than once. While multiple contexts can be applied to a method, this project will not use them. - -#### Dialogs - -Dialogs are files that have several prebuilt responses that Mycroft can pick from. These dialogs are stored in `dialog/{language tag}/`, and the language tag is based on the IETF standard. Examples can be found on [Venea.net][17] in the IETF LanguageTag column. - -Mycroft picks randomly from the list of sentences in a specified dialog file. Why would you use a dialog file instead of implementing `self.speak` in Python? The answer is simple: When you create and use a dialog file, you do not have to change the Python code to support other languages. - -For example, if the dialog file called `dont.add.response.dialog` exists under `en-us` with the following content: - - -``` -Ok... exiting -Gotcha I won't add it -Ok I'll disregard it -Make up your mind! -``` - -You could also create `de-de/dont.add.response.dialog` with the following content: - - -``` -Ok... Beenden -Erwischt Ich werde es nicht hinzufügen -Ok, ich werde es ignorieren. -Entscheiden Sie sich! -``` - -In your Python code, you would use `self.speak_dialog('dont.add.response')` to randomly select one of the answers for Mycroft to use. If a user's Mycroft language is set to German, Mycroft will automatically select the correct dialog and play the dialog in German instead of English. - -To wrap up this section, create two files under `dialog/en-us`. For `dont.add.response.dialog`, use the same content as in the above example. For `do.add.response.dialog`, use: - - -``` -Ok adding it now -Sure thing -Yup yup yup -``` - -At this point in this project, your tree should look something like this: - - -``` -├── dialog -│   └── en-us -│       ├── do.add.response.dialog -│       └── dont.add.response.dialog -├── __init__.py -├── regex -│   └── en-us -│       └── ADD.shopping.list.rx -└── vocab -    └── en-us -        ├── CREATE.item.intent -        ├── CreateKeyword.voc -        └── ListKeyword.voc -``` - -Note that I created the files by hand. If you used the `mycroft-msk create` method, you might have `locale` directories, `settingsmeta.yaml,` or other artifacts. - -#### Wrapping up - -We've covered a lot so far. You have implemented the Padatious intent parser to, theoretically, add a new item to a list, whether or not you put it under a category. You have also used the Adapt intent parser to add a new category. You used conversational context to prompt the user for confirmation if a similar list already exists. Finally, you learned the concept of dialogs as a way for Mycroft to provide varied confirmation responses to the user. - -Currently, the code looks like: - - -``` -from mycroft import intent_file_handler, MycroftSkill, intent_handler -from mycroft.skills.context import adds_context, removes_context -from adapt.intent import IntentBuilder - -class OurGroceriesSkill(MycroftSkill): -    def __init__(self): -        MycroftSkill.__init__(self) - -    # Mycroft should call this function directly when the user -    # asks to create a new item -    @intent_file_handler("create.item.intent") -    def create_item_on_list(self, message): -        """ -        This function adds an item to the specified list - -        :param message: -        :return: Nothing -        """ -        item_to_add = message.data.get('food') -        list_name = message.data.get('shoppinglist') -        category_name = message.data.get('category') -        if category_name is None: -            self.speak("Adding %s to %s" % (item_to_add, list_name)) -        else: -            self.speak("Adding %s to %s under the category %s" % (item_to_add, list_name, category_name)) - -    # Mycroft should also call this function directly -    @intent_handler(IntentBuilder('CreateShoppingIntent').require('CreateKeyword').require('ListKeyword').require("ListName")) -    def create_shopping_list(self, message): -        fake_list = ["shopping list"] -        self.new_shopping_list_name = message.data['ListName'].lower() -        for current_shopping_list in fake_list: -            try: -                if self.new_shopping_list_name in current_shopping_list: -                    if self.new_shopping_list_name == current_shopping_list: -                        self.speak("The shopping list %s already exists" % self.new_shopping_list_name ) -                        break -                    else: -                        self.speak("I found a similar naming list called %s" % current_shopping_list) -                        # This hands off to either handle_dont_create_anyways_context or handle_create_anyways_context -                        # to make a context aware decision -                        self.speak("Would you like me to add your new list anyways?", expect_response=True) -                        break -                else: -                    self.speak("Ok creating a new list called %s" % self.new_shopping_list_name) -            except AttributeError: -                pass -    # This is not called directly, but instead should be triggered -    # as part of context aware decisions -    @intent_handler(IntentBuilder('DoNotAddIntent').require("NoKeyword").require('CreateAnywaysContext').build()) -    @removes_context("CreateAnywayscontext") -    def handle_dont_create_anyways_context(self): -        """ -        Does nothing but acknowledges the user does not wish to proceed -        Uses dont.add.response.dialog -        :return: -        """ -        self.speak_dialog('dont.add.response') - -    # This function is also part of the context aware decision tree -    @intent_handler(IntentBuilder('AddAnywaysIntent').require("YesKeyword").require('CreateAnywaysContext').build()) -    @removes_context("CreateAnywayscontext") -    def handle_create_anyways_context(self): -        """ -        If the user wants to create a similarly named list, it is handled here -        Uses do.add.response.dialog -        :return: -        """ -        self.speak_dialog('do.add.response') - -    def stop(self): -        pass - -def create_skill(): -    return OurGroceriesSkill() -``` - -  - -In the next article, I will go into logging, getting settings from the web UI, and continuing to fill out the skill into something more useful. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/6/mycroft-intent-parsers - -作者:[Steve Ovens][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/stratusss -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/wfh_work_home_laptop_work.png?itok=VFwToeMy (Working from home at a laptop) -[2]: https://opensource.com/article/20/6/open-source-voice-assistant -[3]: https://opensource.com/article/20/6/mycroft -[4]: https://mycroft.ai/ -[5]: https://opensource.com/article/20/6/outline-mycroft-voice-assistant-skill -[6]: https://gitlab.com/stratus-ss/mycroft-ourgroceries-skill -[7]: https://www.ourgroceries.com/overview -[8]: https://opensource.com/article/20/6/outline-mycroft-voice-assistant-skill#decorator -[9]: https://realpython.com/primer-on-python-decorators/ -[10]: https://mycroft-ai.gitbook.io/docs/skill-development/user-interaction/intents/padatious-intents -[11]: https://opensource.com/sites/default/files/uploads/mycroft-padatious-first-intent.gif (Mycroft processing intent) -[12]: https://creativecommons.org/licenses/by-sa/4.0/ -[13]: https://opensource.com/sites/default/files/uploads/mycroft-padatious-category1.gif (Mycroft testing code changes) -[14]: https://mycroft-ai.gitbook.io/docs/skill-development/user-interaction/intents/adapt-intents -[15]: https://pythex.org/ -[16]: https://mycroft-ai.gitbook.io/docs/skill-development/user-interaction/conversational-context -[17]: https://www.venea.net/web/culture_code diff --git a/sources/tech/20200630 10 ReactJS tools to boost your web development skills.md b/sources/tech/20200630 10 ReactJS tools to boost your web development skills.md deleted file mode 100644 index 827b3d798b..0000000000 --- a/sources/tech/20200630 10 ReactJS tools to boost your web development skills.md +++ /dev/null @@ -1,248 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (10 ReactJS tools to boost your web development skills) -[#]: via: (https://opensource.com/article/20/6/reactjs-tools) -[#]: author: (Prayaag Kasundra https://opensource.com/users/prayaag-kasundra) - -10 ReactJS tools to boost your web development skills -====== -Increase your value to employers by learning these top tools for -developing web apps in React. -![Woman sitting in front of her computer][1] - -Did you know most résumés submitted for jobs get rejected with just a single glance? That's a daunting fact if you are trying to get started in web development, but there are ways to improve what you have to offer prospective employers and clients. For application developers, now is a great time to increase your skills, and open source is the best avenue for professional development. You don't need to attend university to learn new open source skills; all you need is a sense of direction and self-discipline. - -ReactJS is one of many skills you would be wise to learn on your way to becoming a successful web developer. If you're already comfortable with JavaScript and HTML, it is a natural next technology to learn. If you're not familiar with them yet, then you'll find ReactJS a great place to start as a programmer. - -In this article, I'll share my top 10 tools and libraries that will help you qualify for a job (or be a serious hobbyist, if you prefer) as a JavaScript developer. - -### What is React, and why should you learn it? - -React is a JavaScript library for user interface (UI) development that Facebook introduced in May 2013 (and still maintains). It uses JavaScript for development and simple state machine components that render dynamic content with ease. - -Because ReactJS is one of the most powerful frontend JavaScript libraries available, you should learn how to use it if you want to build amazing applications. It's a driving force behind the interfaces of Amazon, PayPal, BBC, CNN, and many other tech giants. Furthermore, the flexible library suits any need and can be plugged into your favorite tech stack to build lightweight apps. You can [use React][2] to build anything scalable—data dashboards, messaging apps, social networking applications, single-page applications, and even personal blog sites. - -One of the most effective ways to get the hang of React is by using its tools to build web apps for real-world projects. Not only will it help you learn the framework and tools, but it also gives you something to show off to prospective employers. - -### 1\. npm - -If you want to get started with JavaScript (including the React library), you need to install Node package manager ([npm][3]). Like the package manager that ships with your Linux distribution (or [Chocolatey][4] on Windows or [Homebrew][5] on macOS), npm provides a command to query a software repository and install what you need. This includes important libraries, like ReactJS components. - -You can probably install Node.js (and npm along with it) from your Linux distribution's repository. On Fedora or Red Hat Enterprise Linux: - - -``` -`$ sudo dnf install nodejs` -``` - -On Ubuntu or Debian: - - -``` -`$ sudo apt install nodejs npm` -``` - -If your distribution doesn't offer npm in its repo, visit [Nodejs.org][6] to find out how to install Node.js and npm. - -### 2\. Create React App - -[Create React App][7] is a boilerplate project for getting started with React. Before Facebook released Create React App, setting up a working project in React was a tedious task. But with this tool, you can set up a frontend build pipeline, project structure, developer environment, and app optimization for production in seconds with zero configuration. You can achieve all this with a single command. What's more, if you need a more advanced configuration, you can "eject" from Create React App and edit its config files directly. - -Create React App is open source under the MIT License, and you can access its [source code][8] in its GitHub repo. - -Install it with: - - -``` -npm start -npm init react-app my-app -``` - -If you don't want to use Create React App, other boilerplate options are [React Boilerplate][9] and [React Slingshot][10]. Both are well-maintained and open source under the MIT License. - -### 3\. React Sight - -[React Sight][11] is a commonly used visualization tool that provides a live component hierarchy tree (like a flowchart) of your entire app. It can be added directly as a Chrome extension and needs React dev tools for reading information about your app. With its rich interface, you can even add filters to focus on the components you need to interact with the most. By hovering on the nodes, you can display the current state and props. React Sight is very helpful for debugging a large and complex project. - -React Sight is open source under the MIT License, and you can access its [source code][12] in its GitHub repo. Install React Sight from the [Chrome web store][13]. - -### 4\. React Belle - -[React Belle][14] is a configurable React component library containing reusable components like Toggle, Rating, DatePicker, Button, Card, Select, and others to provide a smooth user experience. The components are customizable and support [ARIA][15] accessibility standards. It offers different themes, like the popular Belle and Bootstrap. - -Belle is open source under the MIT License, and you can access its [source code][16] in its GitHub repo. - -Install it with: - - -``` -`npm install belle` -``` - -### 5\. Evergreen - -Built on top of the React UI primitive, [Evergreen][17] is a UI framework that contains highly polished components that you can use to build your project. One thing that developers like about this tool is its hassle-free import of components. - -Evergreen is open source under the MIT License, and you can access its [source code][18] in its GitHub repo. - -Install it with: - - -``` -`npm install --save evergreen-ui` -``` - -### 6\. Bit - -[Bit][19] offers an online platform and command-line tool for publishing and sharing React apps. It is one of the best options if you are creating and sharing components. Its marketplace is a store where people can publish their React apps and other people can search for the components they need, so they don't have to reinvent the wheel every time they need a new React app. Bit's core features include: - - * Allows code reuse - * Increases design and development efficiency - * Retains UI and UX consistency - * Increases a project's stability - - - -Bit is open source under the Apache 2.0 License, and you can access its [source code][20] in its GitHub repo. - -Install it with: - - -``` -`$ npm install bit-bin --global` -``` - -### 7\. Storybook - -[Storybook][21] lets you set up a live development server that supports hot reloading, so you can create components in isolation from your whole project. It helps with component reuse, testability, and development speed. It also offers an online UI editor that allows you to develop, inspect, and eventually showcase your creations interactively. - -What's more, Storybook's API offers myriad features and facilitates configuration like no other. It is used in production by companies like Coursera, Squarespace, and Lonely Planet. - -Storybook is open source under the MIT License, and you can access its [source code][22] in its GitHub repo. - -First, install Storybook using the following commands (note that one uses an npx command, which is related to npm but unique):  - - -``` -`$ cd my-react-app`[/code] [code]`$ npx -p @storybook/cli sb init` -``` - -Next, run it with: - - -``` -`$ npm run storybook` -``` - -### 8\. Formik - -[Formik][23] helps in creating and validating forms for debugging, testing, and reasoning in React. It allows you to generate dynamic forms, so you don't have to manually change or update the state and props of form components. It is a step towards a faster and more pleasant development experience. - -Formik is open source under the MIT License, and you can access its [source code][24] in its GitHub repo. - -Install it with: - - -``` -`$ npm install formik --save` -``` - -### 9\. Immer - -[Immer][25] is a JavaScript library that enables you to modify nested objects without fear of mutating them. Its purpose is to make immutability in your code simple. - -Here are some of Immer's top features: - - * **Immer is strongly typed**: It is useful when your state object has a type. - * **Immer reduces boilerplate code**: Most state management tools require you to write a lot of boilerplate code. Immer is different. It lets you write less (and more concise) code. - * **Immer allows you to use JS data structures:** You can produce immutable states in Immer by using basic JS data structures. - - - -Immer is open source under the MIT License, and you can access its [source code][26] in its GitHub repo. - -Install it with: - - -``` -`$ npm install immer` -``` - -### 10\. React Proto - -[React Proto][27] is an application prototyping tool for developers and designers. It helps you layout your project structure to make decisions in advance, so you don't waste time making changes later in development. This tool specifically helps people who prefer design over coding; for example, you can drag and drop elements instead of writing them. The tool helps you mark all potential components and give them names, properties, and a hierarchy for prototyping. - -React Proto is open source under the MIT License, and you can access its [source code][28] in its GitHub repo. - -To install it, first, fork the [repository][28]. Next, install dependencies with: - - -``` -`$ npm install` -``` - -Run the application with: - - -``` -`$ npm start` -``` - -To start a development environment, run: - - -``` -`$ npm run dev` -``` - -### Boost your career with ReactJS tools - -There's no shortage of resources for JavaScript. To learn more about the frameworks I've mentioned in this article, plus many more, check out the [Awesome React][29] repository on GitHub, a list of awesome things related to React. - -By learning these 10 must-have tools, you'll boost your productivity and your résumé, and more importantly, you'll have a good grasp on JavaScript-based web development. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/6/reactjs-tools - -作者:[Prayaag Kasundra][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/prayaag-kasundra -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/OSDC_women_computing_3.png?itok=qw2A18BM (Woman sitting in front of her computer) -[2]: https://www.simform.com/why-use-react/ -[3]: https://www.npmjs.com/ -[4]: https://opensource.com/article/20/3/chocolatey -[5]: https://opensource.com/article/20/6/homebrew-mac -[6]: https://nodejs.org/en/download/package-manager/ -[7]: https://facebook.github.io/create-react-app/ -[8]: https://github.com/facebook/create-react-app -[9]: http://www.reactboilerplate.com/ -[10]: https://github.com/coryhouse/react-slingshot -[11]: http://www.reactsight.com/ -[12]: https://github.com/React-Sight/React-Sight -[13]: https://chrome.google.com/webstore/detail/react-sight/aalppolilappfakpmdfdkpppdnhpgifn -[14]: http://nikgraf.github.io/belle/ -[15]: https://en.wikipedia.org/wiki/WAI-ARIA -[16]: https://github.com/nikgraf/belle -[17]: https://evergreen.segment.com/ -[18]: https://github.com/segmentio/evergreen -[19]: https://github.com/teambit/bit -[20]: https://github.com/teambit/bit/blob/master/LICENSE -[21]: https://storybook.js.org/ -[22]: https://github.com/storybookjs/storybook -[23]: https://jaredpalmer.com/formik/ -[24]: https://github.com/jaredpalmer/formik -[25]: https://immerjs.github.io/immer/docs/introduction -[26]: https://github.com/immerjs/immer -[27]: https://react-proto.github.io/react-proto/ -[28]: https://github.com/React-Proto/react-proto -[29]: https://github.com/enaqx/awesome-react diff --git a/sources/tech/20200630 Using TensorFlow.js and Node-RED with image recognition applications.md b/sources/tech/20200630 Using TensorFlow.js and Node-RED with image recognition applications.md deleted file mode 100644 index cfec3f434b..0000000000 --- a/sources/tech/20200630 Using TensorFlow.js and Node-RED with image recognition applications.md +++ /dev/null @@ -1,113 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Using TensorFlow.js and Node-RED with image recognition applications) -[#]: via: (https://www.linux.com/news/using-tensorflow-js-and-node-red-with-image-recognition-applications/) -[#]: author: (Linux.com Editorial Staff https://www.linux.com/author/kazuhito-yokoi/) - -Using TensorFlow.js and Node-RED with image recognition applications -====== - -_This Linux Foundation Platinum Sponsor-Contributed article from [Hitachi][1] is about how to use **TensorFlow.js** and **Node-RED** for use with image recognition applications._ - -### Using TensorFlow.js and Node-RED - -TensorFlow.js is a JavaScript implementation of the [TensorFlow open source machine learning platform][2]. By using **TensorFlow.js**, learning and inference processing can be executed in real-time on the browser or the server-side with Node.js. [Node-RED][3] is a visual programming tool mainly developed for IoT applications.  - -According to [a recent InfoQ article on 2020 JavaScript web development trends][4], **TensorFlow.js** is classified as “Early Majority”, and **Node-RED** is classified as “Early Adopters” in their adoption cycles. And they are becoming increasingly popular with open source software developers. - -![Image: InfoQ][5] - -In this article, we’ll take a look at what you can do with these two trending open source software tools in combination. - -### Creating a sample image recognition flow with Node-RED - -Our objective will be to create a flow within **Node-RED** to recognize an object in an image, as depicted in the screenshot below. - -![Flow to be created in Node-RED][6] - -This flow can be observed after you upload a file from a browser using the yellow node component. The bottom left of the user interface displays the uploaded image in the “Original image” node. In the orange “Image recognition” node, the **TensorFlow.js** trained model is used to run Analyze for what is in the uploaded image (an aircraft). Finally, we will use the green “Output result” node in the upper right corner to output what is seen in the debug tab on the right. Additionally, an image annotated with an orange square under the [Image with annotation] node is displayed, and it’s easy to see what part of the image has been recognized. - -In the following sections, we will explain the steps for creating this flow. For this demo, Node-RED can run in the local environment (in this case, a Raspberry Pi) and also in a cloud environment — it will work regardless of platform choice. For our tests, Google Chrome was chosen for use with the Node-RED web user interface. - -### Installing a TensorFlow.js node - -The **Node-RED** flow library has several TensorFlow.js-enabled nodes. One of these is [node-red-contrib-tensorflow][7], which contains the trained models.  - -We’ll begin with installing the **TensorFlow.js** node in **Node-RED**. To install the node, go to the top-right menu of the flow editor. Click **“Manage Palette”** -> Go to **“Palette”** tab -> Select **“Install”** tab. After that, enter “**node-red-contrib-tensorflow”** in the search keyword field.  - -![Installing a TensorFlow.js node][8] - -As shown in the image above, the TensorFlow.js node to be used is displayed in the search results. Click the “install” button to install the TensorFlow.js node. Once the installation is complete, orange **TensorFlow.js** nodes will appear in the Analysis category of the left side palette.  - -![Analysis palette][9] - -Each **TensorFlow.js** node is described in the following table. These are all image recognition nodes, but they can also generate image data with annotation and perform other functions like image recognition, or offline, which is necessary for edge analytics. - -**#** | **Name** | **Description** | **Annotated Image** | **Offline Use** ----|---|---|---|--- -1 | cocossd | A node that returns the name of the object in the image | YES | MAY -2 | handpose | A node that estimates the positions of fingers and joints from a hand image | NONE | CAN’T -3 | mobilenet | A node that returns the name of the object in the image | NONE | MAY -4 | posenet | A node that estimates the positions of arms, head, and legs from the image of a person | YES | MAY - -  - -In addition, the following nodes, which are required to work with image data in Node-RED, should be installed in the same way. - -– **node-red-contrib-browser-utils**: A node that uploads image files and audio files from the flow editor - -– **node-red-contrib-image-output**: A node that displays an image on the flow editor - -After installing **node-red-contrib-browser-utils**, you should see the file-inject node, microphone node, and camera node in the input category. Also, once you have installed **node-red-contrib-image-output**, you should see the image node in the output category. - -### Creating a flow - -Now that we have the necessary nodes let’s create the flow. - -From the palette on the right, place a yellow file inject node, an orange **cocossd** node, and a green debug node (which will be renamed to **msg.payload** when placed in the workspace) and connect the ports of each node with “wires”. - -To check the image data flowing through the wire, place two image nodes (named image preview when placed on the workspace) under the flow. To output the image data from the file inject node and debug node respectively, connect to the output port, as shown in the illustration. - -![Completed Node-RED flow][10] - -Only the image preview node on the right side specifies the image data variables to be displayed, so it is necessary to change the node settings. To change the settings, double-click the image preview node to open the node properties screen. On the node property screen, the image data stored in **msg.payload** is displayed by default. By changing this to **msg.annotatedInput** as shown in the screenshot below, the image preview node will display the annotated image. - -![Image properties][11] - -Give each node an appropriate name, press the red deploy button on the upper right, and then click the button on the left side of the file inject node to upload the sample image file of the airport from your PC. - -![The recognized object in Node-RED][6] - -As shown, an image with orange annotation on the aircraft is displayed under the “Image with annotation” node. Also, you can see that the debug tab on the right side correctly displayed “airplane”.  - -Feel free to try this with images you have at your disposal and experiment with them to see if they can be recognized correctly. - -*About the author: Kazuhito Yokoi is an Engineer at Hitachi’s OSS Solution Center, located in Yokohama, Japan. * - --------------------------------------------------------------------------------- - -via: https://www.linux.com/news/using-tensorflow-js-and-node-red-with-image-recognition-applications/ - -作者:[Linux.com Editorial Staff][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://www.linux.com/author/kazuhito-yokoi/ -[b]: https://github.com/lujun9972 -[1]: http://www.hitachi.co.jp/ -[2]: https://www.tensorflow.org/overview -[3]: https://nodered.org/ -[4]: https://www.infoq.com/articles/javascript-web-development-trends-2020/ -[5]: https://www.linux.com/wp-content/uploads/2020/06/image1_infoq.jpg -[6]: https://www.linux.com/wp-content/uploads/2020/06/image2_flow.png -[7]: https://flows.nodered.org/node/node-red-contrib-tensorflow -[8]: https://www.linux.com/wp-content/uploads/2020/06/image3_installation.png -[9]: https://www.linux.com/wp-content/uploads/2020/06/image4_palette.png -[10]: https://www.linux.com/wp-content/uploads/2020/06/image5_flow.png -[11]: https://www.linux.com/wp-content/uploads/2020/06/image6_property.png diff --git a/sources/tech/20200630 What is End of Life in Ubuntu- Everything You Should Know About it.md b/sources/tech/20200630 What is End of Life in Ubuntu- Everything You Should Know About it.md deleted file mode 100644 index c3d67f5827..0000000000 --- a/sources/tech/20200630 What is End of Life in Ubuntu- Everything You Should Know About it.md +++ /dev/null @@ -1,182 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (What is End of Life in Ubuntu? Everything You Should Know About it) -[#]: via: (https://itsfoss.com/end-of-life-ubuntu/) -[#]: author: (Abhishek Prakash https://itsfoss.com/author/abhishek/) - -What is End of Life in Ubuntu? Everything You Should Know About it -====== - -If you have been following It’s FOSS for some time, you might have noticed that I publish news articles like Ubuntu XYZ version has reached end of life (EoL). - -This end of life is one of those essential concepts that every Ubuntu user should be aware of. - -This is why I decided to write this detailed guide to explain what does an Ubuntu release reaching end of life means, why it matters to you and how to check when your Ubuntu install has reaches end of life. - -### What is end of life in Ubuntu? - -![][1] - -First thing first, end of life is not really an Ubuntu-specific concept. It is a generic term widely used in the software industry. - -The end of life of a software means the software has reached the end of its predefined support period. Beyond this date, the software won’t get any feature, maintenance or security updates. - -You may continue using the software past its end of life date but at your own risk. If there are security vulnerability, your system and data will be at risk. - -Compare it to the use by date or the expiry date on a food item. You may consume the yogurt one day after its use by date but can you eat it after a week or a month? - -#### Why end of life? - -Software is not a living being then why they have an end of life? Why doesn’t Ubuntu just keep on supporting one version forever? - -It is to maintain a balance between stability and features. You want new features in your system but you don’t want it to break your system. Software compatibility is complex and testing takes time. - -So what Ubuntu does is to give you a release and takes the responsibility of maintaining it by providing security and other updates for a certain time period. - -Ubuntu team and volunteers also work on the new release in parallel to add new features to the future release. - -#### Support life cycle of Ubuntu releases - -Ubuntu has two new version releases every year. These releases can be categorized into: - - * Regular release with 9 months of support period - * Long-term support (LTS) release with 5 years of support period - - - -A new LTS version is released every two years while the regular releases come every six months. - -This table should give you a better understanding: - -Ubuntu Version | Release | End of Life ----|---|--- -Ubuntu 18.04 (LTS) | April, 2018 | April, 2023 (5 years) -Ubuntu 18.10 | October, 2018 | July, 2019 (9 months) -Ubuntu 19.04 | April, 2019 | January, 2020 (9 months) -Ubuntu 19.10 | October, 2019 | July, 2020 (9 months) -Ubuntu 20.04 (LTS) | April, 2020 | April, 2025 (5 years) -Ubuntu 20.10 | October, 2020 | July, 2021 (9 months) - -The long-term support release focus on providing stability for a longer period. You probably know that Linux distributions like Ubuntu are also responsible for providing applications to you. These distributions have thousands of applications/packages in their repositories. - -The LTS versions often hold on to software versions as they cannot test every new version of so many software in the five years of support period. - -When Ubuntu releases a new LTS version, it also updates a number of software to a newer version. For example, Ubuntu 18.04 LTS has PHP 7.2 whereas Ubuntu 20.04 LTS has PHP 7.4 available. - -The regular release are short-live, but they bring new features (like newer versions of software like file managers, desktop environments, newer kernels etc). - -Personally, I think of these regular releases as a stepping platform for the next LTS releases. For examples, the features introduced in Ubuntu 18.10, 19.04, 19.10 will eventually be added in Ubuntu 20.04 (but not in 18.04). - -#### How to check how long your Ubuntu system will be supported? - -The simplest way to check the end of life support in Ubuntu is using this command in the terminal: - -``` -hwe-support-status --verbose -``` - -It will show an output that mentions the support period of your Ubuntu version. - -``` -You are not running a system with a Hardware Enablement Stack. Your system is supported until April 2025. -``` - -The [Hardware Enablement Stack in Ubuntu][2] allows you to receive the latest generic Linux kernel supported by Ubuntu. The important part is the support status date. - -If you want a detailed overview of how many software packages you have got and how long those packages will be supported, you can use the ubuntu-security-status command: - -``` -ubuntu-security-status -``` - -**In older versions of Ubuntu, the same command is known as ubuntu-support-status.** For both commands, the output is nearly identical: - -``` -[email protected]:~$ ubuntu-security-status -2242 packages installed, of which: -1695 receive package updates with LTS until 4/2025 - 510 could receive security updates with ESM Apps until 4/2030 - 30 packages are from third parties - 7 packages are no longer available for download - -Packages from third parties are not provided by the official Ubuntu -archive, for example packages from Personal Package Archives in -Launchpad. -For more information on the packages, run 'ubuntu-security-status ---thirdparty'. - -Packages that are not available for download may be left over from a -previous release of Ubuntu, may have been installed directly from a -.deb file, or are from a source which has been disabled. -For more information on the packages, run 'ubuntu-security-status ---unavailable'. - -Enable Extended Security Maintenance (ESM Apps) to get 0 security -updates (so far) and enable coverage of 510 packages. - -This machine is not attached to an Ubuntu Advantage subscription. -See https://ubuntu.com/advantage -``` - -As you can see in the above output, my system will majorly get supported till April 2025. Ubuntu can provide maintenance support for 510 packages till April 2030 but you’ll have to purchase the ESM. - -The ESM is more useful to mission-critical business infrastructure where upgrading to a newer version of the OS will impact the business. For desktop users, upgrading to a newer version is easier and more sensible thing to do. - -#### What happens when your Ubuntu install reaches end of life? What if you continue using Ubuntu even after its end of life? - -When your Ubuntu install reaches end of life, it stops getting system updates including any security updates. There won’t be updates for installed software as well. - -Without the security updates your system will become vulnerable to hacking attacks (if you connect to internet). Suppose a vulnerability gets discovered in one of the software you use or even in Linux kernel. You don’t get the update so this vulnerability is not patched and some malicious hackers take advantage of it to steal your data. - -Eventually, you’ll not be able to use the Ubuntu repositories. If you try to install a new application, you’ll see ‘[unable to locate package error][3]‘. - -So, basically, you won’t be able to install new software and your system will be at risk. Not a pretty scenario. - -The worst part is that if you wait way too long, you won’t be able to upgrade to the newer version. For example, a system running 17.04 can no longer update to 17.10 because even 17.10 is not supported anymore. A [fresh new Ubuntu installation][4] is the only suggested option in such case. - -#### What should you do when your Ubuntu install reaches end of life? - -Ubuntu doesn’t just abandon you after your system reaches end of life. It notifies you either in terminal or on the desktop that your system is no longer supported. - -![Ubuntu No Longer Supported][5] - -It even provides a mechanism to [upgrade your current Ubuntu version to the newer version][6]. Most of the software you have currently installed and your pictures, videos and other documents remain as it is. Making a backup of your important data on an external disk is still recommended. - -![Upgrade to Ubuntu 20.04 From 18.04][7] - -The rule of thumb is: - - * if you are using an LTS release, you should upgrade when the next LTS version is available. - * if you are using a regular release, you should upgrade whenever the next version is available. - - - -#### Still confused? - -I wrote this article because this is one of the most common confusion for It’s FOSS readers. I hope it clears the air and you have a better understanding of Ubuntu release cycle. - -If you still have doubts, please feel free to ask your question in the comment section. I’ll be happy to answer your queries. - --------------------------------------------------------------------------------- - -via: https://itsfoss.com/end-of-life-ubuntu/ - -作者:[Abhishek Prakash][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://itsfoss.com/author/abhishek/ -[b]: https://github.com/lujun9972 -[1]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/06/end-of-life-ubuntu.png?ssl=1 -[2]: https://itsfoss.com/ubuntu-hwe-kernel/ -[3]: https://itsfoss.com/unable-to-locate-package-error-ubuntu/ -[4]: https://itsfoss.com/install-ubuntu/ -[5]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/06/ubuntu-no-longer-supported.png?ssl=1 -[6]: https://itsfoss.com/upgrade-ubuntu-version/ -[7]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/03/upgrade-ubuntu-20-04-from-18-04.jpg?ssl=1 diff --git a/sources/tech/20200630 What-s New in Harbor 2.0.md b/sources/tech/20200630 What-s New in Harbor 2.0.md deleted file mode 100644 index d978a72d48..0000000000 --- a/sources/tech/20200630 What-s New in Harbor 2.0.md +++ /dev/null @@ -1,72 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (What’s New in Harbor 2.0) -[#]: via: (https://www.linux.com/audience/developers/whats-new-in-harbor-2-0/) -[#]: author: (Swapnil Bhartiya https://www.linux.com/author/swapnil/) - -What’s New in Harbor 2.0 -====== - -[Harbor][1] is an open-source cloud native registry project that stores, signs, and scans content. Harbor was created by a team of engineers at VMware China. The project was contributed to CNCF for wider adoption and contribution. Recently the project announced its 2.0 release. [Swapnil Bhartiya, the founder of TFiR.io][2], sat down with Michael Michael, Harbor maintainer and VMware’s Director of Product Management, to talk about Harbor, community and the latest release. - -Here is a lightly edited transcript of the interview: - -**Swapnil Bhartiya: Let’s assume that you and I are stuck in an elevator and I suddenly ask you, “What is Harbor?” So please, explain what it is.** -Michael Michael: Hopefully you’re not stuck in the elevator for long; but Harbor essentially is an open source cloud-native registry. Think of this as a repository where you can store and serve all of your cloud-native assets, your container images, your Helm charts, and everything else you need to basically build cloud native applications. And then some putting posts on top of that, some very good policy engines that allow you to enforce compliance, make sure your images that you’re serving are free from vulnerabilities and making sure that you have all the guardrails in place so an operator can manage this registry and delivery it to his developers in a self-service way. - -**Swapnil Bhartiya: Harbor came out of VMware China. So I’m also curious that what was the problem that the team saw at that point? Because there were a lot of projects that were doing something similar, that you saw unique that Harbor was created?** -Michael Michael: So essentially the need there was, there wasn’t really a good way for an enterprise to have a hosted registry that has all of the enterprise capabilities they were looking for, while at the same time being able to have full control over the registry. Like a lot of the cloud providers have their own registry implementation, there’s Docker Hub out there, or you can go and purchase something at a very expensive price point. But if you’re looking for an open source solution that gives you end to end registered capabilities, like your developers can push images and pull images, and then your operators can go and put a policy that says, Hey, I want to allow this development team to create a project, but not using more than a terabyte of storage. None of those solutions had that, so there was a need, a business need here to develop a registry. And on top of that, we realized that it wasn’t just us that had the same need, there was a lot of users and enterprises out there in the cloud native ecosystem. - -**Swapnil Bhartiya: The project has been out for a while and based on what you just told me, I’m curious what kind of community the product has built around itself and how the project has evolved? Because we will also talk about the new release version 2.0 but before that, I want to talk about the volitional project and the community around it.** -Michael Michael: Project has evolved fairly well over the years we have increased our contributors. The contribution statistics are that CNCF is creating are showing that we’re growing our community. We now have maintainers in the project from multiple organizations and there are actually three organizations that have more than one maintainer on the project. So it’s kind of showing you that they’re, the ecosystem has picked up. We are adding more and more functionality into Harbor, and we’re also making Harbor pluggable. So there are areas of Harbor where we’re saying, Hey, here’s the default experience with Harbor, but if you want to extend the experience based on the needs of your users go ahead and do that and here’s an easy way to implement an interface and do that. That has really increased the popularity of Harbor. That means two things, we can give you a batteries-included version of Harbor from the community and then we’ll give you the option to extend that to fit the needs of your organization. - -And more importantly, if you have made investments in other tooling, you can plug and play Harbor in that. When I say other tooling, I mean, things like CI/CD systems, those systems are primarily driving the development life cycle. So for example, you go from source code to container image to something that’s stored in a registry like Harbor. The engine that drives the pipeline, that workflow in a lot of ways is a CI/CD engine. So how do you integrate Harbor well with such systems? We’ve made that a reality now and that has made Harbor easier to put in an organization and get it adopted with existing standards and existing investments. - -**Swapnil Bhartiya: Now let’s talk about the recently announced 2.0. Talk about some of the core features, functionalities that you are excited about in this release.** -Michael Michael: Absolutely, there’s like three or four features that really, really excite me. A long time coming is the support for OCI. The OCI is the Open Container Initiative and essentially it’s creating a standardized way to describe what an image looks like. And we in Harbor 2.0 we are able to announce that we have full OCI supporting Harbor. What does that mean for users? In previous releases of Harbor you could only put into Harbor two types of artifacts; a container image and a Helm chart. It satisfies a huge number of the use cases for customers, but it’s not enough in this new cloud native ecosystem, there are additional things that as a developer, as an operator, as a Kubernetes administrator, you might want to push into a repository like Harbor and have them also adopt a lot of the policy engine that Harbor provides. - -Give you a few examples, single bundles, the cloud native application, a bundle. You could have OPA files, you could have singularity and other OCI compliant files. So now Harbor tells you that, Hey, you have any file type out there? If it’s OCI compliant, you can push it to Harbor, you can pull it from Harbor. And then you can add things like coders and retention policies and immutability policies and replication policies on top of that. The thing about that now, just by adding a few more types of supported artifacts into Harbor, those types immediately get to use the full benefit of Harbor in terms of our entire policy engine and the compliance that do offer to administrators of Harbor. - -**Swapnil Bhartiya: What does OCI compliance mean for users? Because by being compliant, you have to be more strict about what you can and cannot do. So can you talk about that? And also how does that also affect the existing users, should they have to worry about something or it doesn’t really matter?** - -Michael Michael: Existing users shouldn’t have to worry about this, there’s fully backward compatibility that can still push their container images, which are OCI compliant. And if you’re using a Helm Chart before, you can still push it into Charts Museum, which is a key component of Harbor, but you can now also put a Helm Chart as an OCI file. So for existing users, not much difference, backward compatibility, we still support them. The users are brothers here, we’re not going to forget them. But what it means now is actually, it’s not more strict this is a lot more open. If you’re developing artifacts that are OCI compliant and they’re following the standard way of describing an image and a standard way of actually executing an image at run time; now Kubernetes is also OCI compliant at the run time. Then you’re getting the benefits of both worlds. You get Harbor as the repository where you can store your images and you also get a run time engine that’s OCI compliant that could potentially execute them. The really great benefit here for the users. - -A couple of other features that Harbor 2.0 Brings are super, super exciting. The first one is the introduction of Trivy by Aqua Security, as the batteries included built-in scanner in Harbor. Previously, we use Claire as our built-in scanner and with the release of Harbor called 1.10 that came out in December 2019, we introduced what we call a pluggable framework, think of this as a way that security vendors like Aqua and Encore can come in and create their own implementation of a security scanner to do static analysis on top of images that are deployed in Harbor. - -So we still included Claire as a built-in scanner and then we added additional extension points. Now we actually liked Trivy that much our community and our users love Trivy it’s the ability to enforce and to study analysis on top of multiple operating systems on top of multiple application managers, it’s very well aligned with the vision that you have from a security standpoint in Harbor. And now we added Trivy as the built-in scanner in Harbor, we ship with it now. A great, great achievement and kudos to the Aqua team for delivering Trivy as an open source project. - -**Swapnil Bhartiya: That’s the question I was going to ask, but I, once again, I’ll ask the same thing again, that, what does it mean for users who were using Claire?** -Michael Michael: If you’re using Claire before and you want to continue using Claire, by all means, we’re going to continue updating Claire, Claire is already included in Harbor. There’s no changes in the experience. However, if you’re thinking that Trivy is a better scanner for you, and by the way, you can use them side by side so you can compare the scanning results from each scanner. And if Trivy is a better option for you, we enabled you to make that choice. Now the way Harbor works is that you have a concept of multitenancy and we isolate a lot of the settings and the policy in the organization of images and on a per-project basis. So what does that mean? You can actually go into Harbor and you can define a project and you can say for this project I want Claire to be the built-in scanner. - -And then Claire will scan all your projects in that, all the files in that project. And you can use a second project and say, well, I now want Trivy to be the scanner for this project. And then Trivy of you will scan your images. And if you have the same set of images, you can compare them and see which scanner works best based on your needs as an organization and as a user. This phenomenal, right? To give users choice and we give them all the data, but ultimately they have to make the decision on what is the best scanner for them to use based on their scenarios, the type of application images and containers that they use and the type of libraries in they use those containers. - -**Swapnil Bhartiya: Excellent. Before we wrap this up, what kind of roadmap you have for Harbor, of course, it’s an open source project. So there’s no such thing as when the 2.0 release is coming out. But when we look at 2020, what are the major challenges that you want to address? What are the problems you want to solve and what does the basic roadmap look like?** -Michael Michael:  Absolutely, I think that one of the things that we’ve been trying to do as a maintainer team for Harbor is to kind of create some themes around the release is kind of put a blueprint down in terms of what is it that we’re trying to achieve? And then identify the features that make sense in that theme. And we’re not coming up with this from a vacuum, we’re talking to users, we’re talking to other companies where we have KubeCon events in the past where we had presentations and individuals came to us asking us sets of questions. We have existing users that give us feedback. When we gather all of that, one of the things that we came up with as the next thing for our release is what you call image distribution. So we have three key features that we’re trying to tackle in that area. - -The first one is how can Harbor act as a proxy cache? To enable organizations that are either deploying Kubernetes environments at the edge and they want a local Harbor instance to proxy or mirror images from the mothership like your main data center and where networking is at the premium. Maybe some of the Kubernetes nodes are not even connected to the network and they want to be a support to pull images from Harbor and then Harbor pulls the images from the upstream data center. Very, very important feature. Continuing down the path of image distribution. We’re integrating Harbor with both Dragonfly by Alibaba and Project Kraken by Uber to facilitate peer to peer distribution mechanisms for your container images. So how can we efficiently distribute images at the edge in multiple data centers in branch offices that don’t have a good network or thick network pipe between them? And how can Harbor make sure that the right images land at the right place? Big, big features that we’re trying to work with the community. And obviously we’re not doing this alone, we’re working with both Kraken and the Dragonfly communities to achieve that. - -And last, the next feature that we have is what you call garbage collection without downtime. Traditionally, we do garbage collection and this is kind of the process where you get to reclaim some of the files and layers of, basically container images that are no longer in use. - -Think of an organization that pushes and pulls thousands of images every day; they re-tag them, they create new versions. Sometimes you end up with layers that are no longer used, in order for those layers to be reclaimed at the storage and by the system, their registry in needs to be locked down as in nobody can be pulling or pushing images to it. In Harbor 2.0 we actually made a significant advancement where we track all the layers and the metadata of images in our database rather than depending on another tool or product to do it. So now this actually paves a road so that in the future, we could actually do garbage collection with zero downtime where Harbor can identify all the layers that are no longer in use, go reclaim them. And then that will have zero adverse impact or downtime to the users are pushing and pulling content. Huge, huge features and that’s the things that we’re working on in the future. - -**Swapnil Bhartiya: Awesome, thank you Michael for explaining things in detail and talking about Harbor. I look forward to talk to you again. Thank you.** -Michael Michael: Absolutely. Thank you so much for the opportunity. - --------------------------------------------------------------------------------- - -via: https://www.linux.com/audience/developers/whats-new-in-harbor-2-0/ - -作者:[Swapnil Bhartiya][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://www.linux.com/author/swapnil/ -[b]: https://github.com/lujun9972 -[1]: https://goharbor.io/ -[2]: https://www.tfir.io/author/arnieswap/#:~:text=Swapnil%20Bhartiya%20Swapnil%20Bhartiya%20is%20the%20Founder%20and,audience%20for%20enterprise%20open%20source%20and%20emerging%20technologies. diff --git a/sources/tech/20200701 Install a Kubernetes load balancer on your Raspberry Pi homelab with MetalLB.md b/sources/tech/20200701 Install a Kubernetes load balancer on your Raspberry Pi homelab with MetalLB.md deleted file mode 100644 index 106fc01960..0000000000 --- a/sources/tech/20200701 Install a Kubernetes load balancer on your Raspberry Pi homelab with MetalLB.md +++ /dev/null @@ -1,282 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Install a Kubernetes load balancer on your Raspberry Pi homelab with MetalLB) -[#]: via: (https://opensource.com/article/20/7/homelab-metallb) -[#]: author: (Chris Collins https://opensource.com/users/clcollins) - -Install a Kubernetes load balancer on your Raspberry Pi homelab with MetalLB -====== -Assign real IPs from your home network to services running in your -cluster and access them from other hosts on your network. -![Science lab with beakers][1] - -Kubernetes is designed to integrate with major cloud providers' load balancers to provide public IP addresses and direct traffic into a cluster. Some professional network equipment manufacturers also offer controllers to integrate their physical load-balancing products into Kubernetes installations in private data centers. For an enthusiast running a Kubernetes cluster at home, however, neither of these solutions is very helpful. - -Kubernetes does not have a built-in network load-balancer implementation. A bare-metal cluster, such as a [Kubernetes cluster installed on Raspberry Pis for a private-cloud homelab][2], or really any cluster deployed outside a public cloud and lacking expensive professional hardware, needs another solution. [MetalLB][3] fulfills this niche, both for enthusiasts and large-scale deployments. - -MetalLB is a network load balancer and can expose cluster services on a dedicated IP address on the network, allowing external clients to connect to services inside the Kubernetes cluster. It does this via either [layer 2 (data link)][4] using [Address Resolution Protocol][5] (ARP) or [layer 4 (transport)][6] using [Border Gateway Protocol][7] (BGP). - -While Kubernetes does have something called [Ingress][8], which allows HTTP and HTTPS traffic to be exposed outside the cluster, it supports _only_ HTTP or HTTPS traffic, while MetalLB can support any network traffic. It is more of an apples-to-oranges comparison, however, because MetalLB provides resolution of an unassigned IP address to a particular cluster node and assigns that IP to a Service, while Ingress uses a specific IP address and internally routes HTTP or HTTPS traffic to a Service or Services based on routing rules. - -MetalLB can be set up in just a few steps, works especially well in private homelab clusters, and within Kubernetes clusters, it behaves the same as public cloud load-balancer integrations. This is great for education purposes (i.e., learning how the technology works) and makes it easier to "lift-and-shift" workloads between on-premises and cloud environments. - -### ARP vs. BGP - -As mentioned, MetalLB works via either ARP or BGP to resolve IP addresses to specific hosts. In simplified terms, this means when a client attempts to connect to a specific IP, it will ask "which host has this IP?" and the response will point it to the correct host (i.e., the host's MAC address). - -With ARP, the request is broadcast to the entire network, and a host that knows which MAC address has that IP address responds to the request; in this case, MetalLB's answer directs the client to the correct node. - -With BGP, each "peer" maintains a table of routing information directing clients to the host handling a particular IP for IPs and the hosts the peer knows about, and it advertises this information to its peers. When configured for BGP, MetalLB peers each of the nodes in the cluster with the network's router, allowing the router to direct clients to the correct host. - -In both instances, once the traffic has arrived at a host, Kubernetes takes over directing the traffic to the correct pods. - -For the following exercise, you'll use ARP. Consumer-grade routers don't (at least easily) support BGP, and even higher-end consumer or professional routers that do support BGP can be difficult to set up. ARP, especially in a small home network, can be just as useful and requires no configuration on the network to work. It is considerably easier to implement. - -### Install MetalLB - -Installing MetalLB is straightforward. Download or copy two manifests from [MetalLB's GitHub repository][9] and apply them to Kubernetes. These two manifests create the namespace MetalLB's components will be deployed to and the components themselves: the MetalLB controller, a "speaker" daemonset, and service accounts. - -#### Install the components - -Once you create the components, a random secret is generated to allow encrypted communication between the speakers (i.e., the components that "speak" the protocol to make services reachable). - -(Note: These steps are also available on MetalLB's website.) - -The two manifests with the required MetalLB components are: - - * - * - - - -They can be downloaded and applied to the Kubernetes cluster using the `kubectl apply` command, either locally or directly from the web: - - -``` -# Verify the contents of the files, then download and pipe then to kubectl with curl -# (output omitted) -$ kubectl apply -f -$ kubectl apply -f -``` - -After applying the manifests, create a random Kubernetes secret for the speakers to use for encrypted communications: - - -``` -# Create a secret for encrypted speaker communications -$ kubectl create secret generic -n metallb-system memberlist --from-literal=secretkey="$(openssl rand -base64 128)" -``` - -Completing the steps above will create and start all the MetalLB components, but they will not do anything until they are configured. To configure MetalLB, create a configMap that describes the pool of IP addresses the load balancer will use. - -#### Configure the address pools - -MetalLB needs one last bit of setup: a configMap with details of the addresses it can assign to the Kubernetes Service LoadBalancers. However, there is a small consideration. The addresses in use do not need to be bound to specific hosts in the network, but they must be free for MetalLB to use and not be assigned to other hosts. - -In my home network, IP addresses are assigned by the DHCP server my router is running. This DHCP server should not attempt to assign the addresses that MetalLB will use. Most consumer routers allow you to decide how large your subnet will be and can be configured to assign only a subset of IPs in that subnet to hosts via DHCP. - -In my network, I am using the subnet `192.168.2.1/24`, and I decided to give half the IPs to MetalLB. The first half of the subnet consists of IP addresses from `192.168.2.1` to `192.168.2.126`. This range can be represented by a `/25` subnet: `192.168.2.1/25`. The second half of the subnet can similarly be represented by a `/25` subnet: `192.168.2.128/25`. Each half contains 126 IPs—more than enough for the hosts and Kubernetes services. Make sure to decide on subnets appropriate to your own network and configure your router and MetalLB appropriately. - -After configuring the router to ignore addresses in the `192.168.2.128/25` subnet (or whatever subnet you are using), create a configMap to tell MetalLB to use that pool of addresses: - - -``` -# Create the config map -$ cat <<EOF | kubectl create -f - -apiVersion: v1 -kind: ConfigMap -metadata: -  namespace: metallb-system -  name: config -data: -  config: | -    address-pools: -    - name: address-pool-1 -      protocol: layer2 -      addresses: -      - 192.168.2.128/25 -EOF -``` - -The example configMap above uses [CIDR][10] notation, but the list of addresses can also be specified as a range: - - -``` -addresses: - - 192.168.2.128-192.168.2.254 -``` - -Once the configMap is created, MetalLB will be active. Time to try it out! - -### Test MetalLB - -You can test the new MetalLB configuration by creating an example web service, and you can use one from a [previous article][2] in this series: Kube Verify. Use the same image to test that MetalLB is working as expected: `quay.io/clcollins/kube-verify:01`. This image contains an Nginx server listening for requests on port 8080. You can [view the Containerfile][11] used to create the image. If you want, you can instead build your own container image from the Containerfile and use that for testing. - -If you previously created a Kubernetes cluster on Raspberry Pis, you may already have a Kube Verify service running and can [skip to the section][12] on creating a LoadBalancer-type of service. - -#### If you need to create a kube-verify namespace - -If you do not already have a `kube-verify` namespace, create one with the `kubectl` command: - - -``` -# Create a new namespace -$ kubectl create namespace kube-verify -# List the namespaces -$ kubectl get namespaces -NAME              STATUS   AGE -default           Active   63m -kube-node-lease   Active   63m -kube-public       Active   63m -kube-system       Active   63m -metallb-system    Active   21m -kube-verify       Active   19s -``` - -With the namespace created, create a deployment in that namespace: - - -``` -# Create a new deployment -$ cat <<EOF | kubectl create -f - -apiVersion: apps/v1 -kind: Deployment -metadata: -  name: kube-verify -  namespace: kube-verify -  labels: -    app: kube-verify -spec: -  replicas: 3 -  selector: -    matchLabels: -      app: kube-verify -  template: -    metadata: -      labels: -        app: kube-verify -    spec: -      containers: -      - name: nginx -        image: quay.io/clcollins/kube-verify:01 -        ports: -        - containerPort: 8080 -EOF -deployment.apps/kube-verify created -``` - -#### Create a LoadBalancer-type Kubernetes service - -Now expose the deployment by creating a LoadBalancer-type Kubernetes service. If you already have a service named `kube-verify`, this will replace that one: - - -``` -# Create a LoadBalancer service for the kube-verify deployment -cat <<EOF | kubectl apply -f - -apiVersion: v1 -kind: Service -metadata: -  name: kube-verify -  namespace: kube-verify -spec: -  selector: -    app: kube-verify -  ports: -    - protocol: TCP -      port: 80 -      targetPort: 8080 -  type: LoadBalancer -EOF -``` - -You could accomplish the same thing with the `kubectl expose` command: - - -``` -`kubectl expose deployment kube-verify -n kube-verify --type=LoadBalancer --target-port=8080 --port=80` -``` - -MetalLB is listening for services of type LoadBalancer and immediately assigns an external IP (an IP chosen from the range you selected when you set up MetalLB). View the new service and the external IP address MetalLB assigned to it with the `kubectl get service` command: - - -``` -# View the new kube-verify service -$ kubectl get service kube-verify -n kube-verify -NAME          TYPE           CLUSTER-IP      EXTERNAL-IP     PORT(S)        AGE -kube-verify   LoadBalancer   10.105.28.147   192.168.2.129   80:31491/TCP   4m14s - -# Look at the details of the kube-verify service -$ kubectl describe service kube-verify -n kube-verify -Name:                     kube-verify -Namespace:                kube-verify -Labels:                   app=kube-verify -Annotations:              <none> -Selector:                 app=kube-verify -Type:                     LoadBalancer -IP:                       10.105.28.147 -LoadBalancer Ingress:     192.168.2.129 -Port:                     <unset>  80/TCP -TargetPort:               8080/TCP -NodePort:                 <unset>  31491/TCP -Endpoints:                10.244.1.50:8080,10.244.1.51:8080,10.244.2.36:8080 -Session Affinity:         None -External Traffic Policy:  Cluster -Events: -  Type    Reason        Age    From                Message -  ----    ------        ----   ----                ------- -  Normal  IPAllocated   5m55s  metallb-controller  Assigned IP "192.168.2.129" -  Normal  nodeAssigned  5m55s  metallb-speaker     announcing from node "gooseberry" -``` - -In the output from the `kubectl describe` command, note the events at the bottom, where MetalLB has assigned an IP address (yours will vary) and is "announcing" the assignment from one of the nodes in your cluster (again, yours will vary). It also describes the port, the external port you can access the service from (80), the target port inside the container (port 8080), and a node port through which the traffic will route (31491). The end result is that the Nginx server running in the pods of the `kube-verify` service is accessible from the load-balanced IP, on port 80, from anywhere on your home network. - -For example, on my network, the service was exposed on `http://192.168.2.129:80`, and I can `curl` that IP from my laptop on the same network: - - -``` -# Verify that you receive a response from Nginx on the load-balanced IP -$ curl 192.168.2.129 -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" -    "[http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"\>][13] - -<html xmlns="" xml:lang="en" lang="en"> -<head> -  <title>Test Page for the HTTP Server on Fedora</title> -(further output omitted) -``` - -### MetalLB FTW - -MetalLB is a great load balancer for a home Kubernetes cluster. It allows you to assign real IPs from your home network to services running in your cluster and access them from other hosts on your home network. These services can even be exposed outside the network by port-forwarding traffic through your home router (but please be careful with this!). MetalLB easily replicates cloud-provider-like behavior at home on bare-metal computers, Raspberry Pi-based clusters, and even virtual machines, making it easy to "lift-and-shift" workloads to the cloud or just familiarize yourself with how they work. Best of all, MetalLB is easy and convenient and makes accessing the services running in your cluster a breeze. - -Have you used MetalLB, or do you use another load-balancer solution? Are you primarily using Nginx or HAProxy Ingress? Let me know in the comments! - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/7/homelab-metallb - -作者:[Chris Collins][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/clcollins -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/science_experiment_beaker_lab.png?itok=plKWRhlU (Science lab with beakers) -[2]: https://opensource.com/article/20/6/kubernetes-raspberry-pi -[3]: https://metallb.universe.tf/ -[4]: https://en.wikipedia.org/wiki/Data_link_layer -[5]: https://en.wikipedia.org/wiki/Address_Resolution_Protocol -[6]: https://en.wikipedia.org/wiki/Transport_layer -[7]: https://en.wikipedia.org/wiki/Border_Gateway_Protocol -[8]: https://kubernetes.io/docs/concepts/services-networking/ingress/ -[9]: https://github.com/metallb/metallb -[10]: https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing -[11]: https://github.com/clcollins/homelabCloudInit/blob/master/simpleCloudInitService/data/Containerfile -[12]: tmp.A4L9yD76e5#loadbalancer -[13]: http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"\> diff --git a/sources/tech/20200703 Create LEGO designs in Blender with this plugin.md b/sources/tech/20200703 Create LEGO designs in Blender with this plugin.md deleted file mode 100644 index 68da8f0339..0000000000 --- a/sources/tech/20200703 Create LEGO designs in Blender with this plugin.md +++ /dev/null @@ -1,100 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Create LEGO designs in Blender with this plugin) -[#]: via: (https://opensource.com/article/20/7/lego-blender-bricker) -[#]: author: (Seth Kenlon https://opensource.com/users/seth) - -Create LEGO designs in Blender with this plugin -====== -Convert your 3D digital models into LEGO designs with Bricker -![Open Lego CAD][1] - -I use [LEGO CAD][2] to document some of my own creations (or "MOCs," as custom sets are called in some digital LEGO communities). The advantage of computer-aided design (CAD) is precision. When you use CAD to build something in virtual space, you can reasonably expect that it can be built in the real world. While the LEGO CAD applications I use don't have simulated physics to verify the structural integrity of my designs, I do lay every brick in the software to mimic a model I've made in real life. - -LEGO bricks aren't just raw materials for design, though. They're also an aesthetic, as evident from LEGO-themed video games and movies. If you're less concerned with precision, but you still want the look of LEGO bricks, there's a great plugin for Blender called [Bricker][3] that can convert your 3D models into LEGO models with the click of a button. - -### Install Bricker - -You can buy Bricker for $65 USD from [BlenderMarket][4], and it's licensed under the GPLv3. Paying for it helps fund development and support. - -To install Bricker, launch Blender, click the **Edit** menu, and select **Preferences**. In the Preferences pane, click the **Add-ons** tab on the left.  - -![Installing an add-on in Blender][5] - -(Seth Kenlon, [CC BY-SA 4.0][6]) - -Start typing "Bricker" in the search box in the upper-right of the **Add-ons** pane, click the **Install** button, and select the Bricker ZIP file when prompted. - -### Convert a 3D model to LEGO bricks - -Whether you have the universal starting point of a plain, gray cube, an elaborate model of your own creation, or something you've downloaded from a Blender model hub, you can give Bricker a try right after installation. - -First, click on the model you want to convert into a LEGO model. With your model selected, press the **N** key on your keyboard to open the **Properties** panel. Click the **Bricker** properties tab, and click the **New Brick Model** button. - -![Bricker properties][7] - -(Seth Kenlon, [CC BY-SA 4.0][6]) - -Now that you've added the model to Bricker, click the new **Brickify Object** button in the Bricker panel. - -The default settings render a pretty blocky model, with mostly 2x10 bricks, no plates, and not much detail. - -![Blocks in Bricker][8] - -(Seth Kenlon, [CC BY-SA 4.0][6]) - -But there are plenty of options in the Bricker plugin for you to customize, and they show up in the Bricker **Properties** panel once you brickify a model. - -![Bricker settings][9] - -(Seth Kenlon, [CC BY-SA 4.0][6]) - -The most important settings in the **Model Settings** panel are: - - * **Brick height** sets the height of each brick in the model. A larger setting produces a less detailed model because fewer bricks are used for the sculpt. - * **Split model** makes every rendered brick an object you can move in Blender. Without this enabled, your model looks like lots of bricks but acts as if they are all glued together. - * **Brick types** controls whether your sculpture is made of bricks, plates, both bricks and plates, tiles, and so on. - * **Max size** sets the maximum size for bricks and plates in your sculpture. - * **Legal bricks only** ensures that all the bricks are based on real ones. For instance, enabling this prevents it from generating a 3x7 brick or a 2x11 plate because there are no such pieces in the LEGO catalog (or at least not in the [LDraw Parts][10] library). - - - -In the **Detailing** panel, you can control whether the undersides of the bricks are flat (which isn't very realistic, but "cheaper" to render) or detailed to mimic the underside of an actual LEGO piece. - -After changing a setting, you must click the **Update Model** button, near the top of the Bricker property panel, to re-render your sculpture. - -![Red dragon model in Bricker][11] - -(Seth Kenlon, [CC BY-SA 4.0][6]) - -### Brickify your designs - -Bricker is a fun stylistic plugin for Blender. While it probably won't be your go-to tool for designing real LEGO sets, it's a great way to sculpt, draw, and animate with virtual LEGO. If you've been putting off your LEGO stop-motion movie magnum opus, now's the time to get started in the virtual world. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/7/lego-blender-bricker - -作者:[Seth Kenlon][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/seth -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/open-lego.tiff_.png?itok=mQglOhW_ (Open Lego CAD) -[2]: https://opensource.com/article/20/6/open-source-virtual-lego -[3]: https://github.com/bblanimation/bricker -[4]: https://www.blendermarket.com/products/bricker/docs -[5]: https://opensource.com/sites/default/files/uploads/bricker-install.jpg (Installing an add-on in Blender) -[6]: https://creativecommons.org/licenses/by-sa/4.0/ -[7]: https://opensource.com/sites/default/files/uploads/bricker-properties.jpg (Bricker properties) -[8]: https://opensource.com/sites/default/files/uploads/bricker-blocky.jpg (Blocks in Bricker) -[9]: https://opensource.com/sites/default/files/uploads/bricker-adjust.jpg (Bricker settings) -[10]: https://www.ldraw.org/parts/official-parts.html -[11]: https://opensource.com/sites/default/files/uploads/red-dragon-bricker.jpg (Red dragon model in Bricker) diff --git a/sources/tech/20200703 How to Create a Pareto Diagram -80-20 Rule- in LibreOffice Calc.md b/sources/tech/20200703 How to Create a Pareto Diagram -80-20 Rule- in LibreOffice Calc.md deleted file mode 100644 index b001992a6c..0000000000 --- a/sources/tech/20200703 How to Create a Pareto Diagram -80-20 Rule- in LibreOffice Calc.md +++ /dev/null @@ -1,146 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (How to Create a Pareto Diagram [80/20 Rule] in LibreOffice Calc) -[#]: via: (https://itsfoss.com/pareto-chart-libreoffice/) -[#]: author: (Dimitrios Savvopoulos https://itsfoss.com/author/dimitrios/) - -How to Create a Pareto Diagram [80/20 Rule] in LibreOffice Calc -====== - -_**Brief: In this LibreOffice tip, you’ll learn to create the famous Pareto chart in Calc.**_ - -The [Pareto Principle][1], also known as the 80/20 Rule, The Law of the Vital Few and The Principle of Factor Sparsity, illustrates that 80% of effects arise from 20% of the causes – or in layman’s terms – 20% of your actions/activities will account for 80% of your results/outcomes. - -Although the original observation is related to [economics][2], it can be widely adopted and used across all aspects of business, economics, mathematics, and processes. In computer science, the Pareto principle can be used in [software optimization][3]. - -Let me show you how to create a Pareto diagram in [LibreOffice][4] spreadsheet tool, i.e. Calc. - -### Creating Pareto diagram in LibreOffice Calc - -![][5] - -To be able to create a Pareto diagram, you need these three basic elements: - - * The factors, ranked by the magnitude of their contribution - * The factors expressed numerically - * The cumulative-percent-of-total effect of the ranked factors - - - -First, enter the data in a spreadsheet. Now let’s get started! - -#### Step 1: Sort the data - -Mark all rows from first to the last and at the **Data** tab click on the Sort option. At the **Sort Criteria** tab choose **Sort key 1** and change the entry to **Number of Errors** or whichever name you choose. Make sure to tick **Descending** and finally **OK**. - -![][6] - -#### Step 2: Create the Cumulative Percentage values - -To calculate the cumulative percent of a total, you will need one formula for the first cell (C5) and a different formula for cells C6 and below. - -**Generic formula for the first cell** - -``` -=amount/total -``` - -**In the example shown, the formula in C5 is:** =B5/$B$15 - -**Generic formula for the remaining cells**: - -``` -=(amount/total)+previous cell result -``` - -**In the example shown, the formula in C6 is:** =(B6/$B$15)+C5 - -By dragging the fill handle down, you will get the correct formulas for the remaining cells. - -![][7] - -#### Step 3: Create the Pareto diagram - -To create the chart go to **Insert** tab and then click on the **Chart** option. - -In the upcoming Chart Wizard choose the chart type **Column and Line** with **Number of lines** set to 1 and click Next. - -![][8] - -Select the correct data range **$A$4:$C$14** by either using your mouse in the data range selector or by entering it manually. Leave the settings **Data series in columns**, **First row as label**, **First column as label** and click Next. - -![][9] - -The following Data Series window should have everything filled in correctly, click Next. - -![][10] - -In the last window enter titles and remove the legend: - - * Title: Pareto chart - * X axis: Error Type - * Y axis: Number of Errors - * Untick **Display legend** - * click **Finish**. - - - -![][11] - -And this is the result: - -![][12] - -If the red line appears without any value, select it, then right click > Format Data Series > Align Data Series to Secondary y-Axis > Click OK. - -#### Step 4: Fine tune the chart - -The range of the secondary y-axis is set to **0 – 120** , it needs to be up to **100**. - -Double click on the secondary y-axis . In the **Scale** tab, untick **Automatic** and **enter 100** as the maximum value. Then click ok. - -![][13] - -All done! - -![][14] - -**Conclusion** - -Using a Pareto chart to analyze problems in a business project allows focusing efforts towards the ones offering the most considerable improvement potential. - -This is one of the many real-life scenario where I have used LibreOffice instead of other proprietary office software. I hope to share more LibreOffice tutorials on It’s FOSS. Meanwhile, you can [learn these rather hidden LibreOffice tips][15]. - -Which LibreOffice functionality do you use the most? Let us know at the comments below! - --------------------------------------------------------------------------------- - -via: https://itsfoss.com/pareto-chart-libreoffice/ - -作者:[Dimitrios Savvopoulos][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://itsfoss.com/author/dimitrios/ -[b]: https://github.com/lujun9972 -[1]: https://betterexplained.com/articles/understanding-the-pareto-principle-the-8020-rule/ -[2]: https://en.wikipedia.org/wiki/Pareto_principle#In_economics -[3]: https://en.wikipedia.org/wiki/Program_optimization#Bottlenecks -[4]: https://www.libreoffice.org/ -[5]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/07/pareto-libreoffice.png?ssl=1 -[6]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/07/1.-sort-the-data.png?ssl=1 -[7]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/07/2.-cumulative-percent.png?ssl=1 -[8]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/07/3.chart_.png?ssl=1 -[9]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/07/5.data-range.png?ssl=1 -[10]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/07/6.data-series.png?fit=800%2C381&ssl=1 -[11]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/07/7.chart-elements.png?fit=800%2C381&ssl=1 -[12]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/07/8.Pareto-chart.png?ssl=1 -[13]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/07/9.fine-tune.png?ssl=1 -[14]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/07/10.final_.png?ssl=1 -[15]: https://itsfoss.com/libreoffice-tips/ diff --git a/sources/tech/20200703 What does a scrum master do.md b/sources/tech/20200703 What does a scrum master do.md deleted file mode 100644 index 3bf97d6cad..0000000000 --- a/sources/tech/20200703 What does a scrum master do.md +++ /dev/null @@ -1,68 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (What does a scrum master do?) -[#]: via: (https://opensource.com/article/20/7/scrum-master) -[#]: author: (Taz Brown https://opensource.com/users/heronthecli) - -What does a scrum master do? -====== -Scrum master is a career path that open source enthusiasts should -consider. Here's what a day in the life of one looks like. -![Digital images of a computer desktop][1] - -Turning a love of open source communities into a career is possible, and there are plenty of directions you can take. The path I'm on these days is as a scrum master. - -[Scrum][2] is a framework in which software development teams deliver working software in increments of 30 days or less called "sprints." There are three roles: scrum master, product owner, and development team. A scrum master is a facilitator, coach, teacher/mentor, and servant/leader that guides the development team through executing the scrum framework correctly. - -The scrum master heads up the daily scrum, sprint planning, sprint review, and sprint retrospectives. As a scrum master, you also remove impediments and help the team to become self-organizing and empowered to create, innovate, and make decisions for themselves as a unit. As a scrum master with a full list of responsibilities, I appreciate a well-organized daily schedule—here's what mine looks like. - -### A day in the life of a scrum master - -5:00am—Wake up and go to the gym for at least 45 minutes, but given the fact that we are working from home now, I will either walk/run on the treadmill or jump rope for 30 minutes -5:45am—Shower and get dressed -6:15am—Have some breakfast and make coffee or espresso -6:40am—Drive into work (or go for a walk around the neighborhood when working remotely) -7:00am—I get to work and clean up the team room before the team gets in (for remote work, I clean up our team wiki) -8:00am—Read emails and respond to priority emails from the team, team manager, or agile coach -8:45am —Get a caffeine refill from the break room -9:00am—Check in with the team and review the team's scrum board in Jira (or another [open source alternative][3]) just to see if there are any patterns of behavior I might need to address. Modify the team's impediment board if any impediments have been removed. -10:00am—Daily scrum (time-boxed for 15 minutes) -10:15am—Discuss parking lot items following the scrum -11:00am—Meet with the team's manager/leadership, or facilitate a community of practice or brown bag lunch around topics such as effective engineering practices -12:00pm—Lunch meeting or coffee with a product owner -1:00pm—Lunch (30 minutes is more than enough time for me) -1:30pm—Possible tasks include facilitating a backlog refinement event leading up to sprint planning, sprint review/demo, or sprint retrospective -2:30pm—Meet with test automation or DevSecOps team -3:00pm—Facilitate a team-building workshop -4:00pm—Final check-ins with the team and then answer final emails -4:30pm—Update the team's scrum journal -5:00pm—Layout my to-do list for the next day - -![Scrum team room setup with sticky notes][4] - -I had been in traditional IT for many years prior to becoming a scrum master. I eventually decided that I could use other skills such as my business experience and management experience to work with software development and DevOps teams to create high-performing teams. - -Software/DevOps teams use scrum to deliver software incrementally, yet faster and with a high level of quality and sustainability. To me, it was a great decision. Being a scrum master is also about removing impediments. I coach the team on how to solve their own problems, but if it becomes necessary, I will step in and help resolve the issues. - -The scrum master role is fun, exciting, and fulfilling, but also pressure-filled and stressful sometimes. But it ultimately, it is worth it to me, as I get to see my teams grow and not only deliver best in class software, but become better people. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/7/scrum-master - -作者:[Taz Brown][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/heronthecli -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/computer_desk_home_laptop_browser.png?itok=Y3UVpY0l (Digital images of a computer desktop) -[2]: https://opensource.com/resources/scrum -[3]: https://opensource.com/business/16/2/top-issue-support-and-bug-tracking-tools -[4]: https://opensource.com/sites/default/files/uploads/scrummaster_cropped.jpg (Scrum team room setup with sticky notes ) diff --git a/sources/tech/20200704 Purism-s Ultra-Secure Linux Machine is Now Available in a New Size.md b/sources/tech/20200704 Purism-s Ultra-Secure Linux Machine is Now Available in a New Size.md deleted file mode 100644 index a85ab84d33..0000000000 --- a/sources/tech/20200704 Purism-s Ultra-Secure Linux Machine is Now Available in a New Size.md +++ /dev/null @@ -1,104 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Purism’s Ultra-Secure Linux Machine is Now Available in a New Size) -[#]: via: (https://itsfoss.com/purism-librem-14/) -[#]: author: (Ankush Das https://itsfoss.com/author/ankush/) - -Purism’s Ultra-Secure Linux Machine is Now Available in a New Size -====== - -[Purism][1] is well-known for its privacy and security focused hardware and software while utilizing open-source technologies. Not to forget the latest [Purism Librem Mini][2]. - -After a good success with Librem 15 and 13 series laptops, Purism has unveiled Librem 14. - -![][3] - -Librem 14 looks like a perfect laptop for an open-source enthusiast who’s concerned about the security and privacy of a laptop. - -In this article, we will talk about Librem 14 specifications, pricing, and its availability. - -### Librem 14: Overview - -Similar to other variants in the series, Librem 14 offers all the essential security features like the **hardware kill switch** to disable webcam/microphone and its secure PureBoot boot firmware. - -![][4] - -Librem series is one of the rare [few laptops that come preloaded with Linux][5]. Purism uses its own custom distribution called [PureOS][6]. If you’re curious, you can also browse the [source code][7] for it. - -As a key highlight of Librem 14 laptop, here’s what [Purism mentions][8]: - -> The most distinctive feature of the Librem 14 is the new 14″ 1080p IPS matte display which, due to the smaller bezel, fits within the same footprint as the Librem 13. - -Even though that’s not something mind-blowing, it is good to see that they’ve made the laptop fit within the same footprint as its predecessor. - -It’s a great decision targeted for users who do not want a lot of changes with their laptop upgrade or may appreciate a compact dimension of the laptop. - -### Librem 14: Specifications - -![][9] - -Along with the key highlight, Purism’s Librem 14 offers an impressive set of specifications. Here’s what you get: - - * Intel Core i7-10710U (Comet Lake) - * 14″ Matte (1920×1080) Display - * Intel UHD Graphics - * RAM Up to 32GB, DDR4 at 2133 MHz - * 2 SATA + NVMe-capable M.2 slots - * 1 HDMI Port (4K capable @60Hz max) - * USB Type-C Video Out (4K capable) - * 3.5mm AudioJack - * Gigabit Ethernet Adapter with Integrated RJ45 Connector - * Atheros 802.11n w/ Two Antennas - * USB-C Power Delivery Port - * Weight: 1.4 kg - - - -It’s slightly disappointing to see Intel chipsets in 2020 — but considering the presence of PureBoot and other features that Librem 14 offers, an Intel-powered secure laptop makes sense. - -Nevertheless, it’s good to see them including USB Type-C video port. Without dedicated graphics, it may not be a steal deal for power users but it should get a lot of work done. - -Also, it’s worth noting that Purism offers [anti-interdiction services][10] to detect tampering during shipments for high-risk customers. Of course, that wouldn’t prevent tampering — but it’ll help you know about it. - -![][11] - -### Librem 14: Pricing & Availability - -For now, Librem 14 laptop is available for pre-orders with an early big base price of **$1199** ($300 off from its regular price) that features 8 Gigs of RAM and 250 GB of M.2 SATA storage. - -Depending on what you prefer, the price might go up to **$3,693.00** with the maxed out configuration with anti-interdiction services included. - -You can expect the orders to start shipping in the early Q4 2020. - -[Pre-Order Librem 14][12] - -What do you think about Purism’s Librem 14 laptop? Feel free to let me know your thoughts in the comments. - --------------------------------------------------------------------------------- - -via: https://itsfoss.com/purism-librem-14/ - -作者:[Ankush Das][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://itsfoss.com/author/ankush/ -[b]: https://github.com/lujun9972 -[1]: https://puri.sm/ -[2]: https://itsfoss.com/purism-librem-mini/ -[3]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/07/librem-14.jpg?ssl=1 -[4]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/07/Hardware-Kill-Switches-librem.jpg?ssl=1 -[5]: https://itsfoss.com/get-linux-laptops/ -[6]: https://itsfoss.com/pureos-convergence/ -[7]: http://repo.pureos.net/pureos/pool/main/ -[8]: https://puri.sm/posts/purism-launches-librem-14-successor-to-security-focused-librem-13-product-line/ -[9]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/07/librem-14-1.png?ssl=1 -[10]: https://puri.sm/posts/anti-interdiction-services/ -[11]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/07/librem14-monitors-1-cropped.png?ssl=1 -[12]: https://puri.sm/products/librem-14/ diff --git a/sources/tech/20200706 A guide to Terraform for Kubernetes beginners.md b/sources/tech/20200706 A guide to Terraform for Kubernetes beginners.md deleted file mode 100644 index 06635ff097..0000000000 --- a/sources/tech/20200706 A guide to Terraform for Kubernetes beginners.md +++ /dev/null @@ -1,735 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (A guide to Terraform for Kubernetes beginners) -[#]: via: (https://opensource.com/article/20/7/terraform-kubernetes) -[#]: author: (Jessica Cherry https://opensource.com/users/cherrybomb) - -A guide to Terraform for Kubernetes beginners -====== -Learn how to make a Minikube cluster and deploy to it with Terraform. -![A person programming][1] - -When I build infrastructure, I do it as code. The movement toward [infrastructure as code][2] means that every change is visible, whether it's through configuration management files or full-blown [GitOps][3]. - -[Terraform][4] is a tool for building, upgrading, and maintaining your infrastructure as code. As its [GitHub page][5] explains: - -> "Terraform enables you to safely and predictably create, change, and improve infrastructure. It is an open source tool that codifies APIs into declarative configuration files that can be shared amongst team members, treated as code, edited, reviewed, and versioned." - -The best part is you can import your existing infrastructure into a Terraform configuration state, and all future changes will be tracked. That tracking provides a complete understanding of your production environment (and any other environments), which can be backed up to a local or remote Git repository to version-control the entire infrastructure. - -In this article, I will explain how to use Terraform to manage state in a Minikube Kubernetes cluster. - -### Prerequisites - -Terraform is cloud-agnostic, so you can run about any type of Kubernetes cluster in any cloud by using the associated providers. A [provider][6] is the core of Terraform's plugin architecture, and each provider is "responsible for understanding API interactions and exposing resources" so that the main Terraform project can remain lean, but the project can expand to any system. - -In this example, I'll use [Terraform 11][7] on a Linux desktop. To follow along, you will also need [Helm 2.16.7][8], [Minikube][9], and [kubectl][10]: - - * Download and configure Minikube by following this [documentation][11]. - * Download and configure Helm [using your package manager][12] or do it manually from the [releases][13]. - * Download and install kubectl by following [these steps][10]. - * Install Terraform by downloading the [Linux .tar file][14], untar the file, and move it to `/usr/local/bin/terraform`. - - - -Before running a build, find out what the command-line utility offers. Run `terraform`, and the output will show the execution plan and apply commands. At the bottom, there is an upgrade checklist that will come in handy if you are on an older version of Terraform. The developers have built in a great command to check compatibility between versions. - -### Getting started - -To build something in Terraform, you need to create [modules][15], which are folders with a set of configuration files that can gather information and execute the action you need to complete. Terraform files always end in the file extension `.tf`. Start with one `main.tf` file, such as: - - -``` -`jess@Athena:~/terraform_doc$ touch main.tf` -``` - -You also need to know some basic Terraform commands and requirements before you can start making anything within the cluster: - - * `terraform init`: Initializes a Terraform working directory -– It must be within the same directory as the `.tf` files or nothing will happen. - * `terraform validate`: Confirms the Terraform file's syntax is correct -– Always run this to confirm the code is built correctly and will not have errors. - * `terraform plan`: Generates and shows what will change when you run `terraform apply` -– Run this before `apply` to confirm the results are as you intend. - * `terraform apply`: Builds or changes infrastructure -– It will show the execution plan and requires a yes or no to execute unless you use the `--auto-approve` flag, which will make it execute automatically. - * `Terraform refresh`: Updates the local state file against real resources -– This ensures Terraform has an accurate view of what is in the current environment. - * `terraform destroy`: Deletes and removes Terraform-managed infrastructure -– This will permanently remove anything created and stored in the state file from the cluster. - - - -For the configuration in this example, everything controlled by Terraform is held in a local state file. According to Terraform's [docs][16]: - -> "This state is stored by default in a local file named `terraform.tfstate`, but it can also be stored remotely, which works better in a team environment. Terraform uses this local state to create plans and make changes to your infrastructure. Prior to any operation, Terraform does a refresh to update the state with the real infrastructure." - -Now that you have this background information, you can move on and edit your `main.tf` file, check your cluster, and work towards adding configurations with Terraform. - -### Prep and build Minikube - -Before getting started with Terraform, you must create a Minikube cluster. This example uses Minikube version v1.9.2. Run `minikube start`: - - -``` -jess@Athena:~/terraform_doc$ minikube start -🎉  minikube 1.11.0 is available! Download it: -💡  To disable this notice, run: 'minikube config set WantUpdateNotification false' - -🙄  minikube v1.9.2 on Ubuntu 18.04 -✨  Using the kvm2 driver based on existing profile -👍  Starting control plane node m01 in cluster minikube -🔄  Restarting existing kvm2 VM for "minikube" ... -🐳  Preparing Kubernetes v1.18.0 on Docker 19.03.8 ... -🌟  Enabling addons: default-storageclass, storage-provisioner -🏄  Done! kubectl is now configured to use "minikube" -``` - -### Check your new cluster and add a namespace - -Check your new Minikube cluster with your trusty `kubectl` commands: - - -``` -jess@Athena:~/terraform_doc$ kubectl get nodes -NAME    STATUS   ROLES  AGE     VERSION -minikube   Ready        master   4m5s   v1.18.0 -``` - -The cluster is up and running, so add configurations to your `main.tf` file. First, you'll need a [provider][6], which "is responsible for understanding API interactions and exposing resources." The provider in this example will be (aptly) named [Kubernetes][17]. Edit your `main.tf` file and add the provider: - - -``` -provider "kubernetes" { -  config_context_cluster   = "minikube" -} -``` - -This syntax tells Terraform that the cluster is running in Minikube. - -Now you will need a definition of a resource block. A resource block describes one or more infrastructure objects, such as virtual networks, compute instances, or higher-level components such as DNS records. - -Add one Kubernetes namespace to the cluster: - - -``` -resource "kubernetes_namespace" "1-minikube-namespace" { -  metadata { -        name = "my-first-terraform-namespace" -  } -} -``` - -Next, run the `terraform init` command to check your provider version and initialize Terraform: - - -``` -jess@Athena:~/terraform_doc$ terraform init - -Initializing provider plugins... - -The following providers do not have any version constraints in configuration, -so the latest version was installed. - -To prevent automatic upgrades to new major versions that may contain breaking -changes, it is recommended to add version = "..." constraints to the -corresponding provider blocks in configuration, with the constraint strings -suggested below. - -* provider.kubernetes: version = "~> 1.11" - -Terraform has been successfully initialized! - -You may now begin working with Terraform. Try running "terraform plan" to see -any changes that are required for your infrastructure. All Terraform commands -should now work. - -If you ever set or change modules or backend configuration for Terraform, -rerun this command to reinitialize your working directory. If you forget, other -commands will detect it and remind you to do so if necessary. -``` - -Run your plan to see what will be executed: - - -``` -jess@Athena:~/terraform_doc$ terraform plan -Refreshing Terraform state in-memory prior to plan... -The refreshed state will be used to calculate this plan, but will not be -persisted to local or remote state storage. - -\------------------------------------------------------------------------ - -An execution plan has been generated and is shown below. -Resource actions are indicated with the following symbols: - + create - -Terraform will perform the following actions: - -  + kubernetes_namespace.1-minikube-namespace -        id:                            <computed> -        metadata.#:                     "1" -        metadata.0.generation:         <computed> -        metadata.0.name:               "my-first-terraform-namespace" -        metadata.0.resource_version: <computed> -        metadata.0.self_link:          <computed> -        metadata.0.uid:                <computed> - -Plan: 1 to add, 0 to change, 0 to destroy. - -\------------------------------------------------------------------------ - -Note: You didn't specify an "-out" parameter to save this plan, so Terraform -can't guarantee that exactly these actions will be performed if -"terraform apply" is subsequently run. -``` - -Now that you know what Terraform will do, apply your configuration: - - -``` -jess@Athena:~/terraform_doc$ terraform apply - -An execution plan has been generated and is shown below. -Resource actions are indicated with the following symbols: - + create - -Terraform will perform the following actions: - -  + kubernetes_namespace.1-minikube-namespace -        id:                            <computed> -        metadata.#:                     "1" -        metadata.0.generation:         <computed> -        metadata.0.name:               "my-first-terraform-namespace" -        metadata.0.resource_version: <computed> -        metadata.0.self_link:          <computed> -        metadata.0.uid:                <computed> - -Plan: 1 to add, 0 to change, 0 to destroy. - -Do you want to perform these actions? -  Terraform will perform the actions described above. -  Only 'yes' will be accepted to approve. - -  Enter a value: yes - -\----------------------------------- - -kubernetes_namespace.1-minikube-namespace: Creating... -  metadata.#:                   "" => "1" -  metadata.0.generation:       "" => "<computed>" -  metadata.0.name:             "" => "my-first-terraform-namespace" -  metadata.0.resource_version: "" => "<computed>" -  metadata.0.self_link:        "" => "<computed>" -  metadata.0.uid:              "" => "<computed>" -kubernetes_namespace.1-minikube-namespace: Creation complete after 0s (ID: my-first-terraform-namespace) - -Apply complete! Resources: 1 added, 0 changed, 0 destroyed. -``` - -Finally, confirm that your new namespace exists by running `kubectl get ns`: - - -``` -jess@Athena:~/terraform_doc$ kubectl get ns -NAME                            STATUS   AGE -default                         Active   28d -kube-node-lease                 Active   28d -kube-public                     Active   28d -kube-system                     Active   28d -my-first-terraform-namespace   Active   2m19s -``` - -### Run it through a Helm chart - -The ability to manually write a Terraform configuration file, run it, and see results in Kubernetes is nice. What's even nicer? Being able to rerun the same commands through a Helm chart. - -Run the `helm create ` command to generate a chart: - - -``` -$ helm create buildachart -Creating buildachart -``` - -You need another provider block for this exercise. There is a specific Helm provider, and it requires a Kubernetes cluster name so that Helm knows where to install its chart. Add the new provider, which is shown below, to your existing `main.tf` file: - - -``` -provider "helm" { -  kubernetes { -        config_context_cluster   = "minikube" -        -  } -} -``` - -Now that Helm is configured, you need to add a Helm chart for this terraform module to install. To keep things simple, keep the Helm chart in the same folder you're using for your Terraform state: - - -``` -jess@Athena:~/terraform_doc$ ls -buildachart  main.tf  terraform.tfstate -``` - -Add the new Helm resource so that the chart can be installed and tracked through your Terraform state by using the `helm_release` resource. I named this resource `local` and imported my chart name and my chart location: - - -``` -resource "helm_release" "local" { -  name          = "buildachart" -  chart         = "./buildachart" -} -``` - -Now that you've added these pieces, run Terraform's initialization command again. It will update the state based on your changes, including downloading a new provider: - - -``` -jess@Athena:~/terraform_doc$ terraform init - -Initializing provider plugins... -\- Checking for available provider plugins on ... -\- Downloading plugin for provider "helm" (1.2.2)... - -The following providers do not have any version constraints in configuration, -so the latest version was installed. - -To prevent automatic upgrades to new major versions that may contain breaking -changes, it is recommended to add version = "..." constraints to the -corresponding provider blocks in configuration, with the constraint strings -suggested below. - -* provider.helm: version = "~> 1.2" -* provider.kubernetes: version = "~> 1.11" - -Terraform has been successfully initialized! - -You may now begin working with Terraform. Try running "terraform plan" to see -any changes that are required for your infrastructure. All Terraform commands -should now work. - -If you ever set or change modules or backend configuration for Terraform, -rerun this command to reinitialize your working directory. If you forget, other -commands will detect it and remind you to do so if necessary. -``` - -Then plan your new configurations: - - -``` -jess@Athena:~/terraform_doc$ terraform plan -Refreshing Terraform state in-memory prior to plan... -The refreshed state will be used to calculate this plan, but will not be -persisted to local or remote state storage. - -kubernetes_namespace.1-minikube-namespace: Refreshing state... (ID: my-first-terraform-namespace) - -\------------------------------------------------------------------------ - -An execution plan has been generated and is shown below. -Resource actions are indicated with the following symbols: -  + create - -Terraform will perform the following actions: - -  + helm_release.local -        id:                             <computed> -        atomic:                         "false" -        chart:                          "./buildachart" -        cleanup_on_fail:                "false" -        create_namespace:               "false" -        dependency_update:              "false" -        disable_crd_hooks:              "false" -        disable_openapi_validation: "false" -        disable_webhooks:               "false" -        force_update:                   "false" -        lint:                           "false" -        max_history:                    "0" -        metadata.#:                     <computed> -        name:                           "buildachart" -        namespace:                      "default" -        recreate_pods:                  "false" -        render_subchart_notes:          "true" -        replace:                        "false" -        reset_values:                   "false" -        reuse_values:                   "false" -        skip_crds:                      "false" -        status:                         "deployed" -        timeout:                        "300" -        verify:                         "false" -        version:                        "0.1.0" -        wait:                           "true" - -Plan: 1 to add, 0 to change, 0 to destroy. - -\------------------------------------------------------------------------ - -Note: You didn't specify an "-out" parameter to save this plan, so Terraform -can't guarantee that exactly these actions will be performed if -"terraform apply" is subsequently run. -``` - -Apply your configuration, only this time add the `--auto-approve` flag so it will execute without confirmation: - - -``` -jess@Athena:~/terraform_doc$ terraform apply --auto-approve -kubernetes_namespace.1-minikube-namespace: Refreshing state... (ID: my-first-terraform-namespace) -helm_release.local: Creating... -  atomic:                      "" => "false" -  chart:                       "" => "./buildachart" -  cleanup_on_fail:             "" => "false" -  create_namespace:            "" => "false" -  dependency_update:           "" => "false" -  disable_crd_hooks:           "" => "false" -  disable_openapi_validation: "" => "false" -  disable_webhooks:            "" => "false" -  force_update:                "" => "false" -  lint:                        "" => "false" -  max_history:                 "" => "0" -  metadata.#:                   "" => "<computed>" -  name:                        "" => "buildachart" -  namespace:                   "" => "default" -  recreate_pods:               "" => "false" -  render_subchart_notes:       "" => "true" -  replace:                     "" => "false" -  reset_values:                "" => "false" -  reuse_values:                "" => "false" -  skip_crds:                   "" => "false" -  status:                      "" => "deployed" -  timeout:                     "" => "300" -  verify:                      "" => "false" -  version:                     "" => "0.1.0" -  wait:                        "" => "true" -helm_release.local: Creation complete after 8s (ID: buildachart) - -Apply complete! Resources: 1 added, 0 changed, 0 destroyed. -``` - -Although it says the chart deployed, it's always nice to double-check and confirm that the new Helm chart is in place. Check to see if your pod made it by using a `kubectl` command: - - -``` -jess@Athena:~/terraform_doc$ kubectl get pods -NAME                            READY   STATUS  RESTARTS   AGE -buildachart-68c86ccf5f-lchc5   1/1      Running   0             43s -``` - -This confirms your pod is running, which means your chart deployed! You also have a new backup state file: - - -``` -jess@Athena:~/terraform_doc$ ls -buildachart  main.tf  terraform.tfstate  terraform.tfstate.backup -``` - -Terraform is protective of state, which is a great feature. It automatically generates a previous-state file after each update. This allows version control of your infrastructure, and you can always save the current and most recent state. Since this is a local build, stick with the current and previous states without version control. - -### Rollback a change and import something - -As you run Terraform commands, the backup state file is generated and updated, which means you can roll back previous changes exactly once unless you are holding state files in storage somewhere else (e.g., a database) with other configurations to manage the files. - -In this example, you need to roll back your Helm chart deployment. Why? Well, because you can. - -Before you do anything, take a minute to run the `terraform refresh` command to see if there is anything different between the cluster and the current state: - - -``` -jess@Athena:~/terraform_doc$ terraform refresh -helm_release.local: Refreshing state... (ID: buildachart) -kubernetes_namespace.1-minikube-namespace: Refreshing state... (ID: my-first-terraform-namespace) -``` - -There is a weird workaround to roll back changes: You can overwrite your state file with the backup file, or you can comment the code changes you rolled out through Terraform files and allow Terraform to destroy them. - -In this example, I'll comment-out code and rerun Terraform, so the Helm chart will be deleted. Comments begin with `//` in Terraform files: - - -``` -jess@Athena:~/terraform_doc$ cat main.tf -provider "kubernetes" { -  config_context_cluster   = "minikube" -} - -resource "kubernetes_namespace" "1-minikube-namespace" { -  metadata { -        name = "my-first-terraform-namespace" -  } -} - -//provider "helm" { -//  kubernetes { -//      config_context_cluster   = "minikube" -//  } -//} -//resource "helm_release" "local" { -//  name        = "buildachart" -//  chart       = "./buildachart" -//} -``` - -After you comment everything out, run `terraform apply`: - - -``` -jess@Athena:~/terraform_doc$ terraform apply -helm_release.local: Refreshing state... (ID: buildachart) -null_resource.minikube: Refreshing state... (ID: 4797320155365789412) -kubernetes_namespace.1-minikube-namespace: Refreshing state... (ID: my-terraform-namespace) - -An execution plan has been generated and is shown below. -Resource actions are indicated with the following symbols: - - destroy - -Terraform will perform the following actions: - -  - helm_release.local - -Plan: 0 to add, 0 to change, 1 to destroy. - -Do you want to perform these actions? -  Terraform will perform the actions described above. -  Only 'yes' will be accepted to approve. - -  Enter a value: yes - -helm_release.local: Destroying... (ID: buildachart) -helm_release.local: Destruction complete after 0s - -Apply complete! Resources: 0 added, 0 changed, 1 destroyed. -``` - -To see what overwriting the file looks like, reapply the Helm chart and overwrite the state file. Here is a snippet of the chart being recreated (this text output can be pretty long): - - -``` -helm_release.local: Still creating... (10s elapsed) -helm_release.local: Creation complete after 15s (ID: buildachart) - -Apply complete! Resources: 1 added, 0 changed, 0 destroyed. - -Here’s the file overwrite and the plan showing that the helm chart needs to be rerun. -jess@Athena:~/terraform_doc$ cp terraform.tfstate.backup terraform.tfstate -jess@Athena:~/terraform_doc$ terraform plan -Refreshing Terraform state in-memory prior to plan... -The refreshed state will be used to calculate this plan, but will not be -persisted to local or remote state storage. - -null_resource.minikube: Refreshing state... (ID: 4797320155365789412) -kubernetes_namespace.1-minikube-namespace: Refreshing state... (ID: my-terraform-namespace) - -\------------------------------------------------------------------------ - -An execution plan has been generated and is shown below. -Resource actions are indicated with the following symbols: - + create - -Terraform will perform the following actions: - -  + helm_release.local -        id:                            <computed> -        atomic:                        "false" -        chart:                         "./buildachart" -        cleanup_on_fail:               "false" -        create_namespace:              "false" -        dependency_update:             "false" -        disable_crd_hooks:             "false" -        disable_openapi_validation: "false" -        disable_webhooks:              "false" -        force_update:                  "false" -        max_history:                   "0" -        metadata.#:                     <computed> -        name:                          "buildachart" -        namespace:                     "default" -        recreate_pods:                 "false" -        render_subchart_notes:         "true" -        replace:                       "false" -        reset_values:                  "false" -        reuse_values:                  "false" -        skip_crds:                     "false" -        status:                        "deployed" -        timeout:                       "300" -        verify:                        "false" -        version:                       "0.1.0" -        wait:                          "true" - -Plan: 1 to add, 0 to change, 0 to destroy. - -\------------------------------------------------------------------------ - -Note: You didn't specify an "-out" parameter to save this plan, so Terraform -can't guarantee that exactly these actions will be performed if -"terraform apply" is subsequently run. -``` - -Be aware that you will run into a problem if you do not clean up the environment when overwriting your state files. That problem shows up in the name usage: - - -``` -Do you want to perform these actions? -  Terraform will perform the actions described above. -  Only 'yes' will be accepted to approve. - -  Enter a value: yes - -helm_release.local: Creating... -  atomic:                      "" => "false" -  chart:                       "" => "./buildachart" -  cleanup_on_fail:             "" => "false" -  create_namespace:            "" => "false" -  dependency_update:           "" => "false" -  disable_crd_hooks:           "" => "false" -  disable_openapi_validation: "" => "false" -  disable_webhooks:            "" => "false" -  force_update:                "" => "false" -  max_history:                 "" => "0" -  metadata.#:                   "" => "<computed>" -  name:                        "" => "buildachart" -  namespace:                   "" => "default" -  recreate_pods:               "" => "false" -  render_subchart_notes:       "" => "true" -  replace:                     "" => "false" -  reset_values:                "" => "false" -  reuse_values:                "" => "false" -  skip_crds:                   "" => "false" -  status:                      "" => "deployed" -  timeout:                     "" => "300" -  verify:                      "" => "false" -  version:                     "" => "0.1.0" -  wait:                        "" => "true" - -Error: Error applying plan: - -1 error occurred: -    * helm_release.local: 1 error occurred: -    * helm_release.local: cannot re-use a name that is still in use - -Terraform does not automatically rollback in the face of errors. -Instead, your Terraform state file has been partially updated with -any resources that successfully completed. Please address the error -above and apply again to incrementally change your infrastructure. -``` - -This creates a reuse issue due to commenting out and bringing back a resource. To fix this, do a state import, which allows you to take something that is already out in the environment and let Terraform start to track it again. - -For this, you need the namespace and chart name you want to import along with the module name you are importing. The module in this case is `helm.local`, and it is generated from your resource code in the resource that begins with `"helm_release" "local"`. - -For the reimport, you will need the namespace where the resource is currently deployed, so the import will look like `default/buildachart`. This format is required for anything involving a namespace: - - -``` -jess@Athena:~/terraform_doc$ terraform import helm_release.local default/buildachart -helm_release.local: Importing from ID "default/buildachart"... -helm_release.local: Import complete! -  Imported helm_release (ID: buildachart) -helm_release.local: Refreshing state... (ID: buildachart) - -Import successful! - -The resources that were imported are shown above. These resources are now in -your Terraform state and will henceforth be managed by Terraform. -``` - -This process of reimporting can be tricky, but it's important for state management. - -### Clean up - -What's so nice about Terraform is that you can quickly clean up after yourself when you're testing. The `follow` command is another great way to ruin your day if you aren't careful about where you run it: - - -``` -jess@Athena:~/terraform_doc$ terraform destroy -helm_release.local: Refreshing state... (ID: buildachart) -kubernetes_namespace.1-minikube-namespace: Refreshing state... (ID: my-first-terraform-namespace) - -An execution plan has been generated and is shown below. -Resource actions are indicated with the following symbols: - - destroy - -Terraform will perform the following actions: - -  - helm_release.local -  - kubernetes_namespace.1-minikube-namespace - -Plan: 0 to add, 0 to change, 2 to destroy. - -Do you really want to destroy all resources? -  Terraform will destroy all your managed infrastructure, as shown above. -  There is no undo. Only 'yes' will be accepted to confirm. - -  Enter a value: yes - -helm_release.local: Destroying... (ID: buildachart) -kubernetes_namespace.1-minikube-namespace: Destroying... (ID: my-first-terraform-namespace) -helm_release.local: Destruction complete after 1s -kubernetes_namespace.1-minikube-namespace: Destruction complete after 7s - -Destroy complete! Resources: 2 destroyed. -``` - -One run of `terraform destroy` removed your pods and namespace, but your cluster remains. You are back to square one: - - -``` -jess@Athena:~/terraform_doc$ kubectl get pods -No resources found in default namespace. - -jess@Athena:~/terraform_doc$ kubectl get ns -NAME            STATUS   AGE -default         Active   28d -kube-node-lease   Active   28d -kube-public     Active   28d -kube-system     Active   28d - -jess@Athena:~/terraform_doc$ minikube status -m01 -host: Running -kubelet: Running -apiserver: Running -kubeconfig: Configured -``` - -### Final notes - -To say you can make anything with Terraform is an understatement. It's a tool that can manage every aspect of environment creation and destruction. It has a powerful and simple concept of state management that can allow teams to stay in sync with the organization's intended infrastructure. - -However, if you are not careful, this tool can be rather unforgiving. If you are moving state files and not paying attention, you can cause a bit of an issue with what Terraform believes it needs to manage. When you are using this tool, be careful not to overextend yourself or write too much at once, as you can code yourself into a corner if you aren't paying attention. - -Terraform is best when it's used for infrastructure provisioning. It minimizes what problems happen when managing state, and allows tools designed for configuration and deployment to complement its features. - -What have you done with Terraform and Kubernetes? Share your experience in the comments below. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/7/terraform-kubernetes - -作者:[Jessica Cherry][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/cherrybomb -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/computer_keyboard_laptop_development_code_woman.png?itok=vbYz6jjb (A person programming) -[2]: https://opensource.com/article/19/7/infrastructure-code -[3]: https://thenewstack.io/what-is-gitops-and-why-it-might-be-the-next-big-thing-for-devops/ -[4]: https://www.terraform.io/ -[5]: https://github.com/hashicorp/terraform -[6]: https://www.terraform.io/docs/providers/index.html -[7]: https://releases.hashicorp.com/terraform/0.11.14/ -[8]: https://github.com/helm/helm/releases/tag/v2.16.7 -[9]: https://opensource.com/article/18/10/getting-started-minikube -[10]: https://kubernetes.io/docs/tasks/tools/install-kubectl/ -[11]: https://kubernetes.io/docs/tasks/tools/install-minikube/ -[12]: https://github.com/helm/helm#install -[13]: https://github.com/helm/helm/releases -[14]: https://releases.hashicorp.com/terraform/ -[15]: https://www.terraform.io/docs/configuration/modules.html -[16]: https://www.terraform.io/docs/state/index.html -[17]: https://registry.terraform.io/providers/hashicorp/kubernetes diff --git a/sources/tech/20200708 A visual guide to Lens- A new way to see Kubernetes.md b/sources/tech/20200708 A visual guide to Lens- A new way to see Kubernetes.md deleted file mode 100644 index 6802f641f3..0000000000 --- a/sources/tech/20200708 A visual guide to Lens- A new way to see Kubernetes.md +++ /dev/null @@ -1,246 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (A visual guide to Lens: A new way to see Kubernetes) -[#]: via: (https://opensource.com/article/20/7/kubernetes-lens) -[#]: author: (Jessica Cherry https://opensource.com/users/cherrybomb) - -A visual guide to Lens: A new way to see Kubernetes -====== -Navigate advanced Kubernetes administration without the command line -with Lens, the "Kubernetes IDE." -![Cat wearing glasses][1] - -There are many [Kubernetes][2] administration tools to choose from, whether you prefer a command-line utility or a graphical user interface. I recently covered [k9s][3], a text-based interface that many day-to-day Kubernetes administrators enjoy, but you have to navigate through many Kubernetes-specific terms to use it. A lot of people who use Kubernetes less often would rather have a colorful, clean visual guide. This is where [Lens][4], an open source integrated development environment (IDE) tool for administering Kubernetes clusters, comes in. - -### Install Lens - -You can download Lens for Linux, macOS, or Windows from either its [GitHub][5] page or its [website][4]. Linux installs are offered through AppImage, and [this tutorial][6] walks you through the installation process. After installation, Lens appeared in my applications list (the blue box with the L in the center). - -![Lens app icon][7] - -(Jess Cherry, [CC BY-SA 4.0][8]) - -### Add a cluster - -Managing Kubernetes means keeping an eye on one or more clusters. To add a cluster to Lens, click the large **+** sign, choose your cluster from the drop-down list, and click **Add Cluster**. Environments are automatically picked up from your `~/.kube/config` file. - -![Adding a cluster in Lens][9] - -(Jess Cherry, [CC BY-SA 4.0][8]) - -### Explore Lens' menus - -Lens gives you all the information you need about a cluster it manages. To help you get started, I'll explore the Lens menu sections with screenshots to show you what information and options they offer. - -If you need a refresher on Kubernetes terminology, [_A beginner's guide to Kubernetes container orchestration_][10] is a good place to read about it. - -#### Nodes menu - -First, look at the **Nodes**. A node can be a virtual machine or physical (bare metal) machine depending on the cluster. Each node contains the services necessary to run Pods, managed by the control plane. We can start by checking if our nodes are up and running in a Ready state. If there were an issue, this page would provide details as to what is wrong with the node. - -![Lens Nodes menu][11] - -(Jess Cherry, [CC BY-SA 4.0][8]) - -#### Workloads menu - -The **Workloads** section provides a lot of information about your cluster. You can access its subsections with either the menu on the left or at the top of the pane—both work the same way. - -##### Overview - -Click **Overview** to see the events happening in the cluster, as well as how many Pods, Deployments, StatefulSets, DaemonSets, Jobs, and CronJobs are running in it. You can select each Overview item to see details about it. - -![Lens Workloads Overview menu][12] - -(Jess Cherry, [CC BY-SA 4.0][8]) - -##### Pods - -Click **Pods** to see a list of the pods in the cluster. - -![Lens Workloads Pods menu][13] - -(Jess Cherry, [CC BY-SA 4.0][8]) - -Click on a pod name in the **Pods** section of **Workloads**, and it will bring up a details pane on the right with a ton of things you can do really quickly. - -![Lens Workloads Pod details][14] - -(Jess Cherry, [CC BY-SA 4.0][8]) - -Open the pod's logs by clicking on the multi-line button (the second icon from the left) on the top-right of the pod detail window. - -![Lens Workloads Pod logs][15] - -(Jess Cherry, [CC BY-SA 4.0][8]) - -If you need to shell into a pod, Lens has a terminal built into it. Access it by clicking the terminal button (the left-most icon) above the pod detail. - -![Shelling into a pod in Lens][16] - -(Jess Cherry, [CC BY-SA 4.0][8]) - -A terminal will open. - -![Shelling into a pod in Lens][17] - -(Jess Cherry, [CC BY-SA 4.0][8]) - -##### Deployments - -**Deployments** shows what Deployments are in the cluster. - -![Lens Workloads Deployments menu][18] - -(Jess Cherry, [CC BY-SA 4.0][8]) - -#### Configuration menu - -**Configuration** shows ConfigMaps, Secrets, Resource Quotas, and Horizontal Pod Autoscalers (HPA). - -![Lens ConfigMaps menu][19] - -(Jess Cherry, [CC BY-SA 4.0][8]) - -#### Network menu - -**Network** includes options for managing your network services, endpoints, ingresses, and network policies. - -##### Network Services - -![Lens Network Services menu][20] - -(Jess Cherry, [CC BY-SA 4.0][8]) - -If you see a pencil icon (like the one in the top-right corner above), clicking it will open a terminal window where you can edit the configurations. - -![Editing configurations in Lens][21] - -(Jess Cherry, [CC BY-SA 4.0][8]) - -#### Storage menu - -Storage options, including PersistentVolumes and StorageClasses, are also navigable. - -![Lens StorageClasses menu][22] - -(Jess Cherry, [CC BY-SA 4.0][8]) - -#### Namespaces menu - -**Namespaces** shows a list of your namespaces. - -![Lens Namespaces menu][23] - -(Jess Cherry, [CC BY-SA 4.0][8]) - -#### Apps menu - -Lens' crown jewel is its one-click (OK, more like three-click) process for installing apps with [Helm charts][24]. I would suggest using this only on your local cluster, but it's still a nice add-on in Lens. - -To install a chart, click **Apps** in the left navigation and click **Charts**. A list of all the charts available through Helm (and its stable repository) appears. - -![Helm charts in Lens' Apps menu][25] - -(Jess Cherry, [CC BY-SA 4.0][8]) - -You can also find a chart using **Search**. Click on the chart you want, and a window will open on the right with a large **Install** button. - -![Searching for Helm charts in Lens' Apps menu][26] - -(Jess Cherry, [CC BY-SA 4.0][8]) - -Click **Install** and a terminal will open at the bottom with another **Install** button in the lower-right. Click it. - -![Installing a Helm chart in Lens][27] - -(Jess Cherry, [CC BY-SA 4.0][8]) - -It installs the Helm chart and tells you when it's finished. - -![Installing a Helm chart in Lens][28] - -(Jess Cherry, [CC BY-SA 4.0][8]) - -You can double-check that the Helm chart is installed in your cluster by looking in the **Pods** section under **Workloads**. - -![Confirming Helm chart in Lens][29] - -(Jess Cherry, [CC BY-SA 4.0][8]) - -The Helm install takes under a minute and, because Lens has an edit function in each detail window, you can manually configure the apps you install. In my opinion, this is the only downfall of this function—I prefer to use my own values because it's hard to track manual changes. Why do I consider this a problem? If you're working with a repo with versioned helm charts and need to run a manual change without checking in the changed values, you quickly run into code drift. - -#### Access Control menu - -The **Access Control** section includes Service Accounts, Roles, Role Bindings, and Pod Security Policies, so you can visualize and edit the security you have in place (as you can see in the following screenshots). Service Accounts are the equivalent of Linux user accounts, but they are intended for processes running in a cluster. Running applications are attached to Roles, which have Role Bindings to the cluster to allow pods to access certain administrative permissions. Pod Security Policies are a more glandular level of security for the pods to have access to resources like certain volume types or to set seccomp profiles used by containers.  - -##### Service Accounts - -![Lens Access Control Service Accounts menu][30] - -(Jess Cherry, [CC BY-SA 4.0][8]) - -##### Role Bindings - -![Lens Access Control RoleBindings menu][31] - -(Jess Cherry, [CC BY-SA 4.0][8]) - -##### Roles - -![Lens Access Control Roles menu][32] - -(Jess Cherry, [CC BY-SA 4.0][8]) - -#### Final notes - -Lens is a beautiful and powerful alternative to managing Kubernetes from the command line. There are some times when you'll want to use the command line, mostly due to the drawbacks of manually editing charts before launching them or for tracking environmental changes. If you have good log-keeping practices in your cluster, this may not be a problem. If you are a visual person, Lens is a great way to explore your Kubernetes cluster and handle 95% of your administrative tasks. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/7/kubernetes-lens - -作者:[Jessica Cherry][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/cherrybomb -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/cat-glasses-read.png?itok=BigdrxUU (Cat wearing glasses) -[2]: https://opensource.com/resources/what-is-kubernetes -[3]: https://opensource.com/article/20/5/kubernetes-administration -[4]: https://k8slens.dev/ -[5]: https://github.com/lensapp/lens -[6]: https://opensource.com/article/20/6/kubernetes-cluster-lens -[7]: https://opensource.com/sites/default/files/uploads/lens_1_homescreen.png (Lens app icon) -[8]: https://creativecommons.org/licenses/by-sa/4.0/ -[9]: https://opensource.com/sites/default/files/uploads/lens_2-addcluster.png (Adding a cluster in Lens) -[10]: https://opensource.com/article/20/6/container-orchestration -[11]: https://opensource.com/sites/default/files/uploads/lens_3-nodes.png (Lens Nodes menu) -[12]: https://opensource.com/sites/default/files/uploads/lens_4-overview.png (Lens Workloads Overview menu) -[13]: https://opensource.com/sites/default/files/uploads/lens_5-pods.png (Lens Workloads Pods menu) -[14]: https://opensource.com/sites/default/files/uploads/lens_7-poddetails.png (Lens Workloads Pod details) -[15]: https://opensource.com/sites/default/files/uploads/lens_8-podlogs.png (Lens Workloads Pod logs) -[16]: https://opensource.com/sites/default/files/uploads/lens_9-podshelling1.png (Shelling into a pod in Lens) -[17]: https://opensource.com/sites/default/files/uploads/lens_10-podshelling2.png (Shelling into a pod in Lens) -[18]: https://opensource.com/sites/default/files/uploads/lens_6-deployments.png (Lens Workloads Deployments menu) -[19]: https://opensource.com/sites/default/files/uploads/lens_12-configmaps.png (Lens ConfigMaps menu) -[20]: https://opensource.com/sites/default/files/uploads/lens_14-networkservices2.png (Lens Network Services menu) -[21]: https://opensource.com/sites/default/files/uploads/lens_15-editconfig.png (Editing configurations in Lens) -[22]: https://opensource.com/sites/default/files/uploads/lens_18-storageclass3.png (Lens StorageClasses menu) -[23]: https://opensource.com/sites/default/files/uploads/lens_11-namespaces.png (Lens Namespaces menu) -[24]: https://opensource.com/article/20/5/helm-charts -[25]: https://opensource.com/sites/default/files/uploads/lens_22_apps.png (Helm charts in Lens' Apps menu) -[26]: https://opensource.com/sites/default/files/uploads/lens_23_searchapps.png (Searching for Helm charts in Lens' Apps menu) -[27]: https://opensource.com/sites/default/files/uploads/lens_24_installapps.png (Installing a Helm chart in Lens) -[28]: https://opensource.com/sites/default/files/uploads/lens_25_helminstall.png (Installing a Helm chart in Lens) -[29]: https://opensource.com/sites/default/files/uploads/lens_26_confirminstall.png (Confirming Helm chart in Lens) -[30]: https://opensource.com/sites/default/files/uploads/lens_19-accesscontrol.png (Lens Access Control Service Accounts menu) -[31]: https://opensource.com/sites/default/files/uploads/lens_20_rolebindings.png (Lens Access Control RoleBindings menu) -[32]: https://opensource.com/sites/default/files/uploads/lens_21_roles.png (Lens Access Control Roles menu) diff --git a/sources/tech/20200709 Making compliance scalable in a container world.md b/sources/tech/20200709 Making compliance scalable in a container world.md deleted file mode 100644 index a32bf4e86e..0000000000 --- a/sources/tech/20200709 Making compliance scalable in a container world.md +++ /dev/null @@ -1,168 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Making compliance scalable in a container world) -[#]: via: (https://opensource.com/article/20/7/compliance-containers) -[#]: author: (Scott K Peterson https://opensource.com/users/skpeterson) - -Making compliance scalable in a container world -====== -When software is distributed via container images, source code should be -made available in order to ensure seamless compliance with licensing. -![Shipping containers stacked in a yard][1] - -Software is increasingly being distributed as container images. Container images include the many software components needed to support the featured software in the container. Thus, distribution of a container image involves distribution of many software components, which typically include GPL-licensed components. We can't expect every company that distributes container images to become an open source compliance expert, so we need to build compliance into container technology. - -We should design source code availability into container tools and processes to facilitate open source license compliance that is efficient and portable: - - * Efficient—Address compliance once when a container image is created. Avoid depending on later actions, especially actions external to existing container distribution tooling. - * Portable—When an image is moved to another registry, it should be straightforward to move compliance along with it. - - - -This can be done with a registry-native approach to source code availability. This doesn't require updating all container registries to include source-code-specific features. It is possible to exploit features that registries already have. For software distributed through container registries, we can use those same registries to facilitate compliance. - -### Container technology - -Container technology helps manage the challenges of deploying and operating complex software systems. - -The word "container" refers to a runtime experience—a program, together with its dependencies, can execute in an environment that provides certain isolation from other executing programs; this is running in a container. - -The set of files that are used to provision such a container is called a "container image." While the purpose of a particular container image might be to run one application program, the container image includes much more: that application and its dependencies—the files necessary to run that application, except for the operating system kernel. A container image is a form of those files that can be stored and transferred, enabling the application to be reliably deployed again and again, and run independently of the many other programs that may be running and changing in other containers in the system. - -Distribution of software in the form of container images, which are distributed from services known as "container registries," is growing. Once one invests in organizing computing around containers, it becomes valuable to package and distribute software in container images. Those who use containers to run their software find it is useful to be able to obtain software as pre-built container images, rather than doing all of the container assembly themselves. Even when container images are customized, it is often valuable to start from a pre-built image. - -### Container images are different - -In the past, it has been common to obtain each software component separately. In contrast, a container image includes a heterogeneous collection of software–often hundreds of software components. The unit of software delivery is changing from one driven by how the software is **built** to one driven by how the software is **used**. (See [What's in a container image: Meeting the legal challenges][2].) - -Package maintainers and package management tools have played an underappreciated role in source availability for over two decades. The focused nature of a package, the role of a package maintainer, and the tooling that has been built to support package management systems results in the expectation that someone (the package maintainer) will take responsibility for seeing that the sources are available. Tools that build binaries also collect the corresponding sources into an archive that can be delivered alongside the binaries. The result is that most people don't need to think about source code availability. The sources are available in the same unit as the delivery of the executable software and via the same distribution mechanism; for software delivered as an RPM, the corresponding source is available in a source RPM. - -In contrast, there is no convention for providing the source code that corresponds to a container image. - -The many software components in a container image often include GPL-licensed software. Companies that may not have much experience with distribution of FOSS software may begin distributing GPL-licensed software when they start offering their software in the form of container images. Let's make it straightforward for everyone, including companies who may be new to FOSS, to provide source code in a consistent way. - -### Identification of the corresponding source code - -Identifying the corresponding source code is more challenging for container images than it is for packages. For packages, the source is available to the person building the package (although there can be some challenges with the source for dependencies if a package is built to include dependencies, not merely refer to them). In contrast, container images are conventionally built using, mostly, previously compiled components. When the container image is built, the source for those software components may be readily at hand or not, depending on how the binaries were acquired and how they were built. - -When we build a container image, we should collect the corresponding source code for each of the components used to build the image. If not when the image is built, then when? That collected source code should then become a logical part of the corresponding container image. - -Making the corresponding source code available as a logical part of a container image, of course, facilitates compliance in the distribution of that image. But, also, that practice supports a compliant ecosystem. If someone builds on a base image, how do they know what source code might need to be made available? If container images have corresponding source images, then the solution is straightforward. It is not necessary to start by figuring out what is in the base. Rather, start source availability for the overall image by using the source image for the base. - -Here is an opportunity to build compliance into the tools—when someone builds on a base image, the tools should make it easy for them to make the corresponding source available for the base, as well as what is built on top. Tools should create a source image corresponding to the final combined image by starting with the source image for the base and adding whatever source is appropriate for the software that is built on top of that base. - -### Delivery - -Suppose one has a list of the source code artifacts that correspond to a container image. Where is that list going to be hosted? Where are the source artifacts going to be hosted? If the container image is hosted on various registries, how is source code going to be made available for each of those distribution points? Is there work to be done in each registry or in each of the catalogs associated with the registries? How is someone pulling a container image from each of a number of different registries going to know where these materials are? How does this work at scale? How many mechanisms are needed? - -We should build a container ecosystem with compliance that is portable across registries. One shouldn't need to get a new guidebook from each registry. - -As mentioned above, the supporting software components in a container image often include software licensed under the GPL. Consider the various alternatives for meeting the source code availability requirement for commercial distribution of software via download: binaries accompanied by the source code; binaries accompanied by a written offer; or, equivalent access to copy. As to equivalent access option, let's look at [GPLv2, section 3][3], last paragraph: "If distribution of executable or object code is made by offering access to copy from a designated place, then **offering equivalent access to copy the source code from the same place** counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code." - -Why deliver the source code through a container registry? Equivalent access, efficiency, and portability. - - * **Equivalent access**—A registry-native approach to source availability (making source for container images available as container images) is a good way of providing equivalent access to the source. - * **Efficient compliance**—Creating a source availability "package" (a source image) when the executable image is built and then using the same tooling for making the source available avoids inefficiencies of maintaining additional processes and mechanisms for making the source available. - * **Portability of compliance**—The same tooling that moves the executable images can be used to move, store, and serve the source images—on all hosting registries. - - - -### A registry-native approach to source code availability - -Delivering source through container registries exploits the design of the container image format and certain related characteristics of container registries. - -A container image includes (see container image details in the two examples linked below): - - * an image manifest, which identifies the other elements of the image; - * config data, which includes metadata about the image, including information used to configure the image for execution in a container; - * a number of "layers" (each of which is a tar archive) that store the file system with which to provision a container. - - - -Consider the challenge of making the corresponding source code available—a collection of source code artifacts (RPMs, zip files, tarballs, etc.) that we would like a server to make available. A container image is a list of components that a registry makes available. If the list of source artifacts is arranged as an image manifest, then a container registry can serve the source code artifacts like it serves other container image parts. And, tools for moving container images can be directly applied to move that compliance package (manifest plus the referenced source artifacts). - -A source image (aka a source container) is simply a container image. Instead of the layers in the image being tarballs of files to provision a container for execution, each layer is a source artifact. - -This concept of delivering non-file-system content from a container registry is of interest to container registries for other purposes, too, not just for source code. An example of non-layer content being served by container registries is Helm charts (used to describe a set of Kubernetes resources). The delivery of non-layer content via a container registry is the subject of the [Open Container Initiative's artifacts project][4]. - -### Deduplication - -Container registries store and deliver an image as parts, rather than as a single digital object. This is valuable because container images are extremely redundant. Many images differ in a small fraction of their content. A container image can simplify data center operations by packaging together all of the components needed to run a particular program; as a result, container images are large, and each contains much content that is identical to other images in the registry. There can be 100-300 software components in an image, most of which are present in many other container images. Also, images are immutable. When an image needs to be updated, a new image is created that is almost identical to the prior version. This size challenge is mitigated by breaking archives for container file systems into multiple layers and using content-addressable storage. - -That deduplication capability is advantageous in source code, too. The key to taking advantage of this registry feature is to not store all of the corresponding sources for an image in a single blob. More than 100:1 deduplication can be readily achieved if the source code is stored with the granularity of a separate source artifact for each of the hundred or more software components from which the image is built. - -### Implementation - -Red Hat has started the first of a two-stage approach to implementing registry-native delivery of source code. - -In the first stage, Red Hat has started by producing source images that can be hosted on existing registries and will not confuse tools that expect all images to be executable. In this approach, source artifacts masquerade as regular layers—each source artifact is wrapped in a tar archive; the media types for the layers are the same as for a regular executable image. The source image is associated with the corresponding executable image by a naming convention. - -The second stage involves taking advantage of certain OCI image format features. - -Container images should be linked to the corresponding executable image(s) via the image index, rather than with a tag naming convention. The container image format makes it possible for a source image to literally be a part of the overall image of which the executable image is a part. Unrelated to source code, it is useful to be able to have images that are built for different processor architectures be part of a single overall image. That overall image can be managed as a single object, and a consumer of the image can select which version(s) and/or part(s) of the image to download (e.g., amd64, or arm64, or source). Thus, rather than associating the source with the corresponding executable image via a labeling convention, the source image manifest should be listed in the image index. - -In addition, in the future, source artifacts should not masquerade as executable layer tar files; the extra wrapping of source artifacts in a tar archive should be eliminated, and the source artifacts should be identified with appropriate media types. Successful deduplication requires careful, consistent tar archives. Simply storing the source artifact directly (and marking it with an appropriate media type) reduces this potential deduplication loss from inconsistent tarball wrappers. - -Finally, source artifacts in a registry should be consistent with the approach for other non-layer content in registries (such as Helm charts). Providing a consistent way to serve such content is the subject of the "artifacts" project within the Open Container Initiative. Registry-native distribution of source can be a beneficiary of that project. - -#### In summary - -The current approach (see the [current approach example][5]): - - * Source artifacts masquerade as regular layers—wrap each source artifact in a tarball and mark it with a regular layer media type. - * Identify the name of a source artifact inside the tar wrapper. - * Associate the source and executable images using a tag name convention—tag the source image manifest with the tag for the corresponding executable image extended with "-source." - - - -The future approach (see the [future approach example][6]): - - * No masquerade—store source artifacts directly in the registry (named, as other registry content, by a hash digest) and give them non-layer media type(s). - * Identify the name of a source artifact with a layer annotation in the manifest. - * Associate the source and executable images using the image index—list the source manifest in the image index, along with manifests for each machine architecture. - * Use a distinctive config. media type in source manifests (as proposed in the OCI artifacts project). - - - -#### Where are we now? - -Source "containers," which are actually images, for UBI images are in the Red Hat registry now. These source images have been built using production tools. The next step is to roll this out to other images. - -#### Where are we going? - -We need an industry-wide, consistent approach to making source code available for container images. Let's work together in the OCI's artifacts project and agree on the details of the no-masquerade approach. - -### Opportunities - -Including source code leads to opportunities. Making the full corresponding source code available as a corresponding source image can address more than merely GPL source availability: - - * The exact license for open source software can be complicated (see [Is open source software licensing broken?][7]). But, with the full source code, one can determine whatever details are important to them (see [The source code is the license][8]). - * How about license notices? You could attempt to extract all of them. Or, you could make the notices available directly via the source code (see [An economically efficient model for open source software license compliance][9]). - - - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/7/compliance-containers - -作者:[Scott K Peterson][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/skpeterson -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/bus-containers2.png?itok=idd8duC_ (Shipping containers stacked in a yard) -[2]: https://opensource.com/article/18/7/whats-container-image-meeting-legal-challenges -[3]: https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html#section3 -[4]: https://github.com/opencontainers/artifacts -[5]: https://blockchain-forensics.com/containers/current.svg -[6]: https://blockchain-forensics.com/containers/future.svg -[7]: https://opensource.com/article/20/2/open-source-licensing -[8]: https://opensource.com/article/17/12/source-code-license -[9]: https://opensource.com/article/17/9/economically-efficient-model diff --git a/sources/tech/20200712 Recovering audio from a lost format with open source.md b/sources/tech/20200712 Recovering audio from a lost format with open source.md deleted file mode 100644 index 863a296817..0000000000 --- a/sources/tech/20200712 Recovering audio from a lost format with open source.md +++ /dev/null @@ -1,133 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Recovering audio from a lost format with open source) -[#]: via: (https://opensource.com/article/20/7/hdcd) -[#]: author: (Chris Hermansen https://opensource.com/users/clhermansen) - -Recovering audio from a lost format with open source -====== -The history of HDCD format and how I recovered lost audio on Linux. -![11 CDs in a U shape][1] - -Back in the early 2000s, we made a family decision to upgrade the living room stereo. The equipment in place at the time was based on a collection of gear that I had purchased some 20 years earlier when I first had a steady post-university income. That early collection could best be described as "industrial chic," most notably the [Hafler amplifiers][2] I had built from kits and the [Polk speakers][3] made from some kind of composite wood product and finished with an ugly faux-rosewood vinyl wrap. They produced decent sound, but the dorm-room-style decor just wasn't working out in the living room. - -Those of you who remember the early 2000s will recall that most of the world was still consuming music on CD. Our family was no exception, and we ended up with a fine CD player that had an interesting feature—it was able to decode regular CDs as well as high-definition-compatible digital (HDCD) discs. - -According to [Wikipedia][4], HDCD is a proprietary audio encode-decode process that claims to provide increased dynamic range over that of standard Red Book audio CDs, while retaining backward compatibility with existing compact disc players. - -The [manual for our CD player][5] states: "HDCD system is manufactured under license from Pacific Microsonics, Inc." and "HDCD is a digital signal processing system developed by Pacific Microsonics of California which conceals control codes into a very small fraction of the recorded CD digital audio stream. An HDCD decoder recognizes these control codes and uses them to process the digital audio to increase its dynamic range and resolution, while leaving the original digital stream compatible with conventional CD players." - -How does HDCD work this magic, you may ask? The same Wikipedia entry states, "HDCD encodes the equivalent of 20 bits worth of data in a 16-bit digital audio signal by using custom dithering, audio filters, and some reversible amplitude and gain encoding; Peak Extend, which is a reversible soft limiter; and Low-Level Range Extend, which is a reversible gain on low-level signals." - -Whatever the merits of this technology, its parent company was unable to continue business and ceased operations sometime in 2000. The Wikipedia article indicates that Microsoft acquired the company and incorporated code in Windows Media Player to allow the decoding of HDCD, but seemingly lost interest in its promotion. Perhaps this was due to the emergence of other proprietary high-resolution audio formats such as SACD and DVD-A, which were able to encode a full 24 bits of signal on a similar-looking but incompatible media. Neither of these latter formats was especially successful, at least not in commercial terms, though studios continue to release music on SACD. As it happens, SACD included a "hybrid" standard that provided both SACD and backward-compatible CD layers on the same disc, allowing the playback of those albums on regular CD players at standard CD resolution. - -How many artists and studios actually made use of HDCD? Well, Discogs offers [a list of 11,284 HDCD recordings][6] (as of this writing). [This web site][7] offers an interesting analysis of some of the facilities HDCD provided, using actual HDCD encoded music. And for those interested in the original patent, which Google Patents claims has expired, [it can be found here][8]. - -### My HDCD story - -Anyone who is interested enough in audio equipment to read promotional brochures or audiophile magazines will recognize the fascination many audiophiles have with proprietary designs—they seem to view a patent as validation of the equipment that uses that technology. - -Though now I do what I can to avoid being swayed by "proprietary technology fascination," I admit I was not such a staunch proponent of all things open back in the early 2000s. Not only did I buy the aforementioned fine CD player with its proprietary innards, but I also bought—the horror!—a few actual HDCD-encoded titles. - -This past weekend, I managed to find three of them in our collection, but I am certain there are more. The three I managed to find include Ensemble Dumont's [La Messe du Roi][9], Musica Secreta's [Dangerous Graces][10], and the Orchestra of the Age of Enlightenment's [Vivaldi Concerti][11], all from the Linn Records Linux-friendly [music store][12]. While making sure these titles were still available, I noticed that they are no longer offered in HDCD. - -Given that I have these albums on hand and that the patent seems to have expired, I decided to find out whether I could convert these discs in their full intended resolution to an open music format, and moreover, whether I could do so without using proprietary software. - -The first software I stumbled upon for decoding HDCD format was hdcd.exe., [described and offered here][13]. Since the source code for this software was not offered, and since it required Windows, or at least Wine, to run, my initial interest mostly evaporated. - -The Wikipedia article noted above mentioned that some other Windows-based music players offered HDCD decoding. Hmm. But then I spotted: - -"FFmpeg's libavfilter includes an HDCD filter as of FFmpeg 3.1 (June 2016) that will convert 16-bit PCM with HDCD data to 20-bit PCM." - -This seemed like a promising starting point, so I installed `ffmpeg` from my distro's repositories, and then went looking for some more hints, at which point I stumbled on [the very concise description on hydrogenaudio][14], which even supplies a script for finding HDCD-encoded files in one's music directory. I used the line that runs `ffmpeg` against one of the files ripped from the Musica Secreta CD mentioned previously, as follows: - - -``` -ffmpeg  -hide_banner -nostats -y -v verbose -i \ -'01 - Musica Secreta - Questi odorati fiori.flac' --vn -af hdcd -f s24le /dev/null 2>&1 | grep "_hdcd_" -``` - -and received the following output: - - -``` -[Parsed_hdcd_0 @ 0x55b2137e2c80] Disabling automatic format conversion. -[Parsed_hdcd_0 @ 0x55b2137e2c80] Auto-convert: disabled -[Parsed_hdcd_0 @ 0x55b2137e2c80] Looking for 16-bit HDCD in sample format s16 -[Parsed_hdcd_0 @ 0x55b2137e2c80] CDT period: 2000ms (88200 samples @44100Hz) -[Parsed_hdcd_0 @ 0x55b2137e2c80] Process mode: process stereo channels together -[Parsed_hdcd_0 @ 0x55b2137e2c80] Force PE: off -[Parsed_hdcd_0 @ 0x55b2137e2c80] Analyze mode: [0] disabled -[Parsed_hdcd_0 @ 0x55b2137e2c80] Channel 0: counter A: 0, B: 1657, C: 1657 -[Parsed_hdcd_0 @ 0x55b2137e2c80] Channel 0: pe: 1657, tf: 0, almost_A: 0, checkfail_B: 0, unmatched_C: 0, cdt_expired: 0 -[Parsed_hdcd_0 @ 0x55b2137e2c80] Channel 0: tg 0.0: 1657 -[Parsed_hdcd_0 @ 0x55b2137e2c80] Channel 1: counter A: 0, B: 1657, C: 1657 -[Parsed_hdcd_0 @ 0x55b2137e2c80] Channel 1: pe: 1657, tf: 0, almost_A: 0, checkfail_B: 0, unmatched_C: 0, cdt_expired: 0 -[Parsed_hdcd_0 @ 0x55b2137e2c80] Channel 1: tg 0.0: 1657 -[Parsed_hdcd_0 @ 0x55b2137e2c80] Packets: type: B, total: 3314 -[Parsed_hdcd_0 @ 0x55b2137e2c80] HDCD detected: yes, peak_extend: enabled permanently, max_gain_adj: 0.0 dB, transient_filter: not detected, detectable errors: 0 -``` - -Note the last line above mentioning that HDCD was, in fact, detected. Also, it seems that the "peak extend" capability is enabled. As I understand this capability, it reverses the compression/limiting applied to the loudest parts of the music after dropping the overall signal level by a factor of two, thus restoring some of the original recording's extra dynamic range. Goodwin's High End's web site has a detailed description of this topic [here][15]. - -At this point, it was time to try this whole thing out. For some reason, I did not feel confident doing a one-step conversion from 16-bit undecoded FLAC to 24-bit decoded FLAC, so I ran the conversion in two steps, as follows: - - -``` -for f16 in *.flac; do -trk=`basename "$f16" .flac` -w24="$trk"_24.wav -ffmpeg -i "$f16" -af hdcd -acodec pcm_s24le "$w24" -flac "$w24" -done -``` - -This gave me a set of 24-bit 44.1kHz FLAC files, which I verified with the **file** command. At that point, all I needed to do was make sure all the tags looked good, and that was that. - -### And speaking of music… - -I've been taking a break from this music column this year, as I haven't done much except listen to things I already have on hand. But a few new items have crept into my collection. - -Emancipator's latest, [Mountain of Memory][16], is available from that great Linux-friendly and artist-friendly online store, [Bandcamp][17]. If you like Emancipator's earlier stuff, you won't be disappointed with this. - -The Choir of Clare College at Cambridge and the Dmitri Ensemble have released [a fine collection of music by Arvo Pärt, Peteris Vasks, and James MacMillan][18], entitled "Arvo Pärt Stabat." I haven't listened to this album carefully, but even so, I am struck by the similarity between the three composers' work presented here. Maybe something about the shared influence of a northern European landscape and weather? I bought this beautiful choral music as a 96/24 FLAC download from [Presto Classical][19], another fine Linux-friendly online store. For those interested in more information on this music, there is an interview on that site with Graham Ross, the conductor of the Choir of Clare College. - -Finally, some other interesting news—an online store with lots of great high-resolution downloads that has frustrated me for many years (to the point of sending them numerous whiny emails), [HDtracks][20], has finally made it possible to purchase music from them without using their download manager! I haven't actually bought anything there yet, but I will soon give it a whirl and report back. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/7/hdcd - -作者:[Chris Hermansen][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/clhermansen -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/life_cd_dvd.png?itok=RBwVIzmi (11 CDs in a U shape) -[2]: https://audiokarma.org/forums/index.php?threads/questions-about-hafler-dh-110-connections.790899/ -[3]: https://forum.polkaudio.com/discussion/166859/monitor-7b-question -[4]: https://en.wikipedia.org/wiki/High_Definition_Compatible_Digital -[5]: https://docs.linn.co.uk/wiki/images/0/08/Ikemi_genki_user_manual.pdf -[6]: https://www.discogs.com/search/?format_exact=HDCD -[7]: http://www.audiomisc.co.uk/HFN/HDCD/Examined.html -[8]: https://patents.google.com/patent/US5479168?oq=US5479168 -[9]: https://www.linnrecords.com/recording-la-messe-du-roi -[10]: https://www.linnrecords.com/recording-dangerous-graces-music-cipriano-de-rore-and-pupils -[11]: https://www.linnrecords.com/recording-vivaldi-concerti -[12]: https://www.linnrecords.com/ -[13]: http://forum.doom9.org/showthread.php?t=129136 -[14]: https://wiki.hydrogenaud.io/index.php?title=High_Definition_Compatible_Digital#FFmpeg -[15]: http://www.goodwinshighend.com/music/hdcd/gain_scaling.htm -[16]: https://emancipator.bandcamp.com/album/mountain-of-memory -[17]: https://bandcamp.com/ -[18]: https://www.clarecollegechoir.com/product/arvo-p%C3%A4rt-stabat -[19]: https://www.prestomusic.com/classical/products/8766094--arvo-part-stabat-mater -[20]: https://www.hdtracks.com/ diff --git a/sources/tech/20200714 5 things to look for in an open source alternative to SharePoint.md b/sources/tech/20200714 5 things to look for in an open source alternative to SharePoint.md deleted file mode 100644 index f60f1fae0e..0000000000 --- a/sources/tech/20200714 5 things to look for in an open source alternative to SharePoint.md +++ /dev/null @@ -1,90 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (5 things to look for in an open source alternative to SharePoint) -[#]: via: (https://opensource.com/article/20/7/sharepoint-alternative) -[#]: author: (Will Kelly https://opensource.com/users/willkelly) - -5 things to look for in an open source alternative to SharePoint -====== -If you're considering an open source collaboration platform to meet your -remote workforce's needs, here are five things to keep in mind. -![Digital images of a computer desktop][1] - -We're entering a collaboration platform renaissance as remote work becomes the norm for enterprises large and small. [Microsoft SharePoint][2]—a collaboration platform available on premises or in the cloud—is the de-facto standard for corporations and government agencies. However, SharePoint implementations are infamous for the [challenges][3] that prevent their completion. Combine those common speedbumps with shrinking IT budgets and rising collaboration requirements because of remote work, and open source alternatives to SharePoint become well worth a look. - -Here are five things to consider in an open source alternative to SharePoint. - -### Is it easy to install, set up, and use in the cloud? - -Looking beyond installation and initial configuration, you want an open source alternative that's easy to set up. Treat open source collaboration tools as something you must take responsibility for, particularly in setup and user support, whether you have your IT department's approval or you're going shadow IT. - -Chances are you'll be installing the platform in a public or private cloud space, so look for an open source collaboration platform that's cloud-friendly. For example, if your organization is running Amazon Web Services (AWS), you can install open source wikis, including [MediaWiki][4], [DokuWiki][5], and [TikiWiki][6], from the AWS Marketplace. After installing them, you can get an idea of how much using the platform will affect your organization's cloud bill. - -### Is it friendly to end-users? - -Show me a complex collaboration site, and I'll show you the developers and other staff who are doing their darndest to work around it. You don't want to make this mistake. - -Keep it simple if you want to spin up an open source collaboration platform to replace or augment SharePoint for your remote workers. The easier the collaboration platform is for your users, the better chance you have of winning them over as allies. - -With features like a Configure Sites wizard, TikiWiki is an example of an open source collaboration platform that's end-user friendly. - -### Are the content-editing tools easy to use? - -Editing options are a major benefit to the diverse communities of open source contributors building these technologies. MediaWiki is one example of how open source collaboration platforms approach authoring tools. The project has an [Editing team][7] that focuses just on editing and authoring tools. Some of its projects include [WikiEditor][8], [VisualEditor][9], and [CodeEditor][10] extensions. You're bound to find an editor that fits your users' workstyle. - -This feature becomes especially important for developers, who have been known to rebel against SharePoint because it lacks Markdown support. Get feedback from your developers about their authoring needs. If Markdown is one of their requirements, make sure you choose an open source collaboration platform that supports it. - -Also be sure to follow open source adoption best practices by ensuring the technology has an active community. For example, some DokuWiki editor plugins, such as [Ace Editor][11] and [Editor Plugin][12], haven't been updated in years. - -### What kind of access control is available to protect content? - -If you're dealing with project documentation or any type of sensitive corporate information, examine the access control options in any open source collaboration platform you're considering. Look for support for read-only pages and access-control lists (ACLs). - -Open source wikis are open by default. That's not necessarily a bad thing, depending on your security posture. SharePoint permissions are a [known trouble spot][13], even in the eyes of SharePoint experts. In contrast, DokuWiki has a well-documented [ACL feature][14]. - -### Is it integration-friendly for your organization? - -Even if you're moving to an open source collaboration platform as a last-minute replacement for an ailing SharePoint implementation, you can't ignore your integration requirements. - -MediaWiki and TikiWiki use a MySQL backend. DokuWiki doesn't require a database; it uses plain text files. Databases can be an integration consideration, based on your team members' database chops. - -Integration with an authentication backend such as LDAP will also be necessary for some organizations. Security and compliance people get worried about new platforms that aren't aligned with corporate standards. Users often resent having yet another password to remember. - -### Deploy with care - -Open source collaboration alternatives have a unique growth opportunity, as organizations find their once-ignored collaboration tools aren't serving their burgeoning remote workforces. Regardless of your goals, deploy your open source SharePoint alternative with care. - -Have you moved to an open source collaboration platform to better serve your remote workers? If so, please share your experiences in the comments. - -Sandstorm's Jade Wang shares some of her favorite open source web apps that are self-hosted... - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/7/sharepoint-alternative - -作者:[Will Kelly][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/willkelly -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/computer_browser_web_desktop.png?itok=Bw8ykZMA (Digital images of a computer desktop) -[2]: https://www.microsoft.com/en-us/microsoft-365/sharepoint/collaboration -[3]: https://sharepointmaven.com/sharepoint-implementation-failed/ -[4]: https://www.mediawiki.org/wiki/MediaWiki -[5]: https://www.dokuwiki.org/ -[6]: https://tiki.org/HomePage -[7]: https://www.mediawiki.org/wiki/Editing_team -[8]: https://www.mediawiki.org/wiki/Extension:WikiEditor -[9]: https://www.mediawiki.org/wiki/Extension:VisualEditor -[10]: https://www.mediawiki.org/wiki/Extension:CodeEditor -[11]: https://www.dokuwiki.org/plugin:aceeditor -[12]: https://www.dokuwiki.org/plugin:editor -[13]: https://www.varonis.com/blog/why-do-sharepoint-permissions-cause-so-much-trouble/ -[14]: https://www.dokuwiki.org/acl diff --git a/sources/tech/20200722 6 ways to contribute to an open source alternative to Slack.md b/sources/tech/20200722 6 ways to contribute to an open source alternative to Slack.md deleted file mode 100644 index 4db4090fb8..0000000000 --- a/sources/tech/20200722 6 ways to contribute to an open source alternative to Slack.md +++ /dev/null @@ -1,190 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (6 ways to contribute to an open source alternative to Slack) -[#]: via: (https://opensource.com/article/20/7/mattermost) -[#]: author: (Jason Blais https://opensource.com/users/jasonblais) - -6 ways to contribute to an open source alternative to Slack -====== -Join thousands who have contributed code, translations, documentation, -and more to Mattermost, an open source messaging platform. -![Chat bubbles][1] - -[Mattermost][2] is a messaging platform built in Go and React for DevOps teams. You can discuss topics in channels, private groups, or one-to-one with rich [Markdown][3] formatting and easily share code snippets with syntax highlighting in more than 50 programming languages. You can self-host or deploy on a private cloud to connect in-house systems with plugins, Slack-compatible integrations, and extensive API support. And you can collaborate with your team using the [Linux desktop application][4]. - -![Mattermost user interface on Linux Desktop App][5] - -(Mattermost, [CC BY-SA 4.0][6]) - -The platform's open source nature offers three direct benefits over proprietary messaging platforms like Slack, Microsoft Teams, and Discord: - - 1. **No vendor lock-in:** With open source software, the code is available to everyone. Users, third-party vendors, and organizations have access to the code at all times, free of cost. Moreover, users get peace of mind with full control over their data, security, and infrastructure. - 2. **Stronger security:** With a large community of developers, security flaws are detected, fixed, and communicated quickly to all users, often before a flaw ships in the product. As highlighted in Red Hat's report on [The State of Enterprise Open Source][7], high-quality software and better security are top benefits of enterprise open source software. - 3. **Community-powered:** A growing community accelerates innovation by collaborating on problems, finding solutions, and creating new use cases, all leading to rapid feature development not possible with proprietary solutions. A thriving community is a force-multiplier for open source projects. - - - -Mattermost is no different, and the community has been a major driving force behind the project. From the 100 most popular features to the 700,000-plus translations contributed to Mattermost, the open source community's impact on the project has been enormous. We've sent swag (such as a customized mug to all first-time contributors) to more than 1,000 contributors, and our [Contributor Wall of Fame][8] keeps growing every month. - -If you are interested in contributing to open source, DevOps, or the Go and React technologies, consider joining the Mattermost community. We have [good first help-wanted issues][9] for new contributors, [contribution guidelines][10] to help get you started, and other resources at [developers.mattermost.com][11]. Moreover, you don't have to be a developer to contribute. You can help with translations, documentation, and more. - -Interested in contributing to Mattermost? To make it easier to learn about all the ways to get involved with our community, we've gathered some information from our [Handbook][12], [Contribute page][13], [Security page][14], and more to help you get started. - -### Platform - -Build new features, improve existing ones, and fix bugs across the Mattermost platform. There are a variety of technologies and frameworks to choose from: - - * **Server:** Written in Go, includes the API, data model, logging, and more - * **Webapp:** Written in React (JavaScript library), includes all components and actions of the Mattermost user interface  - * **Mobile apps:** Written in React Native (JavaScript library), includes all components and actions of the mobile apps on iOS and Android - * **Desktop apps:** Written on top of the Electron framework for Windows, macOS, and Linux clients - * **Redux:** Written in JavaScript and TypeScript, includes storage, web utilities, and logic for webapp and React Native mobile clients - - - -Contribute in four steps: - - 1. Sign up to our Mattermost community site and join the Contributors channel for questions. - 2. Set up your developer environment by following our instructions. If you're working on mobile apps, you'll also need a mobile dev environment. - 3. Choose a [help-wanted ticket][15] and comment to let people know you're working on it. If there's no ticket for what you want to work on, follow the contributions without tickets process. - 4. Start developing! Check out our [developer flow][16] for tips, and review our [checklist for pull requests][17] when your changes are ready. If it's your first contribution, there is a standard contributor license agreement ([CLA][18]) to sign. - - - -### Integrations - -Create a host of technologies to empower Mattermost to solve real-world problems. These include: - - * **Self-hosted integration solutions:** Include connectivity and integration with third-party applications such as Jira, Jitsi, GitLab, Jenkins, and other tools - * **SaaS-based integration solutions:** Include connectivity and integration with services like Twitter, Zendesk, Salesforce, and hundreds of other extensions with services like Zapier - * **Federated experiences:** Include bridges with IRC, Slack, and other messaging applications through solutions like [Matterbridge][19] - * **Programming solutions:** Include language-specific drivers and connectors to simplify the work of other developers - * **Mattermost user-experience plugins:** Include server- and client-side plugins that enhance the native capabilities of a Mattermost server, such as voice, video, and screen sharing - * **Custom user experiences:** Include integrations into Terminal like [Matterhorn][20] and [Pidgin][21] built off the same core [Mattermost APIs][22] - - - -Contribute in four steps: - - 1. Sign up to our Mattermost community site and join the [Developer Toolkit channel][23] for questions. - 2. Visit the Mattermost Integrations Directory for a current list of open source integrations and projects to get ideas on how to get started. - 3. Start developing! Read our [integrations guide][24] for tips on how to integrate with the Mattermost server. - 4. Have you built something for Mattermost? We want to hear about it! [Let us know here][25]. - - - -### Localization - -Today, Mattermost ships in 16 languages, and 26 other languages are in progress by hundreds of contributors. If you're interested in translating, here's how to get involved: - - 1. Sign up to our Mattermost community site and join the Localization channel for questions. - 2. Sign up to our translations server. - 3. Choose your language. If the language is already listed in the translations server, you can offer help by translating, reviewing, or making suggestions to existing strings. If it's not listed, ask in the Localization channel to set up your language. - 4. Start translating! Read our Localization documentation for more information on the translation rules and maintenance process. - - - -### Documentation - -Write software and troubleshooting documentation used by thousands of people across the world. These include: - - * **[Product documentation][26]:** Includes feature documentation for users and administrators, including troubleshooting notes and frequently asked questions - * **[Developer documentation][11]:** Includes documentation for contributor and developer workflows, integrations, and extensions - * **[API documentation][22]:** Includes documentation of the RESTful API used by the Mattermost platform - - - -Contribute in three steps: - - 1. Sign up to our Mattermost community site and join the [Documentation channel][27] for questions. - 2. Choose a [ticket][15] and comment to let people know you're working on it. See the [process][28] for contributing. - 3. Review our [documentation guidelines][29] for tips on how to create effective docs. Note that if it is your first pull request, you will be asked to sign a standard [CLA][18]. - - - -### Peer-to-peer support and feedback - -Not a developer but still want to contribute to open source? No problem! In addition to localization and documentation mentioned above, you can: - - * **Report bugs:** Sign up to our Mattermost community site and join the [Bugs channel][30] for questions. Then, go to our [GitHub page][2] and open a new issue in the relevant repository. Read our docs on [steps for filing bugs][31]. - * **Test and find issues:** Go to our [community test server][32] or any of Mattermost's open source codebases to test and find issues. If you find a bug, go to our GitHub page and open a new issue in the relevant repository. Read our docs on [steps for filing bugs][31]. - * **Troubleshoot issues:** Sign up to our Mattermost community site and join the [Peer-to-Peer Help channel][33] to help answer questions. Follow questions in Mattermost [Forums][34] and GitHub Issues to help others. - * **Suggest new features:** Sign up to our Mattermost community site and join the [Feature Proposals channel][35] to ask questions. Then, go to [Uservoice][36] to propose new features. Read our docs on [contributing feature proposals][37]. - * **Share feedback:** Sign up to our Mattermost community site and join the Peer-to-Peer Help channel to ask questions and share feedback about Mattermost. - - - -### Security vulnerabilities - -Safety and data security are top priorities for the Mattermost community. If you are a security researcher and discover a security vulnerability in our codebase, we appreciate your help in disclosing it to us in a responsible manner. - -If the security bug you found is valid, the fix will be posted on our [Security Updates][38] page 30 days after its release, and you will be added to our [Security Research Hall of Fame][14]. If you'd like, we will publicly acknowledge your responsible disclosure. If not, you can remain anonymous. - -Here's how to contribute through our [responsible disclosure policy][14]: - - 1. Contact us to report any security vulnerabilities found in any of Mattermost's open source codebases or any of our commercial offerings. - 2. We will let you know if your report is reproducible as an exploit and results in a change to a Mattermost product's codebase or documentation. - - - -After a fix is made, we ask security researchers to wait 30 days after a release before announcing the specific details of a vulnerability and to provide Mattermost with a link to any such announcements. - -### Getting help - -If you have any questions or need help getting started, join our [Mattermost Contributors channel][39]. You can reach me at @jason.blais. See you there! - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/7/mattermost - -作者:[Jason Blais][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/jasonblais -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/talk_chat_communication_team.png?itok=CYfZ_gE7 (Chat bubbles) -[2]: https://github.com/mattermost -[3]: https://opensource.com/downloads/cheat-sheet-markdown -[4]: https://mattermost.com/download/#mattermostApps -[5]: https://opensource.com/sites/default/files/uploads/mattermostui.png (Mattermost user interface on Linux Desktop App) -[6]: https://creativecommons.org/licenses/by-sa/4.0/ -[7]: https://www.redhat.com/en/enterprise-open-source-report/2020 -[8]: https://developers.mattermost.com/contribute/team_contributions/ -[9]: https://github.com/mattermost/mattermost-server/issues?q=label%3A%22Help+Wanted%22+label%3A%22Good+First+Issue%22+label%3A%22Up+For+Grabs%22+is%3Aopen+is%3Aissue+ -[10]: https://developers.mattermost.com/contribute/getting-started/ -[11]: https://developers.mattermost.com/ -[12]: https://handbook.mattermost.com/contributors/contributors/community -[13]: https://mattermost.com/contribute/ -[14]: https://mattermost.com/security-vulnerability-report/ -[15]: https://github.com/mattermost/mattermost-server/issues?q=is%3Aissue+is%3Aopen+label%3A%22Up+For+Grabs%22 -[16]: https://developers.mattermost.com/contribute/server/developer-workflow/ -[17]: https://developers.mattermost.com/contribute/getting-started/contribution-checklist/ -[18]: https://www.mattermost.org/mattermost-contributor-agreement/ -[19]: https://github.com/42wim/matterbridge -[20]: https://github.com/matterhorn-chat/matterhorn -[21]: https://github.com/EionRobb/purple-mattermost/ -[22]: https://api.mattermost.com/ -[23]: https://community.mattermost.com/core/channels/developer-toolkit -[24]: https://developers.mattermost.com/integrate/getting-started/ -[25]: https://www.mattermost.org/share-your-mattermost-projects/ -[26]: http://docs.mattermost.com/ -[27]: https://community.mattermost.com/core/channels/documentation -[28]: https://github.com/mattermost/docs#contributing -[29]: https://handbook.mattermost.com/operations/operations/publishing/publishing-guidelines/voice-tone-and-writing-style-guidelines -[30]: https://community.mattermost.com/core/channels/bugs -[31]: https://www.mattermost.org/filing-issues/ -[32]: https://rc.test.mattermost.com/ -[33]: https://community.mattermost.com/core/channels/peer-to-peer-help -[34]: https://forum.mattermost.org/ -[35]: https://community.mattermost.com/core/channels/feature-ideas -[36]: https://mattermost.uservoice.com/forums/306457-general -[37]: https://www.mattermost.org/feature-ideas/ -[38]: https://mattermost.com/security-updates/ -[39]: https://community-release.mattermost.com/core/channels/tickets diff --git a/sources/tech/20200723 Build your own open source alternative to Google Suite with Nextcloud.md b/sources/tech/20200723 Build your own open source alternative to Google Suite with Nextcloud.md deleted file mode 100644 index 87cbc1a101..0000000000 --- a/sources/tech/20200723 Build your own open source alternative to Google Suite with Nextcloud.md +++ /dev/null @@ -1,127 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Build your own open source alternative to Google Suite with Nextcloud) -[#]: via: (https://opensource.com/article/20/7/nextcloud) -[#]: author: (Don Watkins https://opensource.com/users/don-watkins) - -Build your own open source alternative to Google Suite with Nextcloud -====== -The open source cloud collaboration suite has made major gains in recent -years. Take a look at what you've missed. -![Digital images of a computer desktop][1] - -A few years ago, I installed [Nextcloud][2] for a local theatre and museum that was looking for an on-premises cloud solution. As an advocate for open source, I always seek out open source options first, and Nextcloud was the most-common open source cloud solution among my peers. I've also used it for some personal projects, but I hadn't looked at it in a while. - -I recently revisited Nextcloud and was amazed by all the changes I saw. The project has evolved into a complete solution that can replace big-name solutions like Google Drive and Microsoft 365. Nextcloud's new feature set, especially [Nextcloud Hub][3], is outstanding, offering collaborative documentation editing, file version control, integrated chat and video calling, and more. - -### Getting started with Nextcloud - -There are many options for [setting up a Nextcloud server on Linux][4], but I decided to run the official [container image][5]. I pulled it down to my laptop, and soon I was up and running. - - -``` -$ docker pull nextcloud -$ docker run -d -p 8080:80 nextcloud -``` - -Installation was quick on my MacBook Pro with 8GB RAM. In no time at all, I was logging into Nextcloud for the first time at `http://locahost:8080` with the default credentials of _admin_ and _password_. - -![Nextcloud login interface][6] - -(Don Watkins, [CC BY-SA 4.0][7]) - -After I entered my login credentials, it began downloading some applications, which took some time. I appreciated that Nextcloud's interface looked much the same as it did years ago, even with all the changes in the platform, because I like to feel familiar with a technology. - -![Nextcloud's UI][8] - -(Don Watkins, [CC BY-SA 4.0][7]) - -Nextcloud's controls are located in the upper-right corner. You can control settings, add apps, create and modify users, learn about Nextcloud, get help, and log out. - -Nextcloud Hub is a central collaboration platform where you can access and collaborate on files, launch, enable, and disable applications, manage your calendar, and more. - -I decided to start by exploring the apps available in Nextcloud. Some app integrations are included by default, and you can download others with a single click. For example, here is the display when I clicked the top-right icon, then selected Apps and Multimedia. - -![Nextcloud multimedia apps][9] - -(Don Watkins, [CC BY-SA 4.0][7]) - -There are hundreds of apps that can be downloaded and added to Nextcloud, and, like Nextcloud, all are licensed under the [AGPLv3][10]. Clicking on an app shows information about it, including its creator and license. I decided to look at [Audio Player][11]. - -![Nextcloud Audio Player][12] - -(Don Watkins, [CC BY-SA 4.0][7]) - -Nextcloud also comes with the [Nextcloud Talk][13] app for videoconferencing with complete end-to-end encryption to keep communication within your control. As of Nextcloud Hub 19, you can work on documents synchronously during video calls with [Collabora Online][14], which will feel familiar to Google Docs users. - -Nextcloud also has a number of important security features, including optional automatic logout, which is useful when using public computers. You can also set up passwordless authentication, automatic account locking after failed login attempts, and two-factor authentication (2FA) through mobile, email, or one-time password devices to verify users' identity before they can log in. - -### Nextcloud's advances - -Eager to learn more about Nextcloud and its new directions, I reached out to CEO [Frank Karlitschek][15] to ask him some questions by email. - -During this time of social distancing, I was curious about how the growth of remote work is fueling Nextcloud's development. Frank says the fact that the world is [working from home][16] is accelerating the adoption of content collaboration software, and Nextcloud is "in the lucky situation that we heavily invested in this fast-growing product category." He specifically cites Nextcloud's abilities to sync, share, and collaboratively view and edit files, as well as its shared calendars, contacts, email, chats, video calls, project management, notes, and many more things as features that help people work together. - -Frank adds, "Nextcloud Talk is our solution for chat and audio and video calls. It has the same benefits as the rest of Nextcloud. All data and communication stay under your control. It is fully open source; you can migrate your data and don't need to trust a third-party company." - -Open source is a key part of Nextcloud's model, Frank says. "Everything server-side is licensed AGPL, and the desktop and mobile clients are licensed GPL. We are happy to not have any proprietary pieces. Everything at Nextcloud is fully free software and open source." - -When I asked him why someone should choose Nextcloud over a proprietary cloud solution, Frank emphasizes the freedom to run where you want with 100% open source software. "Being open source has many benefits for users. It means you can keep your data under your own control. You can run Nextcloud wherever you want. Vendor lock-in is eliminated, so you can move your data around to where you need it. The open source code in Nextcloud ensures that there are no backdoors because the code can be audited. The open source angle has also empowered developers to extend Nextcloud with hundreds of apps, extensions, and plugins." - -I was also curious about Nextcloud's security, including its support for [Nitrokey][17], a feature for passwordless authentication. Frank says, "Nextcloud supports authentication from many different protocols, including LDAP, Active Directory, SAML, OAuth, OpenID connect, WebAuthn, and many more. You can use second-factor authentication methods, including Time-based One-time Password (TOTP), SMS, push notification, SecSign, and email. With the new support for [WebAuthn][18], we also support the new passwordless authentication. Nitrokey already supports this, so you can just authenticate with a Nitrokey without a password. We expect that a lot more devices and software will support this new open standard in the future." - -As I thought about all the changes in Nextcloud, I wondered about its install base. Being open source makes it impossible to know how many Nextcloud installations there are in the world. One of its [container images][19] has over 100 million downloads, and it has a strong following in its source repository on [GitHub][20]. Nextcloud estimates there are over 400,000 Nextcloud servers on the internet, and that number is growing. - -Nextcloud doesn't provide hosting options itself, but it does list service [providers][21] that offer hosted Nextcloud. There are also many options for self-hosting Nextcloud, Frank says. "A Nextcloud server can be very small or very big. Actually, Nextcloud runs fine on a Raspberry Pi for just a few users. This includes chatting and video calling. The Nextcloud server needs a decent network connection if you handle big files or video calls with a lot of users." - -### Open source to its core - -Frank was eager to thank the open source community that comes together and builds great software. He said, "open source is all about the community; no single person or company could do this alone." Therefore, Nextcloud welcomes [contributions][22] to its development. Nextcloud's code is available on [GitHub][23]. To keep up with the latest information, you can follow Nextcloud on [Twitter][24], [Instagram][25], [Facebook][26], [LinkedIn][27], [Mastodon][28], and [YouTube][29]. - -Sandstorm's Jade Wang shares some of her favorite open source web apps that are self-hosted... - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/7/nextcloud - -作者:[Don Watkins][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/don-watkins -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/computer_desk_home_laptop_browser.png?itok=Y3UVpY0l (Digital images of a computer desktop) -[2]: https://nextcloud.com/ -[3]: https://nextcloud.com/hub/ -[4]: https://docs.nextcloud.com/server/19/admin_manual/installation/index.html -[5]: https://hub.docker.com/_/nextcloud/ -[6]: https://opensource.com/sites/default/files/uploads/nextcloud_login.png (Nextcloud login interface) -[7]: https://creativecommons.org/licenses/by-sa/4.0/ -[8]: https://opensource.com/sites/default/files/uploads/nextcloud_interface.png (Nextcloud's UI) -[9]: https://opensource.com/sites/default/files/uploads/nextcloud_multimedia-apps.png (Nextcloud multimedia apps) -[10]: https://www.gnu.org/licenses/agpl-3.0.en.html -[11]: https://apps.nextcloud.com/apps/audioplayer -[12]: https://opensource.com/sites/default/files/uploads/nextcloud_audio-player_0.png (Nextcloud Audio Player) -[13]: https://nextcloud.com/talk/ -[14]: https://nextcloud.com/collaboraonline/ -[15]: https://en.wikipedia.org/wiki/Frank_Karlitschek -[16]: https://opensource.com/tags/wfh -[17]: https://www.nitrokey.com/ -[18]: https://en.wikipedia.org/wiki/WebAuthn -[19]: https://hub.docker.com/r/linuxserver/nextcloud/ -[20]: https://github.com/nextcloud/server -[21]: https://nextcloud.com/providers/ -[22]: https://nextcloud.com/contribute/ -[23]: https://github.com/nextcloud -[24]: https://twitter.com/nextclouders -[25]: https://instagram.com/nextclouders -[26]: https://www.facebook.com/Nextclouders/ -[27]: https://www.linkedin.com/company/10827569/ -[28]: https://mastodon.xyz/@nextcloud -[29]: https://youtube.com/nextcloud diff --git a/sources/tech/20200726 Dreamweaver Alternatives- 5 Open Source HTML and CSS Editors for Web Developers and Designers.md b/sources/tech/20200726 Dreamweaver Alternatives- 5 Open Source HTML and CSS Editors for Web Developers and Designers.md deleted file mode 100644 index 0eace81ea0..0000000000 --- a/sources/tech/20200726 Dreamweaver Alternatives- 5 Open Source HTML and CSS Editors for Web Developers and Designers.md +++ /dev/null @@ -1,203 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Dreamweaver Alternatives: 5 Open Source HTML and CSS Editors for Web Developers and Designers) -[#]: via: (https://itsfoss.com/open-source-html-editors/) -[#]: author: (Ankush Das https://itsfoss.com/author/ankush/) - -Dreamweaver Alternatives: 5 Open Source HTML and CSS Editors for Web Developers and Designers -====== - -Adobe Dreamweaver is a popular tool for professionals to design websites. Even though it enjoyed all its glory in the past decade, it’s no longer the most popular tool out there (at least, as far as I’m aware of). - -Its expensive subscription plans and the availability of free and open-source alternatives has left an impact to its popularity. - -Moreover, with the growth of popular [open source CMS][1] options and drag-drop website builders, it’s really easy to build a website when compared to the previous decade. - -Unless you’re a professional with a specific set of requirements, there’s no reason to use Dreamweaver. So, here, in this article, I’m going to list some of the best free open-source Dreamweaver alternatives that lets you edit HTML/CSS. - -### Open source HTML and CSS editors for web developers - -![][2] - -I understand that some web developers and designers prefer WYSIWYG (What You See Is What You Get) feature. Not all the editors mentioned here offer this feature but when they do, I have highlighted it explicitly. - -I have used [this website template][3] for testing out the HTML editors. This _**list is in no particular order of ranking**_. - -#### 1\. Bluefish Editor - -![][4] - -**Key Highlights:** - - * Auto-completion - * Preview in browser - * Site upload/download options - * Code block folding - * Support for several programming languages - * Supports WordPress language definition files - * Cross-platform support - - - -Bluefish is a feature-rich editor that’s perfectly suitable for both beginners and experienced web designers. - -Even though it does NOT offer [WYSIWYG][5], the browser preview feature lets you make changes to the coding and see it in action quickly without any special configuration. It’s also a lightweight application – so it isn’t heavy on resources. - -Try it out to explore more about it. - -##### How to install it? - -You may find it listed in your software center. If you don’t, you can follow the [official installation instructions][6] to add the repository and install it on your Linux distribution. - -Also, there’s a [Flatpak package][7] available in case you prefer using it. I’d suggest you to refer our [Flatpak guide][8] if you don’t know about it. - -[Bluefish][9] - -#### 2\. BlueGriffon - -![][10] - -**Key** **Highlights:** - - * **WYSIWYG** editor - * Black and light theme - * Responsive Design support - * EPUB 3.1 support - * Cross-platform support - - - -BlueGriffon is an impressive WYSIWYG HTML/CSS editor. You can choose to edit the codes and check the design or simply edit it visually without needing to fiddle with the codes. - -This is especially helpful for folks who aren’t comfortable with HTML/CSS and just starting out. It makes it easy to edit while offering all the necessary features for a web designer. - -##### How to install it? - -You can download the deb package from its [official website][11] or opt for other installers and source code depending on the Linux distribution you’re using. - -You may want to read the [different ways to install a DEB file][12] if you’re on an Ubuntu-based distro. - -[BlueGriffon][13] - -#### 3\. SeaMonkey - -![][14] - -**Key Highlights:** - - * WYSIWYG Editor - * Separate browser - * HTML editing - * Cross-platform support - - - -SeaMonkey isn’t your typical code editor — but it’s a collection of Internet applications like a browser, email, IRC chat, and HTML editor. - -It does support editing the source code of a web page and the ability to edit visually without needing to know HTML. - -You can explore more about it when you get it installed. - -##### How to install it? - -You can simply download the package for Linux available on their [official site][15] and run the executable SeaMonkey application file to get started. - -[SeaMonkey][16] - -#### 4\. Brackets - -![][17] - -**Key Highlights:** - - * Live preview option - * Tailored for web design - * Auto-completion - * Cross-platform - - - -Brackets is already one of the [best modern text editors for coding][18] in Linux. It was primarily built for web developers while also supporting other programming languages. - -Surprisingly, it’s an open-source project by Adobe, which isn’t super actively maintained — but it’s there. - -##### How to install it? - -You can simply grab the deb file from its [official website][19] for Ubuntu 19.10 or lower. For Ubuntu 20.04 or any other Linux distro, you will be better off using the [Flatpak package][20] or the [Snap][21]. - -You may also explore their [GitHub releases section][22] for other downloads. - -[Brackets][19] - -#### 5\. NetBeans - -![][23] - -**Key Highlights:** - - * HTML Editor - * Cross-platform - - - -NetBean isn’t technically an out-of-the-box HTML-CSS editor. But, you can use it as an HTML editor when building an HTML5 application. - -It isn’t the go-to solution for HTML editing, but it’s an option out there for a specific group of programmers. You can give it a try to see if it does what you expect it to. - -##### How to install it? - -You can find it listed in your software center. In either case, you can just head to the [official download page][24] to get it installed. - -[NetBeans][25] - -**Which HTML editor do you use?** - -There are a few more editors that you can use for editing HTML and CSS. There is [Aloha Editor Community Edition][26] preferred by some web developers. - -You can surely use other [modern code editors][18] like Atom and VS Code or the good-old [Geany text editor][27] to edit HTML and CSS files. - -If you regularly work on web design and development, which open source HTML editor do you use and recommend? We might add your recommendation to our list here. You may also mention non-open source WYSIWYG editors but that won’t be added in the list for obvious reasons. - --------------------------------------------------------------------------------- - -via: https://itsfoss.com/open-source-html-editors/ - -作者:[Ankush Das][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://itsfoss.com/author/ankush/ -[b]: https://github.com/lujun9972 -[1]: https://itsfoss.com/open-source-cms/ -[2]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/07/Open-Source-html-editors.jpg?ssl=1 -[3]: https://www.styleshout.com/free-templates/kards/ -[4]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/07/bluefish.png?ssl=1 -[5]: https://en.wikipedia.org/wiki/WYSIWYG -[6]: https://bfwiki.tellefsen.net/index.php/Installing_Bluefish -[7]: https://www.flathub.org/apps/details/nl.openoffice.bluefish -[8]: https://itsfoss.com/flatpak-guide/ -[9]: http://bluefish.openoffice.nl/index.html -[10]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/07/bluegriffon.png?ssl=1 -[11]: http://www.bluegriffon.org/#download -[12]: https://itsfoss.com/install-deb-files-ubuntu/ -[13]: http://bluegriffon.org -[14]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/07/seamonkey.png?ssl=1 -[15]: http://www.seamonkey-project.org/releases/ -[16]: http://www.seamonkey-project.org -[17]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/07/brackets-dreamweaver-alternative.png?ssl=1 -[18]: https://itsfoss.com/best-modern-open-source-code-editors-for-linux/ -[19]: http://brackets.io/ -[20]: https://flathub.org/apps/details/io.brackets.Brackets -[21]: https://snapcraft.io/brackets -[22]: https://github.com/adobe/brackets/releases -[23]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/07/netbeans.jpg?ssl=1 -[24]: https://netbeans.apache.org/download/index.html -[25]: https://netbeans.apache.org/ -[26]: https://www.alohaeditor.org/ -[27]: https://www.geany.org/ diff --git a/sources/tech/20200727 What does it mean for code to -work.md b/sources/tech/20200727 What does it mean for code to -work.md deleted file mode 100644 index 5dedc38a6b..0000000000 --- a/sources/tech/20200727 What does it mean for code to -work.md +++ /dev/null @@ -1,91 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (What does it mean for code to "work"?) -[#]: via: (https://opensource.com/article/20/7/code-tdd) -[#]: author: (Alex Bunardzic https://opensource.com/users/alex-bunardzic) - -What does it mean for code to "work"? -====== -Test driven development (TDD) separates computing results from actions -to ensure your code does what you expect. -![Searching for code][1] - -Extreme Programming co-founder [Ron Jeffries][2] famously wrote: "The trick is never to let the code not be working." - -Jeffries' quote points at the fact that software engineering is a very sophisticated activity with plenty of uncertainty. Software engineering also deals with issues of incompleteness—at the outset, you never seem to have all information you need to formulate an optimal approach. There always comes a time, later in the project, when you learn something that shows that several things in your initial understanding were incorrect. In addition, even when you amass sufficient useful information to orient yourself properly, that information tends to contain ambiguity—communication is seldom, if ever, clear. Ambiguity seems to prevail in both verbal and written communication. - -Because of these constraints, the only safe way to proceed when developing software is to rely on the working code. The running, working code is the final oracle. It will tell you if you're doing the right thing and going in the right direction. - -### How do you know if the code is working? - -It is impossible to know if your code is working as designed if the code isn't running. To have code that compiles without errors and always runs without exceptions doesn't mean that the code is working. It could be doing all these activities while doing nothing of use. Therefore, the definition of working code is that it runs without any problems while doing something you expect it to do. - -The only way to find out if your code is working according to expectations is to focus on observable behavior. Merely reading and analyzing the source code is not sufficiently convincing; you need to see the code executing to judge whether its execution meets your expectations. - -There are two ways to measure observable behavior: - - 1. Watch the computer that is running your code perform some actions - 2. Test the running code for the computed values - - - -The first type of observable behavior (observing some actions being performed) is not the best way to ensure that your code works according to expectations. For example, you may observe that your code performed an action, such as sending an email. But that alone is not sufficient to confirm the code works according to expectations. What if the email the code is sending contains incorrect information? - -The only way to confirm that your code is working according to expectations is to observe the computed values. And that process (i.e., observing the computed values to see if they match the expected values) is where test-driven development (TDD) shines. - -### How does it feel to write software if the code is not working? - -Before I discovered TDD, I was spending long stretches of time writing code without worrying about whether the code was working or not. Every now and then, when I felt I had reached a milestone in coding, I would run the application I was working on. I'd log in as a fictitious user and manually trigger some actions to see if the program did what I told it to do. - -This approach is similar to measuring an iceberg by just gauging its tip—the part of the iceberg visible above the water. Although my manual testing provided a clean bill of health for the app, naturally, once it went into production, all kinds of bugs and defects started showing up (caused by the "below-the-waterline" part of the iceberg). - -Looking back, it is obvious that writing code without making it work all the time is similar to flying a kite. Flying a kite in a strong wind is exciting, even exhilarating. But the kite almost never touches the ground, and it is very challenging to control its direction in the strong wind. Also, it is almost impossible to land the kite at the exact spot you aim for. - -### How does it feel to write software when doing TDD? - -TDD is based on the idea that the way the code behaves should be independent from the way the code is structured. You are aiming at a desired behavior. While you're writing code, the desired behavior is not there (that's why it is called "desired"). You implement the desired behavior by first writing a test that describes it. Then you run that test, and it fails because the expected behavior is not implemented yet. The failure prompts you to fix it, which forces you to run the code again. If the changes you make to the code satisfy the expectations described in the test, you conclude that the code works according to your expectations. - -If the changes you make to the code do not satisfy the expectations described in the test, the code does not work, and you need to make more changes to the code until it works as expected. - -This process, when done consistently, feels like riding a galloping horse. Every now and then, a galloping horse touches the ground, which is equivalent to the moment when all tests pass in TDD. While the horse is "in flight," it is charging in a straight line. The horse is advancing, but there is no way to change its course. Only when the horse touches the ground does the horse rider get a chance to change the direction they're heading. - -Similarly, when writing code, you are "in flight." While you're coding, you have no way of verifying if you're going in the right direction. It is only when you stop coding, save your changes, and run the code that you can observe if your code is doing what you expect it to do. You are touching the ground each time you run your code. - -TDD is the discipline that guides you toward performing this reality check as often as possible. This minimizes your risk of shipping incorrect code. - -### You are the first customer of your application code - -Since you're writing a test that automates your expectations, you are the first customer of the application code. Actually, it's better to say that _your test_ is the first customer of your code. The test could be viewed as a customer who walks into a restaurant, and being hungry, orders a meal. When the customer orders, she has a specific meal in mind. The kitchen staff's job is to turn that customer's desire into reality. - -If the waiter delivers the meal and, after tasting it, the customer disagrees that the meal meets her expectations, she returns it to the kitchen. The staff modifies the meal until the customer is satisfied. But kitchen staff will never know if the meal is good unless they collect feedback from the customer. - -In a similar fashion, the only way to know if the code you're writing satisfies expectations is by collecting feedback from the test. - -### Conclusion - -The only way to know if the changes you are making to the code are advancing your app in the right direction is by making the code work. Mere review of the code, the act of reading the code, is never sufficient to reach a solid conclusion that the code is correct. - -Most developers prefer writing code in long stretches. But spending hours writing code means you're wasting hours not making the code work (recall Ron Jeffries' advice "The trick is never to let the code not be working"). You're letting the code not be working if you indulge in long code-writing sessions. - -TDD helps control that by focusing your attention on observable behavior. In TDD, you define expected values and continue interrogating your code to see if it computes those expected values. To confirm or refute the expectations, you must make the code work. The more often you do these "reality checks," the higher the probability that your efforts are going in the right direction. - -The transition from a stable, steady state (being ready) to the next stable, steady state (being ready again), should be as short as possible. TDD strives to help you always travel in a ready-to-ready fashion. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/7/code-tdd - -作者:[Alex Bunardzic][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/alex-bunardzic -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/search_find_code_python_programming.png?itok=ynSL8XRV (Searching for code) -[2]: https://en.wikipedia.org/wiki/Ron_Jeffries diff --git a/sources/tech/20200728 Why now is the best time to use GNOME.md b/sources/tech/20200728 Why now is the best time to use GNOME.md deleted file mode 100644 index 1a0f2ba2c9..0000000000 --- a/sources/tech/20200728 Why now is the best time to use GNOME.md +++ /dev/null @@ -1,106 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Why now is the best time to use GNOME) -[#]: via: (https://opensource.com/article/20/7/new-gnome-features) -[#]: author: (Jim Hall https://opensource.com/users/jim-hall) - -Why now is the best time to use GNOME -====== -GNOME developer Emmanuele Bassi explains the user experience updates in -the GNOME desktop environment. -![Take a look at the latest from GNOME 3][1] - -The GNOME desktop environment has been through many changes since its initial release in March 1999. For most of this time, the open source project has issued updates twice a year, which gives users predictability in when they can expect new features to land on their Linux and other Unix-like desktops. Its latest release, GNOME 3.36, came out in March, and the project is preparing to issue its next iteration in September. To learn about what's new in GNOME, I spoke with Emmanuele Bassi. - -Emmanuele has been contributing to GNOME for more than 15 years. He started as the maintainer of language bindings that allow developers to use GNOME libraries in other programming languages, then moved on to contribute to GTK (a cross-platform widget for developing GNOME apps) and other parts of GNOME. In 2018, GNOME hired Emmanuele as a full-time GTK Core Developer, where he works on GTK and the GNOME application development platform. - -**Jim Hall:** **GNOME 3.36 was released in March 2020. What are some of the major features people should know about?** - -**Emmanuele Bassi:** GNOME has followed a release schedule for the last 18 or so years. GNOME doesn't release when a new feature is ready; we release when it's time. That simplifies the new releases. There isn't a "next big thing" in GNOME. Instead, it's just a new release every six months. We always fix bugs, add new features, and polish up what's there. - -This release was really about making sure all the features were nice to use and pleasant to use. In GNOME 3.36, there's a lot that improves the user experience. One thing I like is the ability to turn off notifications. This is a feature that was available in a very old version of GNOME but was removed a while back because the mechanism underneath it wasn't very reliable. But we added it back because this feature is so useful and important to a lot of people. - -You can toggle notifications on and off for everything or set them for each application you use. You can find this setting in the GNOME Settings app, under the Applications menu. - -![GNOME "Do Not Disturb" feature][2] - -Click "Do Not Disturb" to turn off notifications. (GNOME, [CC BY-SA 4.0][3]) - -![Notifications options in GNOME Settings][4] - -You can turn off notifications for individual applications in the Settings app. (Jim Hall, [CC BY-SA 4.0][3]) - -We also added extra polish to the GNOME lock screen. This updated lock screen has been in the works for ages, and now it's ready. The new GNOME lock screen will blur the background of your current workspace but doesn't show your running applications. It's a great feature for the user experience. We've been working on that for the last three or four cycles, and we fixed a lot of things along the way to make that work well. - -Another thing that's important for user experience is that [there is a new] place to put all the extensions. [It was in] GNOME Software Center, but no one knew to look there. Now there's a separate application to manage it. - -![GNOME Extensions app][5] - -The new Extensions app lets you change extension preferences or turn off those you don't want. (GNOME, [CC BY-SA 4.0][3]) - -And there's lots of little polish added to the GNOME Shell itself. For example, the application folders in the GNOME Shell application launcher are a great new feature. It's really easy to create your own application groups or folders in the launcher. A lot of people had asked for this for a long time. Application folders actually landed in an earlier GNOME release, but [the feature] needed extra work to make it really great, and that's what you see in GNOME 3.36. - -**JH: What are some features of GNOME that more people should know about?** - -**EB:** I don't know that there are other features that are really big in GNOME 3.36. If you're already using GNOME, the biggest thing you'll see is the improved user experience. If you aren't using GNOME, then the big thing is the consistent behavior in using GNOME. It's about a smooth experience with your computer, like your computer isn't going to be bothering you. - -Password fields are easier. This used to be in a menu that you had to know existed if you wanted to use it, but now it's right there. - -**JH: This is a great feature if you use long and complex passwords, like me. In any GNOME prompt where you would type in a password, you can click a little icon to expose your password to make sure you typed it correctly.** - -![GNOME lock screen][6] - -The lock screen includes the new "show your password" feature. (GNOME, [CC BY-SA 4.0][3]) - -**EB:** The new application folders in the GNOME application launcher is another [feature to know about]. The folders are easier to see, and they look great. GNOME will suggest a name for the application folder, but it's really easy to give that folder a different name. - -And more applications in GNOME are now responsive to being resized. They changed that in the user interface. The Settings app is a good example of that. If you make it too narrow, it changes how it displays things. We've been working on this for a while because of companies like Purism that are putting GNOME on other display sizes like phones or anyone who is using GNOME on other form factors. - -You don't notice some of the changes until you use them. There are lots of great features to see and that allow you to use GNOME in different ways. - -**JH: As a GNOME developer and user, what GNOME features do you find most useful in your daily work?** - -**EB:** I get a lot of use in the keyboard navigation. I use the keyboard all the time, so I live with my hands on the keyboard. When I use the mouse, I sometimes can get RSI (repetitive strain injury) by using it too much. Being able to use the keyboard for everything is great. - -The keyboard shortcuts are part of the GNOME Accessibility. It's also part of a design direction to be able to count on keyboard shortcuts for things. Keyboard accessibility is a core part of the design language; it's not a side feature that will be dropped someday. - -And having multiple windows on the screen and being able to tile them up, so I have two windows side by side. That, and multiple workspaces. I used to micromanage my workspaces back in the 1990s with different virtual desktops. But I'd always create more virtual desktops than I needed. But in GNOME, it's easy enough to create a new workspace if you need it, and when you don't need it, it's gone. - -**JH: We're already in the GNOME 3.37 development cycle, with GNOME 3.38 planned for September 2020. What are some new features showing up that will interest people?** - -**EB:** There are new changes all the time. One thing we're working on is the application grid and making that customizable. Right now, the applications are listed alphabetically, but you will be able to drag them around in any order you want. That will finish a massive change that's been in the works for five years or more. The goal is to be less automated and more user-driven. - -Another thing happening is the GNOME Shell; developers want to do some tests on the Overview layout. Right now, you have a dashboard on the left and one on the right and windows in the center. We're trying to remove the dashboard because it's not helpful. If you want to configure it, you can. This is kind of being driven by the mobile effort. On the desktop, you're in Landscape mode and you have a lot of room to put things on the screen. But on mobile, you're probably in Portrait mode, and you have less space. So we're experimenting with new layouts and new ways to display the content. Some of that will land in GNOME 3.38, but it's been a really long project, so we'll see. - -There are more features in GNOME Settings. A multi-tasking panel is planned in GNOME 3.38. Some of these settings exist already in the GNOME Tweaks app, and some of those will move from Tweaks into the main Settings app. Like being able to disable the hot corner—some people don't like that feature. Or letting you control the user interface when it comes to multiple screens—like if you want workspaces on multiple screens or just want workspaces on your main screen. Lots of these settings are not exposed right now unless you go into GNOME Tweaks, so we're moving those. - -And I should mention that there's lots of work by everyone in GNOME to make things faster, even for people running on more limited systems like the Raspberry Pi. There's been a lot of work to get GNOME to perform better. That's a lot of work that people have been focusing on, because people really care about it. - -* * * - -You can download and learn more about GNOME, including its underlying technologies, getting involved, and more on its [website][7]. If you're curious to learn what else is new in GNOME, check out the [GNOME 3.36 release notes][8]. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/7/new-gnome-features - -作者:[Jim Hall][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/jim-hall -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/gnome-3-opensourcecom-lead.png?itok=FCw4KaGT (Take a look at the latest from GNOME 3) -[2]: https://opensource.com/sites/default/files/uploads/gnome-do-not-disturb.png (GNOME "Do Not Disturb" feature) -[3]: https://creativecommons.org/licenses/by-sa/4.0/ -[4]: https://opensource.com/sites/default/files/uploads/gnome-settings-rhythmbox-notif.png (Notifications options in GNOME Settings) -[5]: https://opensource.com/sites/default/files/uploads/gnome-extensions.png (GNOME Extensions app) -[6]: https://opensource.com/sites/default/files/uploads/gnome-lock-screen.png (GNOME lock screen) -[7]: https://www.gnome.org/ -[8]: https://help.gnome.org/misc/release-notes/3.36/ diff --git a/sources/tech/20200729 Demonstrating Perl with Tic-Tac-Toe, Part 4.md b/sources/tech/20200729 Demonstrating Perl with Tic-Tac-Toe, Part 4.md deleted file mode 100644 index 4c7ca4782b..0000000000 --- a/sources/tech/20200729 Demonstrating Perl with Tic-Tac-Toe, Part 4.md +++ /dev/null @@ -1,144 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Demonstrating Perl with Tic-Tac-Toe, Part 4) -[#]: via: (https://fedoramagazine.org/demonstrating-perl-with-tic-tac-toe-part-4/) -[#]: author: (Gregory Bartholomew https://fedoramagazine.org/author/glb/) - -Demonstrating Perl with Tic-Tac-Toe, Part 4 -====== - -![][1] - -This is the final article to the series demonstrating Perl with Tic-Tac-Toe. This article provides a module that can compute better game moves than the previously presented modules. For fun, the modules _chip1.pm_ through _chip3.pm_ can be incrementally moved out of the _hal_ subdirectory in reverse order. With each chip that is removed, the game will become easier to play. The game must be restarted each time a chip is removed. - -### An example Perl program - -Copy and paste the below code into a plain text file and use the same one-liner that was provided in the [the first article][2] of this series to strip the leading numbers. Name the version without the line numbers _chip3.pm_ and move it into the _hal_ subdirectory. Use the version of the game that was provided in [the second article][3] so that the below chip will automatically load when placed in the _hal_ subdirectory. Be sure to also include both _chip1.pm_ and _chip2.pm_ from the second [and third][4] articles, respectively, in the _hal_ subdirectory. - -``` -00 # artificial intelligence chip -01 -02 package chip3; -03 require chip2; -04 require chip1; -05 -06 use strict; -07 use warnings; -08 -09 sub moverama { -10 my $game = shift; -11 my @nums = $game =~ /[1-9]/g; -12 my $rama = qr/[1973]/; -13 my %best; -14 -15 for (@nums) { -16 my $ra = $_; -17 next unless $ra =~ $rama; -18 $best{$ra} = 0; -19 for (@nums) { -20 my $ma = $_; -21 next unless $ma =~ $rama; -22 if (($ra-$ma)*(10-$ra-$ma)) { -23 $best{$ra} += 1; -24 } -25 } -26 } -27 -28 @nums = sort { $best{$b} <=> $best{$a} } keys %best; -29 -30 return $nums[0]; -31 } -32 -33 sub hal_move { -34 my $game = shift; -35 my $mark = shift; -36 my @mark = @{ shift; }; -37 my $move; -38 -39 $move = chip2::win_move $game, $mark, \@mark; -40 -41 if (not defined $move) { -42 $mark = ($mark eq $mark[0]) ? $mark[1] : $mark[0]; -43 $move = chip2::win_move $game, $mark, \@mark; -44 } -45 -46 if (not defined $move) { -47 $move = moverama $game; -48 } -49 -50 if (not defined $move) { -51 $move = chip1::hal_move $game; -52 } -53 -54 return $move; -55 } -56 -57 sub complain { -58 print 'Just what do you think you\'re doing, ', -59 ((getpwnam($ENV{'USER'}))[6]||$ENV{'USER'}) =~ s! .*!!r, "?\n"; -60 } -61 -62 sub import { -63 no strict; -64 no warnings; -65 -66 my $p = __PACKAGE__; -67 my $c = caller; -68 -69 *{ $c . '::hal_move' } = \&{ $p . '::hal_move' }; -70 *{ $c . '::complain' } = \&{ $p . '::complain' }; -71 -72 if (&::MARKS->[0] ne &::HAL9K) { -73 @{ &::MARKS } = reverse @{ &::MARKS }; -74 } -75 } -76 -77 1; -``` - -### How it works - -Rather than making a random move or making a move based on probability, this final module to the Perl Tic-Tac-Toe game uses a more [deterministic][5] algorithm to calculate the best move. - -The big takeaway from this Perl module is that it is yet another example of how references can be misused or abused, and as a consequence lead to unexpected program behavior. With the addition of this chip, the computer learns to cheat. Can you figure out how it is cheating? Hints: - - 1. Constants [are implemented as subroutines][6]. - 2. References allow data to be modified out of scope. - - - -### Final notes - -Line 12 demonstrates that a regular expression can be [pre-compiled][7] and stored in a scalar for later use. This is useful as performance optimization when you intend to re-use the same regular expression many times over. - -Line 59 demonstrates that [some system library calls][8] are available directly in Perl’s built-in core functionality. Using the built-in functions alleviates some overhead that would otherwise be required to launch an external program and setup the I/O channels to communicate with it. - -Lines 72 and 73 demonstrate the use of **&::** as [a shorthand for **&main::**][9]. - -The full source code for this Perl game can be cloned from the git repository available here: - --------------------------------------------------------------------------------- - -via: https://fedoramagazine.org/demonstrating-perl-with-tic-tac-toe-part-4/ - -作者:[Gregory Bartholomew][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://fedoramagazine.org/author/glb/ -[b]: https://github.com/lujun9972 -[1]: https://fedoramagazine.org/wp-content/uploads/2020/02/perl-tic-tac-toe-816x346.png -[2]: https://fedoramagazine.org/demonstrating-perl-with-tic-tac-toe-part-1/ -[3]: https://fedoramagazine.org/demonstrating-perl-with-tic-tac-toe-part-2/ -[4]: https://fedoramagazine.org/demonstrating-perl-with-tic-tac-toe-part-3/ -[5]: https://en.wikipedia.org/wiki/Deterministic_system -[6]: https://perldoc.perl.org/5.32.0/constant.html#TECHNICAL-NOTES -[7]: https://perldoc.perl.org/5.8.2/perlretut.html#Compiling-and-saving-regular-expressions -[8]: https://perldoc.perl.org/5.8.2/functions/getpwnam.html -[9]: https://perldoc.perl.org/perlmod.html#Packages diff --git a/sources/tech/20200729 How learning Linux introduced me to open source.md b/sources/tech/20200729 How learning Linux introduced me to open source.md deleted file mode 100644 index de43f960c0..0000000000 --- a/sources/tech/20200729 How learning Linux introduced me to open source.md +++ /dev/null @@ -1,78 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (How learning Linux introduced me to open source) -[#]: via: (https://opensource.com/article/20/7/open-source-learning) -[#]: author: (Manaswini Das https://opensource.com/users/manaswinidas) - -How learning Linux introduced me to open source -====== -An engineering student's open source internships and volunteer -contributions helped her land a full-time developer job. -![Woman sitting in front of her computer][1] - -When I entered the engineering program as a freshman in college, I felt like a frivolous teenager. In my sophomore year, and in a fortunate stroke of serendipity, I joined [Zairza][2], a technical society for like-minded students who collaborated and built projects separate from the academic curriculum. It was right up my alley. Zairza provided me a safe space to learn and grow and discover my interests. There are different facets and roadways to development, and as a newbie, I didn't know where my interests lay. - -I made the switch to Linux then because I heard it is good for development. Fortunately, I had Ubuntu on my system. At first, I found it obnoxious to use because I was used to Windows. But I slowly got the hang of it and fell in love with it over time. I started exploring development by trying to build apps using Android and creating data visualizations using Python. I built a Wikipedia Reader app using the [Wikipedia API][3], which I thoroughly enjoyed. I learned to use Git and put my projects on GitHub, which not only helped me showcase my projects but also enabled me to store them. - -I kept juggling between Ubuntu and other Linux distributions. My machine wasn't able to handle Android Studio since it consumed a lot of RAM. I finally made a switch to Fedora in 2016, and I have not looked back since. - -At the end of my sophomore year, I applied to [Rails Girls Summer of Code][4] with another member of Zairza, [Anisha Swain][5], where we contributed to [HospitalRun][6]. I didn't know much about the tech stack, but I tagged along with her. This experience introduced me to open source. As I learned more about it, I came to realize that open source is ubiquitous. The tools I had used for a long time, like Git, Linux, and even Fedora, were open source all the while. It was fascinating! - -I made my first contribution when I participated in [Hacktoberfest][7] 2017\. I started diving deep and contributing to projects on GitHub. Slowly, I began gaining confidence. All the communities were newcomer-friendly, and I no longer felt like a fish out of water. - -In November 2017, I began learning about other open source programs like [Google Summer of Code][8] and [Outreachy][9]. I discovered that Outreachy runs twice a year and decided to apply for the December to March cohort. It was late to apply, but I wanted to participate. I chose to contribute to [Ceph][10] and built some data visualizations using JavaScript. The mentors were helpful and amiable. I wasn't able to get through the project but, to be honest, I didn't think I tried hard enough. So, I decided to participate in the next cohort and contribute to projects that piqued my interest. - -I started looking for projects as soon as they were announced on the Outreachy website. I found a Django project under the [Open Humans Foundation][11] and started contributing. I wasn't familiar with Django, but I learned it on the go. I enjoyed every bit of it! I learned about [GraphQL][12], [Django][13], and APIs in general. Three months after I started making contributions, the project announced its new interns. To my utter surprise, I got through. I was overjoyed! I learned many new things throughout my internship, and my mentor, Mike Escalante, was very supportive and helpful. I would like to extend my heartfelt gratitude to the Open Humans Foundation for extending this opportunity to me. I also attended [PyCon India][14] in Hyderabad the same year. I had never attended a conference before; it felt great to meet other passionate Pythonistas, and I could feel the power of community. - -At the end of 2018, when I was edging closer to the end of my engineering program, I started preparing for interviews. That was a roller-coaster ride. I wasn't able to get past the second technical round in most of them. - -In the meantime, I participated in the [Processing Foundation's fellowship program][15], where I worked with two other fellows, [Nancy Chauhan][16] and Shaharyar Shamshi, on promoting software literacy and making Processing's tools accessible to the Indian community. I applied as a mentor to open source programs, including [GirlScript Summer of Code][17] (GSSoC). Despite being a first-timer mentor, I found it really rewarding. - -I also delivered [a talk][18] on my Outreachy project at [DjangoCon Europe][19] in April 2019. It was my first talk and also my first time alone abroad! I got a chance to interact and connect with the larger Django community, and I'm still in touch with the Djangonaut friends I made there. In July 2019, I started a [PyLadies chapter in Bhubaneswar][20], India, which held its first meetup the same month. - -I went on job interviews relentlessly. I felt despondent and useless at times, but I realized I was getting better at them. I learned about internship openings at Red Hat in June 2019. I applied, and after several rounds, I got one! I started interning with Red Hat at the end of July and started working full time in January 2020. - -It's been a year since I joined Red Hat, and not a single day has gone by without me learning something. In the last year, I have mentored in various open source programs, including [Google Code-In][21], GSSoC, [Red Hat Open Source Contest][22], and [Mentors Without Borders][23]. I have also discovered that I love to attend and speak at conferences. So far, I have spoken at conferences including PyCon, DjangoCon, and [Git Commit Show][24] and local meetups including Rails Girls Sekondi, PyLadies Bangalore, and Women Techmakers Bhubaneswar. - -This journey from a confused teenager to a confident learner has been fulfilling in every possible way. To any student reading this, I advise: never stop learning. Even in these unprecedented times, the world is still your oyster. Participating in open source internships and other programs is not a prerequisite to becoming a successful programmer. Everyone is unique. Open source programs help boost your confidence, but they are not a must-have. And, if you do participate, even if you don't complete anything, don't worry. Believe in yourself, and keep looking for new opportunities to learn. Keep feeding your curiosity—and don't forget to pat yourself on your back for your efforts. The tassel is going to be worth the hassle. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/7/open-source-learning - -作者:[Manaswini Das][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/manaswinidas -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/OSDC_women_computing_2.png?itok=JPlR5aCA (Woman sitting in front of her computer) -[2]: https://zairza.in/ -[3]: https://www.mediawiki.org/wiki/API:Main_page -[4]: https://railsgirlssummerofcode.org/ -[5]: https://github.com/Anisha1234 -[6]: https://hospitalrun.io/ -[7]: https://hacktoberfest.digitalocean.com/ -[8]: https://summerofcode.withgoogle.com/ -[9]: http://outreachy.org/ -[10]: https://ceph.io/ -[11]: http://openhumansfoundation.org/ -[12]: https://graphql.org/ -[13]: https://www.djangoproject.com/ -[14]: https://in.pycon.org/2018/ -[15]: https://medium.com/processing-foundation/meet-our-2019-fellows-9f13d4e4a68a -[16]: https://nancychauhan.in/ -[17]: https://www.gssoc.tech/ -[18]: https://www.youtube.com/watch?v=IJ3qMXBRUXo -[19]: https://2019.djangocon.eu/ -[20]: https://twitter.com/pyladiesbbsr -[21]: https://codein.withgoogle.com/archive/ -[22]: https://research.redhat.com/red-hat-open-source-contest/ -[23]: https://www.mentorswithoutborders.net/ -[24]: https://gitcommit.show/ diff --git a/sources/tech/20200729 How to Install Discord Application in Ubuntu and Other Linux Distributions -3 Methods.md b/sources/tech/20200729 How to Install Discord Application in Ubuntu and Other Linux Distributions -3 Methods.md deleted file mode 100644 index 5f02972a4e..0000000000 --- a/sources/tech/20200729 How to Install Discord Application in Ubuntu and Other Linux Distributions -3 Methods.md +++ /dev/null @@ -1,207 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (How to Install Discord Application in Ubuntu and Other Linux Distributions [3 Methods]) -[#]: via: (https://itsfoss.com/install-discord-linux/) -[#]: author: (Abhishek Prakash https://itsfoss.com/author/abhishek/) - -How to Install Discord Application in Ubuntu and Other Linux Distributions [3 Methods] -====== - -[Discord][1] is a popular messaging application. It was originally intended for gamers but these days, it is considered a [Slack alternative][2] even for team and community communication. You can use it for text, voice and video messaging. - -Several open source project use it for communicating with project members and users. - -Discord is available on various platforms including desktop Linux. In this tutorial, I’ll show you various ways of installing Discord on Ubuntu, Debian and other Linux distributions. - - * [Installing Discord via DEB file][3] (applicable to Debian, Ubuntu, Linux Mint and other Debian/Ubuntu based distributions) - * [Installing Discord via Snap or Flatpak][4] (applicable for distributions with Snap or Flatpak support) - * [Installing Discord in traditional way][5] (applicable for all distributions but need good knowledge of Linux commands) - - - -Non-FOSS alert! - -Discord application is not open source. But since they provide a Linux client and many Linux users rely on it, it’s been covered here. - -### Method 1: Installing Discord in Ubuntu and Debian-based Linux Distributions - -Go to the [download page of Discord][6] and download the deb file. Keep in mind that, Discord is only available for 64-bit systems. - -![Download Discord for Linux][7] - -[Installing deb file is easy][8]. Just double click on it to open it in the software manager and install it from there. You may also install and [use Gdebi tool][9] for this purpose. - -It will take a few seconds for installing and you should see a log in screen like this: - -![][10] - -The problem with this approach is that though you’ll have the latest Discord version, it won’t be updated to a newer version automatically in the future. - -You can either uninstall it from the software center or use this command in the terminal: - -``` -sudo apt remove discord -``` - -### Method 2: Installing Discord on Ubuntu and other Linux distributions using Snap package - -You can easily install Discord using Snap package in Ubuntu and various other Linux distributions with snap package support. - -The advantage is that you’ll always have the latest version of Discord and your installed version gets automatically updated. The downside is that Snap packages take longer to start. - -Ubuntu user can find [Discord snap package][11] in the Software Center and install from there: - -![Discord snap package is available in Ubuntu Software Center][12] - -If you have enabled Snap support on your Linux distribution, you can use the following command to install it: - -``` -sudo snap install discord -``` - -If you want to remove it, you can use the snap command to uninstall it: - -``` -sudo snap remove discord -``` - -Please note that [Discord is also available in Flatpak package format][13]. You can [use Flatpak][14] to install it in Fedora and other Linux distributions. - -### Method 3: Installing Discord in other Linux Distributions (intermediate to advanced level) - -Discord also provides a generic isntaller for using Discord on Linux. It comes in the traditional tar gz file. - -If you go for this way of installing Discord on Linux, then you should have at least a moderate [understanding of Linux directory structure][15] and Linux commands. You must also be comfortable using the terminal because this method involves using the terminal all the way. - -#### Step 1: Download Discord for Linux - -First [download the tar.gz file from Discord’s website][6]. - -I am using Discord version 0.0.10 in the tutorial. Your file name may or may not be different. Pay attention to it. - -#### Step 2: Extract the downloaded file to opt directory - -Go to directory where you have downloaded the file. Use the tar command to extract the .tar.gz file in the /opt directory. - -``` -sudo tar -xvzf discord-0.0.10.tar.gz -C /opt -``` - -Traditionally, the /opt directory is used for installing/keeping files of optional or additional Linux software. Since you opted for the traditional way, it only makes sense to use the traditional convention. - -#### Step 3: Create Discord command in bin directory - -Now you should have /opt/Discord directory with files related to Discord. You should have two important files to tackle here. A binary file named Discord and a desktop file named discord.desktop. - -Now, you should [create a symbolic link][16] to this binary file in /usr/bin directory. - -``` -sudo ln -sf /opt/Discord/Discord /usr/bin/Discord -``` - -The /usr/bin directory contains the binary executables for commands in your system. This way, any user can run the commands from anywhere in the system. - -#### Step 4: Create desktop icon and menu entry - -You have Discord available as a command for all users on the system. But you cannot find it in the system menu to launch it graphically. - -For that, you’ll have to use the discord.desktop file located in the extracted folder in the opt directory. - -You should pay attention to two lines here: Exec and Icon. - -The exec is for executable file and you can set it to /usr/bin/Discord . The Icon is for the image of Discord that will be displayed when you search for Discord in the menu. You can set it to the /opt/Discord/discord.png. This image is present in the extracted folder. - -You can [use nano editor][17] with sudo for editing this file or whichever [terminal-based text editor][18] you prefer. Your discord.desktop may look something like this: - -![][19] - -Your discord.desktop file is still in the /opt/Discord directory. You need to move it to /usr/share/applications directory so that your system can access this desktop entry. - -``` -sudo cp -r /opt/Discord/discord.desktop /usr/share/applications -``` - -Normally, you should see Discord added in the list of available applications in the menu immediately. If not, log out and log in again. - -#### Step 5: Run Discord - -You are done. Now if you search for Discord, you will find it in the menu and when you run it for the first time, it will do some configuration. - -![Running Discord for the first time][20] - -After that, it will bring you to the login screen. It automatically tried to log you in from your default browser. - -![][10] - -Enjoy Discord on Linux. If there is a new version of Discord in the future, you’ll have to remove the already installed version and then repeat the procedure with the new version. - -#### Removing Discord installed in the traditional way - -It would be unfair to just discuss how to install Discord. Let me give you some pointers about removing it as well. - -When you install Discord on Linux, it saves config file in .config/discord folder in your home directory. Delete these files: - -``` -rm -r ~/.config/discord -``` - -Next, remove the Discord directory from the /opt directory: - -``` -sudo rm -rf /usr/bin/Discord -``` - -Also delete the symbolic link you had created: - -``` -sudo rm /usr/bin/Discord -``` - -As the last step, remove the desktop file: - -``` -sudo rm /usr/share/applications/discord.desktop -``` - -**Did you manage to install Discord on Linux? Which method did you use?** - -I gave you various ways of installing Discord application on Linux. The traditional Linux way is somewhat complicated but at least this way you can install it on any Linux distribution. - -Did you manage to install it? Which method did you use and prefer? - --------------------------------------------------------------------------------- - -via: https://itsfoss.com/install-discord-linux/ - -作者:[Abhishek Prakash][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://itsfoss.com/author/abhishek/ -[b]: https://github.com/lujun9972 -[1]: https://discord.com/ -[2]: https://itsfoss.com/open-source-slack-alternative/ -[3]: tmp.ehA52f5sBZ#via-deb -[4]: tmp.ehA52f5sBZ#via-snap -[5]: tmp.ehA52f5sBZ#traditional-method -[6]: https://discord.com/new/download -[7]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/07/download-discord-linux.png?ssl=1 -[8]: https://itsfoss.com/install-deb-files-ubuntu/ -[9]: https://itsfoss.com/gdebi-default-ubuntu-software-center/ -[10]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/07/discord-login-screen.jpg?ssl=1 -[11]: https://snapcraft.io/discord -[12]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/07/install-discord-snap.jpg?ssl=1 -[13]: https://flathub.org/apps/details/com.discordapp.Discord -[14]: https://itsfoss.com/flatpak-guide/ -[15]: https://linuxhandbook.com/linux-directory-structure/ -[16]: https://linuxhandbook.com/symbolic-link-linux/ -[17]: https://itsfoss.com/nano-editor-guide/ -[18]: https://itsfoss.com/command-line-text-editors-linux/ -[19]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/07/installing-discord-in-linux-traditional-way.png?ssl=1 -[20]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/07/discord-install.jpg?ssl=1 diff --git a/sources/tech/20200731 Bring your Mycroft AI voice assistant skill to life with Python.md b/sources/tech/20200731 Bring your Mycroft AI voice assistant skill to life with Python.md deleted file mode 100644 index cf69759db8..0000000000 --- a/sources/tech/20200731 Bring your Mycroft AI voice assistant skill to life with Python.md +++ /dev/null @@ -1,273 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Bring your Mycroft AI voice assistant skill to life with Python) -[#]: via: (https://opensource.com/article/20/7/mycroft-voice-skill) -[#]: author: (Steve Ovens https://opensource.com/users/stratusss) - -Bring your Mycroft AI voice assistant skill to life with Python -====== -Put the final polishes on your Mycroft skill by managing dependencies, -debugging, collecting user-specific data, and getting everything into -your Python code. -![Hands on a keyboard with a Python book ][1] - -In the first two articles of this series on [Mycroft][2], an open source, privacy-focused digital voice assistant, I covered the [background behind voice assistants][3] and some of Mycroft's [core tenets][4]. In Part 3, I started [outlining the Python code][5] required to provide some basic functionality to a skill that adds items to [OurGroceries][6], a grocery list app. And in Part 4, I talked about the different types of [intent parsers][7] (and when to use each) and expanded the Python code so Mycroft could provide audible feedback while working through the skill. - -In this fifth article, I will walk through the remaining sections required to build this skill. I'll talk about project dependencies, logging output for debugging purposes, working with the Mycroft web UI for setting values (such as usernames and passwords), and how to get this information into your Python code. - -### Dealing with project dependencies - -There are generally three sources for project dependencies when writing a Mycroft skill: - - * Python packages from [PyPI][8] - * System-level packages pulled from a repository - * Other Mycroft skills - - - -There are a couple of ways to deal with dependencies in Mycroft. You can use "requirements" files, or you can use the `manifest.yml` file. - -Since most of the skills in the Mycroft store use requirement files, I will merely touch on the `manifest.yml` file. The `manifest.yml` file is pretty straightforward. There is a `dependencies:` section, and under this are three options: `python:`, `system:`, and `skill:`. Under each heading, you should specify the names of required dependencies. An example file could look like this: - - -``` -dependencies: -  # Pip dependencies on PyPI -   python: -    - requests -     - gensim - -   system: -    # For simple packages, this is all that is necessary -     all: pianobar piano-dev - -   # Require the installation of other skills before installing this skill -   skill: -    - my-other-skill -``` - -However, since the majority of skills use requirement files, I'll use that option for this project, so you can use it as an example for other skills you may wish to use or create. - -In Python, the `requirements.txt` file, which lists all the Python dependencies a project requires, is very common. This file is pretty simple; it can either be a list of packages or a list with specific versions. I will specify a minimal version with some code I submitted to the `ourgroceries` project. There are three options for this project's `requirements.txt`: - - * `ourgroceries==1.3.5`: Specifies that the package must be version 1.3.5 - * `ourgroceries>=1.3.5`: Specifies that the package must be version 1.3.5 or higher - * `ourgroceries`: Allows any version of the package - - - -My `requirements.txt` uses `ourgroceries>=1.3.5` to allow for future updates. Following this same logic, your `requirements.txt` could list different packages instead of specifying a single package. - -The entirety of my `requirements.txt` file is one line: - - -``` -`ourgroceries>=1.3.5` -``` - -You can also opt to use `requirements.sh`. This is a shell script that can be used to install packages, download modules from Git, or do any number of things. This file executes while installing a new skill. The [Zork skill][9] has an example of a `requirements.sh` script. However, while you can use this, if you want to submit your skill to the store, the `requirements.sh` will be scrutinized fairly heavily to mitigate security issues. - -### Debug your skill - -There are a couple of ways to debug your skill. You can use the Mycroft logger, or you can use standard Python debugging tools. Both methods are available in the Mycroft command-line interface (CLI), which is very handy for debugging. - -#### Use Mycroft logger - -To get started with the Mycroft logger, you just need to have the `MycroftSkill` imported because logger is part of the base class. This means that as long as you are working inside the class for your skill, logger is available. For example, the following code demonstrates how to create a very basic skill with a log entry: - - -``` -from mycroft import MycroftSkill - -class MyFakeSkill(MycroftSkill): -                def __init__(self): -                self.log.info("Skill starting up") - -def create_skill(): -                return MyFakeSkill() -``` - -Logger has all the log levels you might expect: - - * **debug:** Provides the highest level of detail but is _not_ logged by default - * **info:** Provides general information when a skill is running as expected; it is always logged - * **warning:** Indicates something is wrong, but it is not fatal - * **error:** Fatal problems; they are displayed in red in the CLI - * **exception:** Similar to errors except they include stack traces - - - -Along with showing in the CLI, logger writes to `skills.log`. The file's location varies depending on how you installed Mycroft. Common locations are `/var/log/mycroft/skills.log`, `~/snap/mycroft/common/logs/skills.log`, and `/var/opt/mycroft/skills.log`. - -There may be times when you want to use the Mycroft logger outside the instantiated class. For example, if you have some global functions defined outside the class, you can import `LOG` specifically: - - -``` -from mycroft import MycroftSkill -from mycroft.util import LOG - -def my_global_funct(): -                LOG.info("This is being logged outside the class") - -class MyFakeSkill(MycroftSkill): -                def __init__(self): -                self.log.info("Skill starting up") - -def create_skill(): -                return MyFakeSkill() -``` - -#### Use Python's debugging tools - -If you want something that stands out more, you can use the built-in Python `print()` statements to debug. I have found that there are occasions where the Mycroft logger is slow to produce output. Other times, I just want something that jumps out at me visually. In either case, I prefer using `print()` statements when I am debugging outside an IDE. - -Take the following code, for example: - - -``` -if category_name is None: -    self.log.info("---------------> Adding %s to %s" % (item_to_add, list_name)) -    print("-------------> Adding %s to %s" % (item_to_add, list_name)) -``` - -This produces the following output in the `mycroft-cli-client`: - - -``` -~~~~ings:104 | Skill settings successfully saved to /opt/mycroft/skills/fallback-wolfram-alpha.mycroftai/settings.json -~~~~1 | mycroft.skills.mycroft_skill.mycroft_skill:handle_settings_change:272 | Updating settings for skill AlarmSkill -~~~~save_settings:104 | Skill settings successfully saved to /opt/mycroft/skills/mycroft-alarm.mycroftai/settings.json - 10:50:38.528 | INFO     | 51831 | ConfigurationSkill | Remote configuration updated - 10:50:43.862 | INFO     | 51831 | OurGroceriesSkill | ---------------> Adding hot dogs to my shopping -\---------------> Adding hot dogs to my shopping -~~~~7.654 | INFO     | 51831 | mycroft.skills.skill_loader:reload:108 | ATTEMPTING TO RELOAD SKILL: ourgroceries-skill -~~~~831 | mycroft.skills.skill_loader:_execute_instance_shutdown:146 | Skill ourgroceries-skill shut down successfully -``` - -I find that, as the text scrolls, it is much easier to visually identify a print statement that does not have the uniform header of the other messages. This is a personal preference and not meant as any sort of recommendation for programming best practices. - -### Get input from users - -Now that you know how to see output from your skill, it's time to get some environment-specific information from your users. In many cases, your skill will need some user information to function properly. Most of the time, this is a username and password. Often, this information is required for the skill to initialize properly. - -#### Get user input with internet-connected Mycroft - -If your Mycroft device has a connection to the internet, you can use Mycroft's web UI to enter user information. Log into and navigate to the [skills][10] section. Once you have configured your skill correctly, you will see something like this: - -![Mycroft Web UI][11] - -Here, you can discover which devices have your skill installed. In my case, there are two devices: `Arch Pi4` and `Asus`. There are also input text boxes to get information from the user. - -This interface is created automatically if you have configured Mycroft's Settings file. You have two choices for file types: you can create a `settingsmeta.yaml` or a `settingsmeta.json`. I prefer the YAML syntax, so that is what I used for this project. Here is my `settingsmeta.yaml` for this skill: - - -``` -skillMetadata: -  sections: -  - name: OurGroceries Account -    fields: -    - type: label -      label: "Provide your OurGroceries username/password and then Connect with the button below." -    - name: user_name -      type: text -      label: username -      value: '' -    - name: password -      type: password -      label: Ourgroceries password -      value: '' -    - name: default_list -      type: text -      label: Default Shopping List -      value: '' -``` - -The structure of this file is pretty easy to understand. Each file must start with a `skillsMetadata` heading. Next, there is a `sections` heading. Every new section is denoted by `- name:`, which is YAML syntax for an item on a list. Above, there is only a single section called `OurGroceries Account`, but you can have as many sections as you want. - -Fields are used to both convey and store information. A field can be as simple as a label, which can provide an instruction to the user. More interesting for this skill, however, are the `text` and `password` fields. Text fields allow the user to view what they are typing and are displayed in plain text. This is suitable for non-sensitive information. Password fields are not specific to passwords but are intended to hide sensitive information. After the users enter their information and click the `save` button, Mycroft replaces the `settings.json` file created the first time the skill initializes. The new file contains the values the user input in the web UI. The skill will also use this file to look up credentials and other information. If you are having problems using the correct values in your skill, take a look at the `settings.json` file for proper naming of variables and whether or not values are being stored in the JSON file. - -#### Get user input with offline Mycroft - -As you may have surmised, without internet connectivity, it is more difficult to receive information from end users. There are only a few options. First, you could write your skill such that, on the first run, it prompts the user for the information your skill requires. You could then write this out to `settings.json` if you wish to use the built-in settings parser, or you could write this to a file of your choice and your skill could handle the parsing. Be aware that if you write to `settings.json`, there is a chance that this file could be overwritten if Mycroft re-initializes your skill. - -Another method is having static values in a `settings.json` or another file that is stored with the project. This has some obvious security implications, but if your repository is secure, this is a viable option. - -The third and final option is to enable the user to edit the file directly. This could be done through Network File System (NFS) or [Samba][12] file sharing protocols, or you could simply grant the appropriate permissions to a secure shell (SSH) user who could use any Unix editor to make changes. - -Since this project requires access to the internet, I will not explore these options. If you have questions, you can always engage the community on [Mattermost][13]. - -### Access settings from your skill - -Provided that the other parts in the chain are working (i.e., the users updated their settings via the web UI, and Mycroft updated `settings.json` based on those settings), using user-provided settings is easy to understand. - -As I mentioned in the [third article][5] (where I discussed the `__init__` and `initialize` methods), it is impossible to retrieve values from `settings.json` with the `__init__(self)` method. Therefore, you must use another method to handle the settings. In my case, I created an appropriately named `_create_initial_grocery_connection` method: - - -``` -def _create_initial_grocery_connection(self): -    """ -    This gets the username/password from the config file and gets the session cookie -    for any interactions -    :return: None -    """ -    self.username = self.settings.get('user_name') -    self.password = self.settings.get('password') -    self.ourgroceries_object = OurGroceries(self.username, self.password) -    asyncio.run(self.ourgroceries_object.login()) -``` - -As you can see, you can extract information from `settings.json` by using `self.settings.get()`. The only thing to note is that the value you pass in _must_ match the name in `settingsmeta.yaml`. In this case, because I am not using the username or password outside this method, I could have opted to not make these variables part of the class scope (i.e., I could have called them `password` instead of `self.password`). This is because I am setting the `ourgroceries_object` to the class scope, and it contains all the information required for the rest of the skill to function. - -### Wrapping up - -Voice assistants are expanding into a multi-million (if not -billion) dollar business and some analysts think a majority of homes in the next few years will have one (or more). With Apple, Google, Facebook, and others frequently in the news for privacy violations, not to mention the constant stream of data breaches reported, it is important to have an open source, privacy-focused alternative to the big players. Mycroft puts your privacy first, and its small but dedicated team of contributors is making inroads into the most common scenarios for voice assistants. - -This series dove into the nitty-gritty of skill development, talking about the importance of thinking things through before you start and having a good outline. Knowing where you are going in the big picture helps you organize your code. Breaking the tasks down into individual pieces is also a key part of your strategy. Sometimes, it's a good idea to write bits or significant chunks outside the Mycroft skill environment to ensure that your code will work as expected. This is not necessary but can be a great starting point for people who are new to skill development. - -The series also explored intent parsers and how to understand when to use each one. The [Padatious][14] and [Adapt][15] parsers each have strengths and weaknesses. - - * Padatious intents rely on phrases and entities within those phrases to understand what the user is attempting to accomplish, and they are often the default used for Mycroft skills. - * On the other hand, Adapt uses regular expressions to accomplish similar goals. When you need Mycroft to be context-aware, Adapt is the only way to go. It is also extremely good at parsing complex utterances. However, you need to take great care when using regular expressions, or you will end up with unexpected results. - - - -I also covered the basics of dealing with a project. It's an important step in complex skill development to ensure that a skill has all the proper dependencies to work. Ensuring maximum portability is paramount for a skill, and dependency resolution is a key part of that, as your skill may not work properly with unsatisfied dependencies. - -Finally, I explained how to get skill-specific settings from users, whether the device is internet-connected or not. Which method you choose really depends on your use case. - -While it was not my aim to provide an encyclopedia of Mycroft skill development, by working through this series, you should have a very solid foundation for developing most skills you want to create. I hope the concrete examples in this series will show you how to handle the majority of tasks you may want to accomplish during skill development. I didn't go line-by-line through the whole skill but the code is hosted on [GitLab][16] if you'd like to explore it further. Comments and questions are always welcome. I am very much still learning and growing as a fledgling Mycroft developer, so hit me up on [Twitter][17] or the [Mycroft Mattermost][18] instance, and let's learn together! - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/7/mycroft-voice-skill - -作者:[Steve Ovens][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/stratusss -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/python-programming-code-keyboard.png?itok=fxiSpmnd (Hands on a keyboard with a Python book ) -[2]: https://mycroft.ai/ -[3]: https://opensource.com/article/20/6/open-source-voice-assistant -[4]: https://opensource.com/article/20/6/mycroft -[5]: https://opensource.com/article/20/6/mycroft-voice-assistant-skill -[6]: https://www.ourgroceries.com/overview -[7]: https://opensource.com/article/20/6/mycroft-intent-parsers -[8]: https://pypi.org/ -[9]: https://github.com/forslund/white-house-adventure/blob/6eba5df187bc8a7735b05e93a28a6390b8c6f40c/requirements.sh -[10]: https://home.mycroft.ai/skills -[11]: https://opensource.com/sites/default/files/mycroft_skills_webui.png (Mycroft Web UI) -[12]: https://www.samba.org/ -[13]: https://chat.mycroft.ai/community/channels/skills -[14]: https://mycroft-ai.gitbook.io/docs/skill-development/user-interaction/intents/padatious-intents -[15]: https://mycroft-ai.gitbook.io/docs/skill-development/user-interaction/intents/adapt-intents -[16]: https://gitlab.com/stratus-ss/mycroft-ourgroceries-skill -[17]: https://twitter.com/linuxovens -[18]: https://chat.mycroft.ai/community/channels/town-square diff --git a/sources/tech/20200731 Real-time noise suppression for video conferencing.md b/sources/tech/20200731 Real-time noise suppression for video conferencing.md deleted file mode 100644 index baffbd0e31..0000000000 --- a/sources/tech/20200731 Real-time noise suppression for video conferencing.md +++ /dev/null @@ -1,198 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Real-time noise suppression for video conferencing) -[#]: via: (https://fedoramagazine.org/real-time-noise-suppression-for-video-conferencing/) -[#]: author: (lkiesow https://fedoramagazine.org/author/lkiesow/) - -Real-time noise suppression for video conferencing -====== - -![][1] - -With people doing video conferencing all day, good audio has recently become much more important. The best option is obviously a proper audio studio. Unfortunately, this is not something you will always have and you might need to make do with a much simpler setup. - -In such situations, a noise reduction filter that keeps your voice but filters out ambient noises (street noise, keyboard, …) can be very helpful. In this article, we will take a look at how to integrate such a filter into PulseAudio so that it can easily be used in all applications with no additional requirements on their part. - -Example of switching on noise reduction - -### The Idea - -We set up [PulseAudio][2] for live noise-reduction using [an LADSPA filter][3]. - -This creates a new PulseAudio source which can be used as a virtual microphone. Other applications will not even realize that they are not dealing with physical devices and you can select it as if you had an additional microphone connected. - -### Terminology - -Before we start, it is good to know the following two PulseAudio terms to better understand what we are doing: - - * _source_ – represents a source from which audio can be obtained. Like a microphone - * _sink_ – represents a consumer of audio like a speaker - - - -Each PulseAudio sink also has a source called monitor which can be used to get the audio put into that sink. For example, you could have audio put out by your headphones while using the monitor of your headphone device to record the output. - -### Installation - -While PulseAudio is usually pre-installed, we need to get the LADSPA filter for noise reduction. You can [build and install the filter manually][3], but it is much easier to install the filter via Fedora Copr: - -``` -sudo dnf copr enable -y lkiesow/noise-suppression-for-voice -sudo dnf install -y ladspa-realtime-noise-suppression-plugin -``` - -Note that the Copr projects are not maintained and quality-controlled by Fedora directly. - -### Enable Noise Reduction Filter - -First, you need to identify the name of the device you want to apply the noise reduction to. In this example, we’ll use the RODE NT-USB microphone as input. - -``` -$ pactl list sources short -0 alsa_input.usb-RODE_Microphones_RODE_NT-USB-00.iec958-stereo … -1 alsa_output.usb-0c76_USB_Headphone_Set-00.analog-stereo.monitor … -``` - -Next, we create a new PulseAudio sink, the filter and a loopback between microphone and filter. That way, the output from the microphone is used as input for the noise reduction filter. The output from this filter will then be available via the null sink monitor. - -To visualize this, here is the path the audio will travel from the microphone to, for example, a browser: - -``` -mic → loopback → ladspa filter → null sink [monitor] → browser -``` - -While this sounds complicated, it is set up with just a few simple commands: - -``` -pacmd load-module module-null-sink \ - sink_name=mic_denoised_out -pacmd load-module module-ladspa-sink \ - sink_name=mic_raw_in \ - sink_master=mic_denoised_out \ - label=noise_suppressor_stereo \ - plugin=librnnoise_ladspa \ - control=50 -pacmd load-module module-loopback \ - source=alsa_input.usb-RODE_Microphones_RODE_NT-USB-00.iec958-stereo \ - sink=mic_raw_in \ - channels=2 -``` - -That’s it. You should now be able to select the new device. - -![New recording devices in pavucontrol][4] - -### Chromium - -Unfortunately, browsers based on Chromium will hide monitor devices by default. This means, that we cannot select the newly created noise-reduction device in the browser. One workaround is to select another device first, then use pavucontrol to assign the noise-reduction device afterward. - -But if you do this on a regular basis, you can work around the issue by using the _remap-source_ module to convert the null sink monitor to a regular PulseAudio source. The module is actually meant for remapping audio channels – e.g. swapping left and right channel on stereo audio – but we can just ignore these additional capabilities and create a new source similar to the monitor: - -``` -pacmd load-module module-remap-source \ - source_name=denoised \ - master=mic_denoised_out.monitor \ - channels=2 -``` - -The remapped device delivers audio identical to the original one so that assigning this with PulseAudio will yield no difference. But this device does now show up in Chromium: - -![Remapped monitor device in Chrome][5] - -### Improvements - -While the guide above should help you with all the basics and will get you a working setup, there are a few things you can improve. - -But while the commands above should generally work, you might need to experiment with the following suggestions. - -#### Latency - -By default, the loopback module will introduce a slight audio latency. You can hear this by running an echo test: - -``` -gst-launch-1.0 pulsesrc ! pulsesink -``` - -You might be able to reduce this latency by using the _latency_msec_ option when loading the _loopback_ module: - -``` -pacmd load-module module-loopback \ - latency_msec=1 \ - source=alsa_input.usb-RODE_Microphones_RODE_NT- USB-00.iec958-stereo \ - sink=mic_raw_in \ - channels=2 -``` - -#### Voice Threshold - -The noise reduction library provides controls for a voice threshold. The filter will return silence if the probability for sound being voice is lower than this threshold. In other words, the higher you set this value, the more aggressive the filter becomes. - -You can pass different thresholds to the filter by supplying them as control argument when the _ladspa-sink_ module is being loaded. - -``` -pacmd load-module module-ladspa-sink \ - sink_name=mic_raw_in \ - sink_master=mic_denoised_out \ - label=noise_suppressor_stereo \ - plugin=librnnoise_ladspa \ - control=95 -``` - -#### Mono vs Stereo - -The example above will work with stereo audio. When working with a simple microphone, you may want to use a mono signal instead. - -For switching to mono, use the following values instead when loading the different modules: - - * _label=noise_suppressor_mono_ – when loading the _ladspa-sink_ module - * _channels=1_ – when loading the _loopback_ and remap-source modules - - - -#### Persistence - -Using the _pacmd_ command for the setup, settings are not persistent and will disappear if PulseAudio is restarted. You can add these commands to your PulseAudio configuration file if you want them to be persistent. For that, edit _~/.config/pulse/default.pa_ and add your commands like this: - -``` -.include /etc/pulse/default.pa - -load-module module-null-sink sink_name=mic_denoised_out -load-module module-ladspa-sink … -… -``` - -### Limitations - -If you listen to the example above, you will notice that the filter reliably reduces background noise. But unfortunately, depending on the situation, it can also cause a loss in voice quality. - -The following example shows the results with some street noise. Activating the filter reliably removes the noise, but in this example, the voice quality noticeably drops as well: - -Noise reduction of constant street noise - -As a conclusion, we can say that this can help if you find yourself in less than ideal audio scenarios. It is also very effective if you are not the main speaker in a video conference and you do not want to constantly mute yourself. - -Still, good audio equipment and a quiet environment will always be better. - -Have fun. - --------------------------------------------------------------------------------- - -via: https://fedoramagazine.org/real-time-noise-suppression-for-video-conferencing/ - -作者:[lkiesow][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://fedoramagazine.org/author/lkiesow/ -[b]: https://github.com/lujun9972 -[1]: https://fedoramagazine.org/wp-content/uploads/2020/07/noise-reduction-816x345.png -[2]: https://freedesktop.org/wiki/Software/PulseAudio/ -[3]: https://github.com/werman/noise-suppression-for-voice -[4]: https://fedoramagazine.org/wp-content/uploads/2020/07/pavucontrol-white-1024x379.png -[5]: https://fedoramagazine.org/wp-content/uploads/2020/07/chrome-1024x243.png diff --git a/sources/tech/20200804 An open source solution for continuous testing at scale.md b/sources/tech/20200804 An open source solution for continuous testing at scale.md deleted file mode 100644 index f3bd92215b..0000000000 --- a/sources/tech/20200804 An open source solution for continuous testing at scale.md +++ /dev/null @@ -1,104 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (An open source solution for continuous testing at scale) -[#]: via: (https://opensource.com/article/20/8/cerberus-test-automation) -[#]: author: (Antoine Craske https://opensource.com/users/acraske) - -An open source solution for continuous testing at scale -====== -Cerberus focuses on testing usability, scalability, and integration. -![Coding on a computer][1] - -In Sogeti's most recent [World Quality Report][2], software testing ranked No. 1 in terms of its contributions to business objectives and growth, making it a key enabler for business digitalization. Despite this, the software testing industry still reports major pain points related to test maintenance, automation, tooling, and skills. Most of the tooling in common use lacks capabilities, is too complex to integrate, provides insufficient intelligence, or is too difficult to use. - -[Cerberus Testing][3] provides a solution to these problems. It is a test automation solution built by retail companies to support digitalization initiatives and focuses on usability, scalability, and integration of the test lifecycle process. - -![Cerberus supports test lifecycle to accelerate feedback loops][4] - -(Cerberus, [CC BY-SA 4.0][5]) - -### What is Cerberus? - -Our IT team at La Redoute, a French clothing fashion retailer, began writing the first lines of code of what would become Cerberus in 2010. Our objectives were to automate manual non-regression tests for existing web applications to accelerate and increase the quality of software delivery. We also wanted our in-house solution to enable iterations through test management, execution, and reporting in minutes, rather than weeks. - -Cerberus is based on a Selenium web driver and a three-tier traditional architecture with a Java technology stack. A key requirement for development was to limit code to support usability, reuse, and keeping tests simple. - -At the time we developed Cerberus, most solutions were commercial and designed to address specific silos such as test repositories, execution, or analytics. Cerberus combines the three test silos and enables web, API, and database testing. This is why we chose the name Cerberus, after the [three-headed dog that guards Hades][6] in Greek mythology. - -### Releasing Cerberus as open source - -The first version automated functional testing for an internal customer-relationship management (CRM) solution, and once it was shown to successfully detect dangerous release defects, we considered it to be a product. - -Next, we began using Cerberus to test La Redoute's e-commerce platform. As we shared our experience with the industry, we learned our peers were still struggling with test automation. So, in 2013, knowing the value of open source software for product innovation and development, we released Cerberus on [SourceForge][7] and [GitHub][8] under a GNU General Public License to encourage our community to share code and ideas. As with all open source projects, we make a continuous effort to ensure code quality, documentation, and transparency. - -![Cerberus GitHub repository][9] - -(Antoine Craske, [CC BY-SA 4.0][5]) - -During this period, [digital transformation][10] was escalating, making it essential for Cerberus to enable full regression test automation and monitoring. We focused on improving flexibility in test management, execution scalability, and traceability to meet those objectives. Adding end-to-end tests alongside functional tests was key. It enabled us to accelerate the software delivery cycle by more than 10x in certain cases. We published a [case study][11] about our 96% success in daily deployments and more than 6,000 automated tests in a year. - -### Growing interest - -Other French retailers, including Decathlon, Norauto, Leroy Merlin, and Midas, became interested in Cerberus. The emerging community of testers then shared it with other organizations that used the solution to accelerate their digital transformation, primarily for e-commerce and backoffice transformations. - -![Cerberus integrations][12] - -(Cerberus, [CC BY-SA 4.0][5]) - -We added standard integrations to Cerberus to increase its usability. A [Jenkins][13] plugin was a key addition to facilitate deployment of CI/CD pipelines with test automation and feedback. Adding support for REST APIs, advanced scheduling, retries, and screenshots enabled Cerberus to further accelerate testing-cycle time. For example, French retailer Leroy Merlin uses Cerberus for [mobile testing at scale][14]. - -### Support for continuous testing - -With recent and ongoing updates, organizations can leverage Cerberus' features from development to operations. It expands digital experience test coverage by executing tests on a variety of browsers, devices, and apps. Its native connectors for APIs (including SOAP and REST), desktop applications, and [Apache Kafka][15] enable testing legacy apps, APIs, event-driven microservices, streaming services, business intelligence, data science applications, and other use cases. - -During the software development lifecycle, Cerberus supports fast iterations in test management, execution, and reporting. Users can create test specifications in plain English, compose tests using a library, execute in parallel on various devices, and do advanced reporting. Native integration with CI/CD solutions, such as Jenkins, Bitbucket, and others, combined with one-click ticket creation in Jira and other tools, makes bug resolution faster and easier. - -![Cerberus use cases][16] - -(Cerberus, [CC BY-SA 4.0][5]) - -Cerberus can also monitor customer experience and business operations. Tests can be functional and technical, allowing organizations to test complex scenarios. For example, France's leading TV channel, TF1, uses it for quality assurance on its streaming platform. - -Capabilities such as advanced scheduling, alerting, notifications, and web-performance and analytics dashboards make it easier to discover issues and identify bottlenecks with third-party integrations or customer experience problems. - -### Next steps - -We are focusing now on engaging and growing the Cerberus community to accelerate the product's development and adoption. We hold community meetings every two weeks to align the product roadmap and improvements and to balance our product vision with community needs. Improving integrations and usability is vital to producing a successful product experience. - -If you would like to try Cerberus or contribute to the community, please visit our [Cerberus Testing page][8] on GitHub. You can also find us on [LinkedIn][17], [Twitter][18], and [YouTube][19]. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/8/cerberus-test-automation - -作者:[Antoine Craske][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/acraske -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/code_computer_laptop_hack_work.png?itok=aSpcWkcl (Coding on a computer) -[2]: https://www.sogeti.se/utforska/rapporter/world-quality-report-2019-2020/ -[3]: https://cerberus-testing.org/ -[4]: https://opensource.com/sites/default/files/uploads/cerberus_test-lifecycle_0.png (Cerberus supports test lifecycle to accelerate feedback loops) -[5]: https://creativecommons.org/licenses/by-sa/4.0/ -[6]: https://en.wikipedia.org/wiki/Cerberus -[7]: https://sourceforge.net/projects/cerberus-source/files/cerberus-testing-4.4/ -[8]: https://github.com/cerberustesting/cerberus-source -[9]: https://opensource.com/sites/default/files/uploads/cerberus_github.png (Cerberus GitHub repository) -[10]: https://enterprisersproject.com/what-is-digital-transformation -[11]: https://laredoute.io/blog/96-successful-daily-web-production-deploy/ -[12]: https://opensource.com/sites/default/files/uploads/cerberus_integrations.png (Cerberus integrations) -[13]: https://www.jenkins.io/ -[14]: https://medium.com/leroymerlin-tech-digital/on-a-construit-une-plateforme-de-test-mobile-b44e2c785c7f -[15]: https://kafka.apache.org/ -[16]: https://opensource.com/sites/default/files/uploads/cerberus_use-cases.png (Cerberus use cases) -[17]: https://www.linkedin.com/company/cerberus-testing/ -[18]: https://twitter.com/cerberustesting -[19]: https://www.youtube.com/channel/UCkG4csTjR0V5gl77BHhldBQ diff --git a/sources/tech/20200805 Matthew Arnold- Why I switched to Fedora.md b/sources/tech/20200805 Matthew Arnold- Why I switched to Fedora.md deleted file mode 100644 index 3386618fdf..0000000000 --- a/sources/tech/20200805 Matthew Arnold- Why I switched to Fedora.md +++ /dev/null @@ -1,100 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Matthew Arnold: Why I switched to Fedora) -[#]: via: (https://fedoramagazine.org/matthew-arnold-why-i-switched-to-fedora/) -[#]: author: (Matthew Arnold https://fedoramagazine.org/author/marnold512/) - -Matthew Arnold: Why I switched to Fedora -====== - -![][1] - -To a veteran user of other distributions, Fedora can be a challenge. Many things are not where you expect them to be. The default LVM volume allocations are a bit tricky. And packages including the kernel are frequently upgraded. So why switch after years of using other distributions? - -In my case, for a variety of technical and political reasons, Fedora was the best option if I wanted to continue using Linux as my daily driver. If you are making the transition from another distribution, here are some observations and tips to get you started. - -### Firm foundations - -In Fedora you will find a community just as fiercely dedicated to its users and free software as Debian, as fanatical about polish and design as anyone in Ubuntu, and as passionate about learning and discovery as users of Arch or Slackware. Flowing under it all you will find a welcoming community dedicated to technical excellence. The form may change, but underneath all the trappings of _systemd_, _dnf_, _rpm_, and other differences, you will find a thriving healthy and growing community of people who have gathered together to make something awesome. Welcome to Fedora, and I hope you stay awhile. - -The best way to get to know the Fedora community is to explore it for yourself. I hope a future article will highlight some of the more interesting aspects of Fedora for newcomers. Below are a few tips that I have put together to help you find your way around a new Fedora installation. - -### Install and explore - -Installation proceeds as you would expect but be aware that you might want to adjust the LVM volume allocations in the install process or shortly afterwards or you might run low on space in a key place unexpectedly! Btrfs is also a supported option that is worth a look if you have lots of small disks. - -### Freedom matters - -As stated above Fedora has a software freedom commitment similar in spirit to that of Debian. This means that you should be able to give Fedora to anyone, anywhere without violating intellectual property laws. Any software which is either not licensed in a way that Fedora [finds acceptable][2] or that bares US patent encumbrances can be found in the rpmfusion.org repository. - -After the install your next concern is undoubtedly configuring things and installing new packages. Fedora’s command-line package manager is _dnf_. It works as you would expect. - -Note also that since _rpm_ uses file-based dependency tracking instead of package-based dependency tracking, as almost all others do, there are very few traditional metapackages. There are, however, package groups. To get a list of package groups, the command is: - -``` -$ dnf group list -``` - -To get a list of all installed packages on the system, the command is: - -``` -$ rpm -qa -``` - -All _rpm_ commands are easily filterable using traditional Unix tools. So you should have no trouble adapting your workflow to the new environment. All the information gathered with the below commands can also be gathered through the _dnf_ command. For information gathering, I prefer to use the _rpm_ command because it presents information in a way that is easily parseable by commands like _grep_. But if you are making changes to the system, it is easier and safer to use _dnf_. - -To get a package’s version, description, and other metainformation the command is: - -``` -$ rpm -qi -``` - -To list the contents of an installed package the command is: - -``` -$ rpm -ql -``` - -One way in which _rpm_ is easier to use then _dpkg_ or the slack package tools is that _rpm_ stores change log information for each package in the package manager database itself so it is very easy to diagnose whether an update might have broken or changed something unexpectedly. This command is: - -``` -$ rpm -q --changes -``` - -### On the kernel - -Perhaps one of the most exciting differences between Fedora and other projects, for newcomers at least, is Fedora’s policy on the kernel. Fedora’s policy is to align the distribution’s kernel package life cycle with the upstream mainline kernel life cycle. This means that every Fedora release will have multiple major kernel versions during its lifetime. - -This offers several advantages for both users and developers. Primarily, Fedora users are among the first to receive all of the latest drivers, security fixes, new features, etc. - -If you do not have an installation that uses out-of-tree modules or custom patches this should not be much of concern to you. However, if you rely on a kernel module like _zfs_, for example. Rebuilding the filesystem module every 2-3 months can get tedious and error prone after a while. This problem only compounds if you depend upon custom patches for your system to work correctly. There is good news and bad news on this issue. - -The good news is that Fedora’s process for [building a custom kernel is well documented][3] - -The bad news is, as with all things kernel related in all projects, going the custom route means you’re on your own in terms of support. The 2-3 month lifecycle means you’ll be building modules and kernels far more often then you are used to. This may be a deal breaker for some. But even this offers an advantage to the discerning or adventuress user. You will find that being encouraged to rebase your custom kernel setup every two to three months will give you far greater insight into what is going on upstream in mainline Linux and the various out of tree projects you rely on. - -### Conclusion - -Hopefully these tips will get you started exploring and configuring your new Fedora system. Once you have done that. I urge you to explore the community. Like any other free software product of Fedora’s age and size, there are a plethora of communication channels available. You should read the [code of conduct][4] and then head over to the [communication page on the wiki][5] to get started. As with the distribution itself, for all the differences in culture you will find that much remains the same. - --------------------------------------------------------------------------------- - -via: https://fedoramagazine.org/matthew-arnold-why-i-switched-to-fedora/ - -作者:[Matthew Arnold][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://fedoramagazine.org/author/marnold512/ -[b]: https://github.com/lujun9972 -[1]: https://fedoramagazine.org/wp-content/uploads/2020/07/fedora-switch-816x345.jpg -[2]: https://fedoraproject.org/wiki/Licensing:Main -[3]: https://fedoraproject.org/wiki/Building_a_custom_kernel -[4]: https://docs.fedoraproject.org/en-US/project/code-of-conduct/ -[5]: https://fedoraproject.org/wiki/Communicating_and_getting_help diff --git a/sources/tech/20200806 5 reasons to run Kubernetes on your Raspberry Pi homelab.md b/sources/tech/20200806 5 reasons to run Kubernetes on your Raspberry Pi homelab.md deleted file mode 100644 index e45973855f..0000000000 --- a/sources/tech/20200806 5 reasons to run Kubernetes on your Raspberry Pi homelab.md +++ /dev/null @@ -1,92 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (5 reasons to run Kubernetes on your Raspberry Pi homelab) -[#]: via: (https://opensource.com/article/20/8/kubernetes-raspberry-pi) -[#]: author: (Seth Kenlon https://opensource.com/users/seth) - -5 reasons to run Kubernetes on your Raspberry Pi homelab -====== -A new free eBook offers step-by-step instructions for creating a private -cloud at home, including what you can do with it when you're done. -![Ship captain sailing the Kubernetes seas][1] - -There's a saying about the cloud, and it goes something like this: _The cloud is just somebody else's computer._ While the cloud is actually more complex than that (it's _a lot_ of computers), there's a lot of truth to the sentiment. When you move to the cloud, you're moving data and services and computing power to an entity you don't own or fully control. On the one hand, this frees you from having to perform administrative tasks you don't want to do, but, on the other hand, it could mean you no longer control your own computer. - -This is why the open source world likes to talk about an [_open hybrid cloud_][2], a model that allows you to choose your own infrastructure, select your own OS, and orchestrate your workloads as you see fit. However, if you don't happen to have an open hybrid cloud available to you, you can create your own—either to help you learn how the cloud works or to serve your local network. - -Building your own cloud requires at least three Raspberry Pi units, an Arm Linux distribution to serve as an OS, and Kubernetes to help you manage the containers your cloud will run. Chris Collins explains every step you need to take to make this happen in our new [eBook][3]. If you've ever built an array of distributed computing nodes, you'll probably be surprised at how simple it is. Sooner than you expect, you'll reach the end of the installation, and you'll inevitably be faced with this question: - -Now what? - -What's the real-world application of a private cloud running on tiny computers in your office? What do you need Kubernetes for, anyway? I used to ask myself the same questions, and I've come up with enough answers to justify a minor investment in a spare Raspberry Pi or two and the time it takes to follow the instructions in Chris' eBook. Here are some ideas for you. - -### Network-attached storage for your home - -If you're a hobbyist just looking to try out the latest tech, one of the easiest entry points is improving your network. Since the Raspberry Pi was released, I've never been without a home server—even during the times my home was just a rented room in the suburbs. My home networks weren't always very complicated, but they ran a few services that I enjoyed having available, so it suited me. - -By following along with Chris' eBook, I've recently added Kubernetes and a few nodes to my network, which give me the ability to add any number of services. I've finally got Network Filesystem (NFS) running, so my partner and I have an easy backup plan and can access shared files as if they existed locally on any computer we're using. I'm also running the open source [Kodi media server][4], so we can watch movies, listen to music, and view photos (all stored on the NFS share) anywhere in the house. A [Nextcloud][5] installation makes collaboration easy, and it also helps us keep in touch with family members in other countries without resorting to the likes of Facebook. - -In short, Kubernetes and the many container images available for easy installs have transformed my local network into my own personal internet or supercomputer. It doesn't provide all services for all people, but it provides exactly the services I want for the people who I want to have access. - -If you're duplicating media or applications across several devices or building a home server, you should consider a Kubernetes cluster. It's easy to scale for power and storage, it's easy to maintain, and it's a lot of fun. - -### Education and upskilling - -Are you considering a career in IT? Are you already in IT but want to grow as a professional? The cloud is a powerful model, and Kubernetes is an easy way to wrangle a lot of potential power. The more you learn about these concepts, the better prepared you'll be to move up in your career. - -One of the most frustrating aspects of the cloud in its early days was its inaccessibility. If you didn't own racks of servers, it was difficult to gain experience administering and maintaining a cloud infrastructure. Thanks to open source projects like [Kubernetes][6], [OKD][7], [LXC][8], and [Podman][9], building your own cloud has become possible. Thanks to the Raspberry Pi and other Arm-based system-on-a-chip (SoC) computers, it's also affordable. - -### Web server - -The internet is one of the most accessible entry points into modern technology. Since the '90s, regular folk have wandered into the strange world of computing by reading HTML in a desperate attempt to understand how to put an animated GIF onto a Myspace or Geocities page. A natural progression from rudimentary HTML and CSS is to run a web server. Admittedly, a Kubernetes cluster probably is overkill for a personal site, but it's a great project to become familiar with how Kubernetes pods work and why they're important. It's also a great way to learn about [routing][10] and load balancing. - -### Containers - -Linux containers have changed IT and computing as a whole. The original [LXC][11] toolset enabled and inspired hugely popular technologies like Docker, Flatpak, Kubernetes, Podman, and more. Containerization is a new model of running code that's showing up on operating systems for desktops and mobile devices. - -The problem is, containers are _different_ from what most users are accustomed to. Traditionally, binaries were compiled according to the operating systems, they were linked to locally available libraries, and they generally had access to everything on the hard drive. [Containers are different][12]. They're miniature runtime environments with binaries run within them, linked to other libraries in the container, and it's all kept separate from the host system unless it's granted a specific exemption. Furthermore, a container is ephemeral. You can create a container and dispose of it arbitrarily. Running a service in a container is a great way to learn how data can be persistent in an environment designed to end and respawn at any moment. - -As painful as that learning curve can be, discovering how easy containerized apps are to install opens a whole new world of possibilities. You can run the [Grafana][13] dashboard, the [Prometheus][14] monitoring software, Discourse, Nextcloud, and a dozen others from prebuilt container definitions or [Helm charts][15]. - -### Web development - -If you're a developer delivering apps for the web, [Kubernetes offers many benefits][16]. It can transform your workflow, and most importantly, it can help make your apps resilient. When you're developing for the cloud, you leverage [the best principles of microservices][17] in the context of containers, and you're able to use the advantages of distributed computing, filesystems, and databases. - -### Try Kubernetes yourself - -If you've learned [the basics][18] of Kubernetes, now's the time to take your knowledge a step further with your very own private cloud. Download our [**free eBook**][3] and start using Kubernetes today. You never know where it will take you. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/8/kubernetes-raspberry-pi - -作者:[Seth Kenlon][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/seth -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/ship_captain_devops_kubernetes_steer.png?itok=LAHfIpek (Ship captain sailing the Kubernetes seas) -[2]: https://www.redhat.com/en/topics/cloud-computing/what-is-hybrid-cloud -[3]: https://opensource.com/downloads/kubernetes-raspberry-pi -[4]: http://kodi.tv -[5]: https://opensource.com/article/17/5/next-big-challenge-open-source-rich-collaboration-software -[6]: https://kubernetes.io -[7]: https://www.okd.io -[8]: https://linuxcontainers.org/lxc/getting-started -[9]: http://podman.io -[10]: https://opensource.com/article/20/3/kubernetes-traefik -[11]: https://opensource.com/article/18/11/behind-scenes-linux-containers -[12]: https://opensource.com/article/19/6/kubernetes-potential-run-anything -[13]: https://opensource.com/article/19/2/deploy-influxdb-grafana-kubernetes -[14]: https://opensource.com/article/19/11/introduction-monitoring-prometheus -[15]: https://opensource.com/article/20/5/helm-charts -[16]: https://opensource.com/article/19/10/kubernetes-complex-business-problem -[17]: https://opensource.com/article/19/11/microservices-cheat-sheet -[18]: https://opensource.com/article/19/6/kubernetes-basics diff --git a/sources/tech/20200812 Create a wifi hotspot with Raspberry Pi 3 and Fedora.md b/sources/tech/20200812 Create a wifi hotspot with Raspberry Pi 3 and Fedora.md deleted file mode 100644 index 6785ed8936..0000000000 --- a/sources/tech/20200812 Create a wifi hotspot with Raspberry Pi 3 and Fedora.md +++ /dev/null @@ -1,371 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Create a wifi hotspot with Raspberry Pi 3 and Fedora) -[#]: via: (https://fedoramagazine.org/create-a-wifi-hotspot-with-raspberry-pi-3-and-fedora/) -[#]: author: (Nick Hardiman https://fedoramagazine.org/author/nickhardiman/) - -Create a wifi hotspot with Raspberry Pi 3 and Fedora -====== - -![][1] - -If you’re already [running Fedora on your Pi][2], you’re already most of the way to a wifi hotspot. A Raspberry Pi has a wifi interface that’s usually set up to join an existing wifi network. This interface can be reconfigured to provide a new wifi network. If a room has a good network cable and a bad wifi signal (a brick wall, foil-backed plasterboard, and even a window with a metal oxide coating are all obstacles), fix it with your Pi. - -This article describes the procedure for setting up the hotspot. It was tested on third generation Pis – a [Model B v1.2][3], and a [Model B+][4] (the older [2][5] and the new [4][6] weren’t tested). These are the credit-card size Pis that have been around a few years. - -This article also delves a little way into the network concepts behind the scenes. For instance, “hotspot” is the term that’s caught on in public places around the world, but it’s more accurate to use the term WLAN AP (Wireless Local Area Network Access Point).In fact, if you want to annoy your friendly neighborhood network administrator, call a hotspot a “wifi router”. The inaccuracy will make their eyes cross. - -A few _nmcli_ commands configure the Raspberry Pi as a wifi AP. The _nmcli_ command-line tool controls the NetworkManager daemon. It’s not the only network configuration system available. More complex solutions are available for the adventurous. Check out the [hostapd][7] RPM package and the [OpenWRT distro][8]. Have a look at [Internet connection sharing with NetworkManager][9] for more ideas. - -### A dive into network administration - -The hotspot is a routed AP (Access Point). It sits between two networks, the current wired network and its new wireless network, and takes care of the post-office-style forwarding of IP packets between them. - -#### Routing and interfaces - -The wireless interface on the Raspberry Pi is named **wlan0** and the wired one is **eth0**. The new wireless network uses one range of IP addresses and the current wired network uses another. In this example, the current network range is 192.168.0.0/24 and the new network range is 10.42.0.0/24. If these numbers make no sense, that’s OK. You can carry on without getting to grips with IP subnets and netmasks. The Raspberry Pi’s two interfaces have IP addresses from these ranges. - -Packets are sent to local computers or remote destinations based on their IP addresses. This is routing work, and it’s where the _routed_ part of _routed AP_ name comes from. If you’d like to build a more complex router with DHCP and DNS, pick up some tips from the article [How to use Fedora Server to create a router / gateway][10]. - -#### It’s not a bridged AP - -Netowrk bridging is another way of extending a network, but it’s not how this Pi is set up. This routed AP is not a bridged AP. To understand the difference between routing and bridging, you have to know a little about the networking layers of the OSI network model. A good place to start is the [beginner’s guide to network troubleshooting in Linux][11]. Here’s the short answer. - - * layer 3, network ← Yes, our routed AP is here. - * layer 2, data link ← No, it’s not a bridged AP. - * layer 1, physical ← Radio transmission is covered here. - - - -A [bridge][12] works at a lower layer of the network stack – it uses ethernet MAC addresses to send data. If this was a bridged AP, it wouldn’t have two sets of IP addresses; the new wireless network and the current wired network would use the same IP subnet. - -#### IP masquerading - -You won’t find an IP address starting with _10._ anywhere on the Internet. It’s a private address, not a public address. To get an IP packet routed out of the wifi network and back in again, packet addresses have to be changed. **IP masquerading** is a way of making this routing work. The masquerade name is used because the packets’ real addresses are hidden. the wired network doesn’t see any addresses from the wireless network. - -IP masquerading is set up automatically by NetworkManager. NetworkManager adds nftables rules to handle [IP masquerading][13]. - -#### The Pi’s network stack - -A stack of network hardware and software makes wifi work. - - * Network hardware - * Kernel space software - * User space software - - - -You can see the network hardware. The Raspberry Pi has two main hardware components – a tiny antenna and Broadcom wifi chip. [MagPi magazine has some great photos][14]. - -Kernel software provides the plumbing. There’s no need to work on these directly – it’s all good to go in the Fedora distribution. - - * [Broadcom driver modules][15] talk to the hardware. List these with the command _lsmod | grep brcm_. - * A TCP/IP stack handles protocols. - * The [netfilter framework][16] filters packets. - * A network system ties these all together. - - - -User space software customizes the system. It’s full of utilities that either help the user, talk to the kernel, or connect other utilities together. For instance, the [firewall-cmd][17] tool talks to the [firewalld service][18], firewalld talks to the [nftables][19] tool, and nftables talks to the netfilter framework in the kernel. The [nmcli][20] commands talk to [NetworkManager][21]. And NetworkManager talks to pretty much everything. - -### Create the AP - -That’s enough theory — let’s get practical. Fire up your Raspberry Pi running Fedora and run these commands. - -#### Install software - -Nearly all the required software is included with the Fedora Minimal image. The only thing missing is the _dnsmasq_ package. This handles the DHCP and IP address part of the new wifi network, automatically. Run this command [using sudo][22]: - -``` -$ sudo dnf install dnsmasq -``` - -#### Create a new NetworkManager connection - -NetworkManager sets up one network connection automatically, _Wired connection 1_. Use the _nmcli_ tool to tell NetworkManager how to add a wifi connection. NetworkManager saves these settings, and a bunch more, in a new config file. - -The new configuration file is created in the directory _/etc/sysconfig/network-scripts/_. At first, it’s empty; the image has no configuration files for network interfaces. If you want to find out more about how NetworkManager uses the _network-scripts_ directory, the gory details are in the [nm-settings-ifcfg-rh man page][23]. - -``` -[nick@raspi ~]$ ls /etc/sysconfig/network-scripts/ -[nick@raspi ~]$ -``` - -The first _nmcli_ command, to create a network connection, looks like this. There’s more to do — the Pi won’t work as a hotspot after running this. - -``` -nmcli con add \ - type wifi \ - ifname wlan0 \ - con-name 'raspi hotspot' \ - autoconnect yes \ - ssid 'raspi wifi' -``` - -The following commands complete several more steps: - - * Create a new connection. - * List the connections. - * Take another look at the _network-scripts_ folder. NetworkManager added a config file. - * List available APs to connect to. - - - -This requires running several commands as root [using _sudo_][22]: - -``` -$ sudo nmcli con add type wifi ifname wlan0 con-name 'raspi hotspot' autoconnect yes ssid 'raspi wifi' -Connection 'raspi wifi' (13ea67a7-a8e6-480c-8a46-3171d9f96554) successfully added. -$ sudo nmcli connection show -NAME UUID TYPE DEVICE -Wired connection 1 59b7f1b5-04e1-3ad8-bde8-386a97e5195d ethernet eth0 -raspi wifi 13ea67a7-a8e6-480c-8a46-3171d9f96554 wifi wlan0 -$ ls /etc/sysconfig/network-scripts/ -ifcfg-raspi_wifi -$ sudo nmcli device wifi list -IN-USE BSSID SSID MODE CHAN RATE SIGNAL BARS SECURITY - 01:0B:03:04:C6:50 APrivateAP Infra 6 195 Mbit/s 52 ▂▄__ WPA2 - 02:B3:54:05:C8:51 SomePublicAP Infra 6 195 Mbit/s 52 ▂▄__ -- -``` - -You can remove the new config and start again with this command: - -``` -$ sudo nmcli con delete 'raspi hotspot' -``` - -#### Change the connection mode - -A NetworkManager connection has many configuration settings. You can see these with the command _nmcli con show ‘raspi hotspot’_. Some of these settings start with the label _802-11-wireless_. This is to do with industry standards that make wifi work – the IEEE organization specified many protocols for wifi, named [802.11][24]. This new wifi connection is in _infrastructure_ mode, ready to connect to a wifi access point. The Pi isn’t supposed to connect to another AP; it’s supposed to be the AP that others connect to. - -This command changes the mode from infrastructure to AP. It also sets a few other [wireless properties][25]. The **bg** value tells NetworkManager to follow two old IEEE standards – [802.11b][26] and [802.11g][27]. Basically it configures the radio to use the 2.4GHz frequency band, not the 5GHz band. **ipv4.method shared** means this connection will be shared with others. - - * Change the connection to a hotspot by changing the mode to _ap_. - - - -``` -sudo nmcli connection \ - modify "raspi hotspot" \ - 802-11-wireless.mode ap \ - 802-11-wireless.band bg \ - ipv4.method shared -``` - -The connection starts automatically. The _dnsmasq_ application gives the wlan0 interface an IP address of 10.42.0.1. The manual commands to start and stop the hotspot are: - -``` -$ sudo nmcli con up "raspi hotspot" -$ sudo nmcli con down "raspi hotspot" -``` - -#### Connect a device - -The next steps are to: - - * Watch the log. - * Connect a smartphone. - * When you’ve seen enough, type ^C ([control][c]) to stop watching the log. - - - -``` -$ journalctl --follow --- Logs begin at Wed 2020-04-01 18:23:45 BST. -- -... -``` - -Use a wifi-enabled device, like your phone. The phone can find the new _raspi wifi_ network. - -Messages about an associating client appear in the activity log: - -``` -Jun 10 18:08:05 raspi wpa_supplicant[662]: wlan0: AP-STA-CONNECTED 94:b0:1f:2e:d2:bd -Jun 10 18:08:05 raspi wpa_supplicant[662]: wlan0: CTRL-EVENT-SUBNET-STATUS-UPDATE status=0 -Jun 10 18:08:05 raspi dnsmasq-dhcp[713]: DHCPREQUEST(wlan0) 10.42.0.125 94:b0:1f:2e:d2:bd -Jun 10 18:08:05 raspi dnsmasq-dhcp[713]: DHCPACK(wlan0) 10.42.0.125 94:b0:1f:2e:d2:bd nick -``` - -### Examine the firewall - -A new security zone named _nm-shared_ has appeared. This is stopping some wifi access. - -``` -$ sudo firewall-cmd --get-active-zones -[sudo] password for nick: -nm-shared - interfaces: wlan0 -public - interfaces: eth0 -``` - -The new zone is set up to accept everything because the target is _ACCEPT_. Clients are able to use web, mail and SSH to get to the Internet. - -``` -$ sudo firewall-cmd --zone=nm-shared --list-all -nm-shared (active) - target: ACCEPT - icmp-block-inversion: no - interfaces: wlan0 - sources: - services: dhcp dns ssh - ports: - protocols: icmp ipv6-icmp - masquerade: no - forward-ports: - source-ports: - icmp-blocks: - rich rules: - rule priority="32767" reject -``` - -This big list of config settings takes a little examination. - -The first line, the innocent-until-proven-guilty option _target: ACCEPT_ says all traffic is allowed through, unless a rule says otherwise. It’s the same as saying these types of traffic are all OK. - - * inbound packets – requests sent from wifi clients to the Raspberry Pi - * forwarded packets – requests from wifi clients to the Internet - * outbound packets – requests sent by the PI to wifi clients - - - -However, there’s a hidden gotcha: requests from wifi clients (like your workstation) to the Raspberry Pi may be rejected. The final line — the mysterious rule in the _rich rules_ section — refers to the [routing policy database][28]. The rule stops you from connecting from your workstation to your Pi with a command like this: _ssh 10.42.0.1_. This rule only affects traffic sent to to the Raspberry Pi, not traffic sent to the Internet, so browsing the web works fine. - -If an inbound packet matches something in the _services_ and _protocols_ lists, it’s allowed through. NetworkManager automatically adds ICMP, DHCP and DNS (Internet infrastructure services and protocols). An SSH packet doesn’t match, gets as far as the [post-processing][29] stage, and is rejected — _priority=”32767″_ translates as “do this after all the processing is done.” - -If you want to know what’s happening behind the scenes, that rich rule creates an nftables rule. The nftables rule looks like this. - -``` -$ sudo nft list chain inet firewalld filter_IN_nm-shared_post -table inet firewalld { - chain filter_IN_nm-shared_post { - reject - } -} -``` - -#### Fix SSH login - -Connect from your workstation to the Raspberry Pi using SSH.This won’t work because of the rich rule. A protocol that’s not on the list gets instantly rejected. - -Check that SSH is blocked: - -``` -$ ssh 10.42.0.1 -ssh: connect to host 10.42.0.1 port 22: Connection refused -``` - -Next, add SSH to the list of allowed services. If you don’t remember what services are defined, list them all with _firewall-cmd ‐‐get-services_. For SSH, use option _‐‐add-service ssh_ or _‐‐remove-service ssh_. Don’t forget to make the change permanent. - -``` -$ sudo firewall-cmd --add-service ssh --permanent --zone=nm-shared -success -``` - -Now test with SSH again. - -``` -$ ssh 10.42.0.1 -The authenticity of host '10.42.0.1 (10.42.0.1)' can't be established. -ECDSA key fingerprint is SHA256:dDdgJpDSMNKR5h0cnpiegyFGAwGD24Dgjg82/NUC3Bc. -Are you sure you want to continue connecting (yes/no/[fingerprint])? yes -Warning: Permanently added '10.42.0.1' (ECDSA) to the list of known hosts. -Last login: Tue Jun 9 18:58:36 2020 from 10.0.1.35 -nick@10.42.0.1's password: -``` - -SSH access is no longer blocked. - -### Test as a headless computer - -The raspberry pi runs fine as a [headless computer][30]. From here on, you can use SSH to work on your Pi. - - * Power off. - * Remove keyboard and video monitor. - * Power on. - * Wait a couple minutes. - * Connect from your workstation to the Raspberry Pi using SSH. Use either the wired interface or the wireless one; both work. - - - -### Increase security with WPA-PSK - -The WPA-PSK (Wifi Protected Access with Pre-Shared Key) system is designed for home users and small offices. It is password protected. Use nmcli again to add WPA-PSK: - -``` -$ sudo nmcli con modify "raspi hotspot" wifi-sec.key-mgmt wpa-psk -$ sudo nmcli con modify "raspi hotspot" wifi-sec.psk "hotspot-password" -``` - -### Troubleshooting - -Here are a couple recommendations: - - * Mine journalctl, Google and forums. - * Join the [Fedora ARM mailing list][31]. - - - -The bad news is, there are no troubleshooting tips here. There are so many things that can go wrong, there’s no way of covering them. - -Troubleshooting a network stack is tricky. If one component goes wrong, it may all go wrong. And making changes like reloading firewall rules can upset services like NetworkManager and sshd. You know you’re in the weeds when you find yourself running [nftables commands][32] like _nft list ruleset_ and [firewalld commands][33] like _firewall-cmd ‐‐set-log-denied=all_. - -### Play with your new platform - -Add value to your new AP. Since you’re running a Pi, there are many hardware add-ons. Since it’s running Fedora, you have thousands of packages available. Try turning it into a mini-NAS, or adding battery back-up, or perhaps a music player. - -* * * - -_Photo by [Uriel SC][34] on [Unsplash][35]_. - --------------------------------------------------------------------------------- - -via: https://fedoramagazine.org/create-a-wifi-hotspot-with-raspberry-pi-3-and-fedora/ - -作者:[Nick Hardiman][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://fedoramagazine.org/author/nickhardiman/ -[b]: https://github.com/lujun9972 -[1]: https://fedoramagazine.org/wp-content/uploads/2020/07/raspi3-wifi-816x345.jpg -[2]: https://fedoramagazine.org/install-fedora-on-a-raspberry-pi/ -[3]: https://www.raspberrypi.org/products/raspberry-pi-3-model-b/ -[4]: https://www.raspberrypi.org/products/raspberry-pi-3-model-b-plus/ -[5]: https://www.raspberrypi.org/products/raspberry-pi-2-model-b/ -[6]: https://www.raspberrypi.org/products/raspberry-pi-4-model-b/ -[7]: http://w1.fi/hostapd/ -[8]: https://openwrt.org/toh/raspberry_pi_foundation/raspberry_pi -[9]: https://fedoramagazine.org/internet-connection-sharing-networkmanager/ -[10]: https://fedoramagazine.org/use-fedora-server-create-router-gateway/ -[11]: https://www.redhat.com/sysadmin/beginners-guide-network-troubleshooting-linux -[12]: https://wiki.linuxfoundation.org/networking/bridge -[13]: https://en.wikipedia.org/wiki/Network_address_translation -[14]: https://magpi.raspberrypi.org/articles/raspberry-pi-3-specs-benchmarks -[15]: https://wireless.wiki.kernel.org/en/users/drivers/brcm80211 -[16]: https://www.netfilter.org/ -[17]: https://firewalld.org/documentation/utilities/firewall-cmd.html -[18]: https://firewalld.org/ -[19]: https://firewalld.org/2018/07/nftables-backend -[20]: https://developer.gnome.org/NetworkManager/stable/nmcli.html -[21]: https://wiki.gnome.org/Projects/NetworkManager -[22]: https://fedoramagazine.org/howto-use-sudo/ -[23]: https://people.freedesktop.org/~lkundrak/nm-docs/nm-settings-ifcfg-rh.html -[24]: https://en.wikipedia.org/wiki/IEEE_802.11 -[25]: https://developer.gnome.org/NetworkManager/stable/settings-802-11-wireless.html -[26]: https://en.wikipedia.org/wiki/IEEE_802.11#802.11b -[27]: https://en.wikipedia.org/wiki/IEEE_802.11#802.11g -[28]: https://www.man7.org/linux/man-pages/man8/ip-rule.8.html -[29]: https://firewalld.org/2018/12/rich-rule-priorities -[30]: https://en.wikipedia.org/wiki/Headless_computer -[31]: https://lists.fedoraproject.org/admin/lists/arm.lists.fedoraproject.org/ -[32]: https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html/configuring_and_managing_networking/getting-started-with-nftables_configuring-and-managing-networking -[33]: https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html/configuring_and_managing_networking/using-and-configuring-firewalld_configuring-and-managing-networking -[34]: https://unsplash.com/@urielsc26?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText -[35]: https://unsplash.com/s/photos/network?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText diff --git a/sources/tech/20200812 Why I still love tcsh after all these years.md b/sources/tech/20200812 Why I still love tcsh after all these years.md deleted file mode 100644 index a11347956a..0000000000 --- a/sources/tech/20200812 Why I still love tcsh after all these years.md +++ /dev/null @@ -1,152 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Why I still love tcsh after all these years) -[#]: via: (https://opensource.com/article/20/8/tcsh) -[#]: author: (Seth Kenlon https://opensource.com/users/seth) - -Why I still love tcsh after all these years -====== -Bash may be more popular, but tcsh has advantages that make it more -appealing in certain cases. -![Person programming on a laptop on a building][1] - -I consider myself a happy [Bash][2] user. However, when I started exploring Unix, it was on a proprietary Unix system that provided [tcsh][3] by default, so my earliest shell experiences were on a modern version of the C shell (csh). That turned out to be a fortunate accident because tcsh was also the shell of choice at the film studio where I worked later in my career. - -To this day, there are several tasks I associate with tcsh, even though there's no logical correlation there. I still use tcsh on at least one system, if only to stay in practice. I also keep it installed on all my systems to maintain compatibility with my own tcsh scripts and to ensure I can launch it when I need to write a script I prefer to have in tcsh. - -### The difference between C shell and Bash - -Tcsh is the modern continuation of csh. When the C shell was released way back in 1978, users were excited over its C-like syntax. C was a new programming language at the time, and more importantly, it was what Unix was written in, so most Unix users were more comfortable with C than an arbitrary scripting language. For instance, in Bash, this `if` loop makes a "secret" call to the `test` binary to evaluate the conditional statement (the part in brackets): - - -``` -v=1 - -if [ $v -gt 0 ] -  then -  echo "verbose" -fi -``` - -Here's the same statement in csh or tcsh, without an external call to `test` because the conditional statement (the code in parentheses) uses csh's built-in evaluation: - - -``` -set v=1 - -if ($v > 1) then -  echo "verbose" -endif -``` - -This demonstrates a few things, both good and bad. For instance, it's natural for a C programmer to type a conditional in parentheses, and it's desirable from a programmer's perspective to have math evaluation built into the executable. On the other hand, the `if` loop syntax has more in common with Lua than C, which uses braces as delimiters: - - -``` -// this does not work in Csh -if ( v>1 ) { -        [printf][4]("verbose"); -} -``` - -In a way, this nicely sums up csh: it's clean, efficient, and familiar for some, but quirky and inconsistent. - -So why use it? - -### Tcsh for precision - -I write more C++ and [Java][5] than C code, so my interest in tcsh shares little with its historical claim to fame. However, I enjoy [Lua][6], and in a way, I think of tcsh and other shells like I think of Lua and Python or even Markdown and [Docbook][7]. Both shells have merit, and it's easy to point to the one that's more popular, but there's strict clarity to the other. In fact, I feel tcsh has a precision that many other shells lack. - -### Variables - -You don't get the luxury of typed variables in shells, but with tcsh, you can at least declare them with a keyword. Strangely, there are several keywords you can use for the task, but the one I settled on was `set`: - - -``` -> set var=foo -> echo $var -foo -``` - -You can expand variables by typing the name of the variable (`var` in this example) and then pressing **Ctrl+X** followed by the **$** (dollar) key. The example above sets `var` to `foo`. - -As with many other shells, you can list all set variables using `set` alone with no arguments: - - -``` -> set -term    xterm -tty     pts/2 -uid     1000 -user    seth -var     foo -[...] -``` - -You can unset a variable using the `unset` command: - - -``` -> unset var -> set | grep var -> -``` - -### Missing features is a feature - -Maybe you've seen lines like this in a script: - - -``` -var=GitLab -${var,,} -``` - -The second line is a built-in function to transform the contents of `var` into lowercase. - -While extra functions like these are infinitely useful, I sometimes feel they're an invitation to obfuscation. Shell scripting is like the HTML of programming; it's one of the few serious languages you can teach yourself just by reading other people's code. That's not necessarily a great reason to give up useful functions, but it's the reason I try to avoid some of the cryptic shorthand popular in various languages. When writing in tcsh, I don't have the option to use as much shorthand, so complex string operations must be performed with basic Unix tools rather than by built-in shortcuts. I believe it results in code that's easier to read, and that makes a big difference to future contributors—and to future, forgetful _me_. - -### Built-in math - -One of the things I love about tcsh is its built-in **@** math shortcut. Like most self-taught Unix users, I stumbled upon [bc][8], and I've regretted it ever since. Through no fault of its own, bc is often taught to users as a command-line calculator when it's actually better suited as a calculation _language_. Workarounds include an amazing 300-line [calculator in pure Bash][9], or the **let** command in Bash, or the **@** command in tcsh. - - -``` -> @ n = ( 1 + 1 / 2 ) -> echo $n -1 -``` - -For very complex math, it may be worth [learning bc][10] or a good [Python mathematics library][11]. - -### All the essentials - -For me, tcsh strikes a perfect balance between stark simplicity and essential features. It's not a shell for all users, or even for all purposes, but if you're looking to simplify your view of your text-based world, tcsh might provide an interesting alternative. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/8/tcsh - -作者:[Seth Kenlon][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/seth -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/computer_code_programming_laptop.jpg?itok=ormv35tV (Person programming on a laptop on a building) -[2]: https://opensource.com/resources/what-bash -[3]: https://github.com/tcsh-org/tcsh -[4]: http://www.opengroup.org/onlinepubs/009695399/functions/printf.html -[5]: https://opensource.com/resources/java -[6]: https://opensource.com/article/20/2/lua-cheat-sheet -[7]: https://opensource.com/article/17/9/docbook -[8]: https://www.gnu.org/software/bc/ -[9]: https://raw.githubusercontent.com/bluebat/.bash/master/bashbc.sh -[10]: https://opensource.com/article/20/7/bc -[11]: https://opensource.com/alternatives/matlab diff --git a/sources/tech/20200814 7 tips for giving and receiving better feedback.md b/sources/tech/20200814 7 tips for giving and receiving better feedback.md deleted file mode 100644 index be6dc492df..0000000000 --- a/sources/tech/20200814 7 tips for giving and receiving better feedback.md +++ /dev/null @@ -1,135 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (7 tips for giving and receiving better feedback) -[#]: via: (https://opensource.com/article/20/8/better-feedback) -[#]: author: (Dawn Parzych https://opensource.com/users/dawnparzych) - -7 tips for giving and receiving better feedback -====== -Good feedback is important for growing, learning, and improving. -![Pair programming][1] - -Getting feedback isn't always easy to handle, but we need to hear it to grow and learn. Feedback can take many forms—from formalized feedback in performance reviews to more informal feedback such as: - - * Code reviews - * Peer reviews of writing - * Comments for a speaker - * Recommending revisions to a resume - - - -There is an art to giving, asking for, and receiving feedback in a way that is actionable and helps people improve. To narrow down this topic, I'll focus on feedback related to writing (as that is one of my specialties), but many of these lessons apply to any type of feedback you need to give or receive. - -### Tips for giving feedback - -If you've been asked to give feedback, first, confirm you understand what type of feedback is being requested. The person asking for feedback should provide guidelines for what you should focus on. If you don't know what type of feedback to give, ask. Also, make sure to ask when they need the feedback. If you can't meet their deadline, let them know. Maybe the timeline is flexible. If not, they have the opportunity to find somebody else to help. - -It's OK to say no—a short message declining the request and explaining why is much better than ignoring it and potentially making the person miss their deadline. - -#### Content vs. style - -There are many different ways to write a sentence, and everybody has their own style. Focus on the content of what was said rather than how it was said. Unless you've been explicitly asked to help rewrite an article, don't worry if you would have said something differently. If the correct meaning is conveyed, that is what matters. - -For example, these sentences all say roughly the same thing. - -> A large part of building and operating software is learning what works and what doesn't. -> -> Software engineers spend a great deal of time determining what works and what does not work when building and operating software. -> -> Software engineers expend a considerable amount of time ascertaining the effectiveness and interoperability of software and hardware. - -The "right" version has everything to do with the writer's and the audience's preferred style. - -#### Clarity - -This doesn't mean you shouldn't be concerned about clarity. If something is unclear, speak up. It helps when you provide context about why you found something confusing or vague (again, clarity matters). The writer might not know where you are getting hung up. - -This is unclear feedback: - - * "This is confusing." - * "What do you mean here?" - - - -Better feedback (this is all real feedback I've either given or received recently): - - * "I think this could use a little clarification on what you mean by 'we.'" - * "Do you mean a team with a single project, or do you mean to choose a single team?" - - - -If you have time and it's possible, provide suggestions on how it can be made clearer for you, such as: - - * "On a hasty reading, I initially misinterpreted this as claiming x (whereas obviously, you meant the opposite)." - - - -#### Twice as nice - -Read the entire content at least twice. The first time you read it, don't leave any comments or make any suggestions; just read to see what information is covered. Otherwise, you might suggest that a specific topic should be included—then see it two paragraphs later. - -#### Leave positive feedback - -Often when we give feedback, we focus only on the areas that need improvement. If there is something you like, share that feedback as well. Writers want to know what resonates, as well as what didn't quite hit the mark. What made you laugh or cringe? What did you learn? - -### Tips for getting feedback - -A great way to receive feedback is by asking for it. Here are some suggestions that will help you get feedback that's most useful to you. - -#### Be specific - -When you request feedback, tell your reviewers exactly what you are looking for, including what specific areas you want people to focus on and what not to worry about. - -This request is vague: - -> "Can you please read this and let me know what you think?" - -The reviewer doesn't know if you're asking them to review for technical accuracy, grammar, or something else. I sometimes forget to do this when I ask for feedback, and thankfully, I have a colleague who will follow-up and ask for more context by asking, "What level and depth of review are you looking for?" - -Since I'm trying to get better at giving specifics when asking for feedback, I often leave comments in my articles for my reviewers with questions I have, things I'm struggling with, or areas I think are weak and need improvement. - -Here's a good example from one of my colleagues on asking for specific feedback: - -> "I'd hugely appreciate any comments on this, especially things I have wrong, or over/understate, or other things to include (some of which may be punted to the next version, but hearing them now would still be very useful)." - -#### State your deadline - -Make sure to include a timeframe when you need their feedback. You don't want review cycles dragging on and blocking your progress while you're waiting for feedback. Give reasonable deadlines, and if there is a need for urgency, explain why. You might say: - -> "Can you review this for technical accuracy and readability by the end of the week? Don't worry about grammar. I'll make those edits later." - -Or - -> "Can you provide copy-editing by the end of the day? This needs to be published tomorrow to coincide with our launch." - -#### Decide what to include - -You may not agree with all the feedback you hear. It is up to you as the writer whether to incorporate it or not. I highly encourage you to incorporate feedback that points out blatant errors. The feedback that can be more challenging is differences of opinion, stylistic changes, etc. I often schedule meetings to review the feedback if there are differing viewpoints. Talking can often clarify things faster than writing comments back and forth. - -### Conclusion - -Asking for feedback can trigger [imposter syndrome][2]. That won't necessarily go away, but giving good feedback (even if it is negative feedback) can help a writer overcome that feeling. - -If you're interested in ways to become a better writer, I've previously written about my [writing process][3], which includes multiple feedback loops. - -As a writer, your job is to write content that people enjoy, resonates with your readers, and serves a purpose. As a reviewer, your job is to share what you learned and what was confusing. These tips can help you give and receive better feedback. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/8/better-feedback - -作者:[Dawn Parzych][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/dawnparzych -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/collab-team-pair-programming-code-keyboard.png?itok=kBeRTFL1 (Pair programming) -[2]: https://opensource.com/article/19/11/my-first-open-source-contribution-impostor-syndrome -[3]: https://opensource.com/article/20/5/write-about-open-source-software diff --git a/sources/tech/20200814 Fixing -Unable to correct problems, you have held broken packages- Error in Ubuntu and other Linux Distributions.md b/sources/tech/20200814 Fixing -Unable to correct problems, you have held broken packages- Error in Ubuntu and other Linux Distributions.md deleted file mode 100644 index 4ce4dcf89e..0000000000 --- a/sources/tech/20200814 Fixing -Unable to correct problems, you have held broken packages- Error in Ubuntu and other Linux Distributions.md +++ /dev/null @@ -1,163 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Fixing “Unable to correct problems, you have held broken packages” Error in Ubuntu and other Linux Distributions) -[#]: via: (https://itsfoss.com/held-broken-packages-error/) -[#]: author: (Abhishek Prakash https://itsfoss.com/author/abhishek/) - -Fixing “Unable to correct problems, you have held broken packages” Error in Ubuntu and other Linux Distributions -====== - -While there are [various ways to install applications in Ubuntu][1], I prefer to use the apt command in the terminal for installing software. - -If you do the same, you may come across a dependency error like this: - -``` -Some packages could not be installed. This may mean that you have -requested an impossible situation or if you are using the unstable -distribution that some required packages have not yet been created -or been moved out of Incoming. -The following information may help to resolve the situation: - -The following packages have unmet dependencies: - green-recorder : Depends: python-urllib3 but it is not installable -E: Unable to correct problems, you have held broken packages. -``` - -Usually on It’s FOSS, you’ll find simple and easy to follow solutions to complicated problems. Unfortunately, this one is not that straightforward. - -In this troubleshooting article, I’ll tell you why this error occurs and give some pointers on how to go about solving this issue. - -### Why do you see the “you have held broken packages” error? - -![][2] - -You were trying to install an application package, most probably from a [PPA][3] or third-party repository. - -Applications often need specific versions of libraries and software component (called dependencies). These dependencies may not be part of the application package itself, but they are expected to either be installed on your system already or installed during the installation of the application. - -Your Linux system tries to install these dependencies on its own. But if the dependency package version is not available on your system, it gets confused as it has no way to solve this dependency problem. - -This is why it informs you that the software you were trying to install depends on XYZ but this XYZ cannot be installed. - -Another usecase is when your package can be held is when you try to install two versions of the same software. Say you are installing a specific version of Wine when you have another one installed already. - -### How to go about fixing the “Unable to correct problems, you have held broken packages” error - -You can try a few things to make things work. You need to have some ideas on installing/removing packages in Linux command line to work things out here. - -#### Make sure that your system’s package cache is updated - -First, make sure that local package cache is updated. Your system checks this cache for the available packages. It’s possible (but not certain) that the dependency package is seen by the system after the cache update. - -``` -sudo apt update -``` - -Try installing the troublesome package again and see if it fixes the problem. - -#### Install the dependency - -If you try to install the troublesome package again and it still complains about the same dependency error than perhaps that dependency is not available for distribution version. - -You may [use the apt search command][4] see if you could this library from some other package or name: - -``` -sudo apt search package_name -``` - -If the package is available, is it the same version as requested by the package you were trying to install? - -Try to install the dependency package and see what happens: - -``` -sudo apt install dependency_package -``` - -You may encounter a dependency chain. You try to install dependency A but it complains of B. Then you try installing B and it complains of C. - -It may also happen that when you try to install package C, it is already installed. Check the version of package C. Is it the same version as required by package B? If yes, then removing C and installing it again could help. - -#### Can you get the missing dependency package from some other source? - -If the missing dependency package cannot be found on your system (no results in apt search), you may try to get the dependency package from some place else. I know that’s not very convenient thing to do but you don’t have many options here. - -For example, in the case of installing shutter, it complained about libgoo-canvas-perl and this library is no more available on Ubuntu system. - -``` -sudo apt install shutter -Reading package lists... Done -Building dependency tree -Reading state information... Done -Some packages could not be installed. This may mean that you have -requested an impossible situation or if you are using the unstable -distribution that some required packages have not yet been created -or been moved out of Incoming. -The following information may help to resolve the situation: - -The following packages have unmet dependencies: - shutter : Depends: libgoo-canvas-perl but it is not going to be installed -E: Unable to correct problems, you have held broken packages. -``` - -However, since it was available in the previous versions of Ubuntu, I looked for this package on Ubuntu’s package archive and found it under the listing of Ubuntu 14.04 [here][5]. I downloaded the .DEB file and installed it. - -Now that this dependency package is installed, trying to install the original application (shutter in this case) should not complain about at least this package anymore. - -#### If you cannot find the dependency package anywhere, install the troublesome package from some other source - -So in the example above, I tried to install Green Recorder application using its PPA. This application needs `python-urllib3` library but unfortunately, this library is not available in my Ubuntu 20.04 system. - -``` -[email protected]:~$ apt search python-urllib3 -Sorting... Done -Full Text Search... Done -``` - -Clearly, this is a poorly packaged application. The developer made it available for Ubuntu 20.04 without realizing that Ubuntu 20.04 doesn’t support Python 2 anymore and all the Python libs now start with python3 prefix. So the python-urllib3 should be python3-urllib3. - -If you are in such a situation, maybe check the project’s homepage or search on the internet for an alternate source for installing it. Perhaps there is a Snap/Flatpak version or some user created a PPA for it? If nothing else, you may go with source code option as well. - -#### If you see the held broken package error during update try this - -Most of the discussion so far assumed that you see this error while installing a new application. That may not always be the case. - -If you see this error when you try updating your system with sudo apt update command, then you’ll have to take a slightly different approach. - -First, check which package is being held with this command: - -``` -dpkg --get-selections | grep hold -``` - -If you see some packages being held, remove them and then go on updating your system or installing the software. - -You may also [use Synaptic package manager][6] for fixing the broken packages. - -#### Did you manage to fix the issue? - -As I had mentioned earlier, there is no straightforward fix for this problem. You’ll have to investigate on your own and see if it can be fixed or not. - -Please share in the comments if your problem gets fixed. If not, I may try to help you out. - --------------------------------------------------------------------------------- - -via: https://itsfoss.com/held-broken-packages-error/ - -作者:[Abhishek Prakash][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://itsfoss.com/author/abhishek/ -[b]: https://github.com/lujun9972 -[1]: https://itsfoss.com/remove-install-software-ubuntu/ -[2]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/08/broken-package-error-ubuntu.png?resize=800%2C450&ssl=1 -[3]: https://itsfoss.com/ppa-guide/ -[4]: https://itsfoss.com/apt-search-command/ -[5]: https://launchpad.net/ubuntu/+source/libgoo-canvas-perl -[6]: https://itsfoss.com/synaptic-package-manager/ diff --git a/sources/tech/20200818 D Declarations for C and C-- Programmers.md b/sources/tech/20200818 D Declarations for C and C-- Programmers.md deleted file mode 100644 index 236458f193..0000000000 --- a/sources/tech/20200818 D Declarations for C and C-- Programmers.md +++ /dev/null @@ -1,310 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (D Declarations for C and C++ Programmers) -[#]: via: (https://theartofmachinery.com/2020/08/18/d_declarations_for_c_programmers.html) -[#]: author: (Simon Arneaud https://theartofmachinery.com) - -D Declarations for C and C++ Programmers -====== - -Because D was originally created by a C++ compiler writer, Walter Bright, [it’s an easy language for C and C++ programmers to learn][1], but there are little differences in the way declarations work. I learned them piecemeal in different places, but I’m going to dump a bunch in this one post. - -### `char* p` - -If you want to declare a pointer in C, both of the following work: - -``` -char *p; -char* p; -``` - -Some people prefer the second form because it puts all the type information to one side. At least, that’s what it looks like. Trouble is, you can fall into this trap: - -``` -char* p, q; // Gotcha! p is a pointer to a char, and q is a char in C -``` - -“Type information on the left” isn’t really how C works. D, on the other hand, _does_ put all the type information to the left, so this works the way it appears: - -``` -char* p, q; // Both p and q are of type char* in D -``` - -D also accepts the `char *p` syntax, but the rule I go by is `char *p` when writing C, and `char* p` when writing D, just because that matches how the languages actually work, so no gotchas. - -### Digression: how C declarations work - -This isn’t about D, but helps to make sense of the subtler differences between C and D declarations. - -C declarations are implicit about types. `char *p` doesn’t really say, “`p` is of type `char*`”; it says “the type of `p` is such that `*p` evaluates to a `char`”. Likewise: - -``` -int a[8]; // a[i] evaluates to an int (=> a is an array of ints) -int (*f)(double); // (*f)(0.5) evaluates to an int (=> f is a pointer to a function taking a double, returning an int) -``` - -There’s a kind of theoretical elegance to this implicit approach, but 1) it’s backwards and makes complex types confusing, 2) the theoretical elegance only goes so far because everything’s a special case. For example, `int a[8];` declares an array `a`, but makes the expression `a[8]` undefined. You can only use certain operations, so `int 2*a;` doesn’t work, and neither does `double 1.0 + sin(x);`. The expression `4[a]` is equivalent to `a[4]`, but you can’t declare an array with `int 4[a];`. C++ gave up on the theory when it introduced reference syntax like `int &x;`. - -### `function` and `delegate` - -D has a special `function` keyword for declaring function pointers using the “type information on the left” approach. It makes the declaration of function pointers use the same syntax as the declaration of a function: - -``` -int foo(); -int[] bar(); - -int function() foo_p = &foo; -int[] function() bar_p = &bar; -``` - -Note that the `&` is _required_ to get the address of a function in D (unlike in C and C++). If you want to have an array of pointers, you just add `[]` to the end of the type, just like you do with any other type. Similarly for making pointers to types: - -``` -int function()[] foo_pa = [&foo]; -int function()* foo_pp = &foo_p; -int function()[]* foo_pap = &foo_pa; -``` - -Here’s the C equivalent for comparison: - -``` -int (*foo_p)() = &foo; -int (*foo_pa[])() = {&foo}; -int (**foo_pp)() = &foo_p; -int (*(*foo_pap)[])() = &foo_pa; -``` - -It’s rare to need these complicated types, but the logic for the D declarations is much simpler. - -There’s also the `delegate` keyword, which works in exactly the same way for [“fat function pointers”][2]. - -### Arrays - -The most obvious difference from C is that D uses the “type information on the left” approach: - -``` -// int a[8]; is an error in D -int[8] a; -``` - -Another difference is in the order of indices for multidimensional arrays. E.g., this C code: - -``` -int a[4][64]; -``` - -translates to this in D: - -``` -int[64][4] a; -``` - -Here’s the rule for understanding the D ordering: - -``` -T[4] a; -static assert (is(typeof(a[0]) == T)); -``` - -If `T` represents a type, then `T[4]` is always an array of 4 `T`s. Sounds obvious, but it means that if `T` is `int[64]`, `int[64][4]` must be an array of 4 `int[64]`s. - -### `auto` - -C had `auto` as a storage class keyword since the early days, but it got mostly forgotten because it’s only allowed in the one place it’s the default, anyway. (It effectively means “this variable goes on the stack”.) C++ repurposed the keyword to enable automatic type deduction. - -You can also use `auto` with automatic type deduction in D, but it’s not actually required. Type deduction is always enabled in D; you just need to make your declaration unambiguously a type declaration. For example, these work in D (but not all in C++): - -``` -auto x1 = 42; -const x2 = 42; -static x3 = 42; -``` - -### No need for forward declarations at global scope - -This code works: - -``` -// Legal, but not required in D -// void bar(); - -void foo() -{ - bar(); -} - -void bar() -{ - // ... -} -``` - -Similarly for structs and classes. Order of definition doesn’t matter, and forward declarations aren’t required. - -Order does matter in local scope, though: - -``` -void foo() -{ - // Error! - bar(); - - void bar() - { - // ... - } -} -``` - -Either the definition of `bar()` needs to be put before its usage, or `bar()` needs a forward declaration. - -### `const()` - -The `const` keyword in C declarations can be confusing. (Think `const int *p` vs `int const *p` vs `const int const *p`.) D supports the same syntax, but also allows `const` with parentheses: - -``` -// non-constant pointer to constant int -const(int)* p1; -// constant pointer to constant int -const(int*) p2; -``` - -[`const` is transitive in D][3], anyway, and this syntax makes it much clearer. The same parenthetical syntax works with `immutable`, too. Although C-style syntax is supported by D, I always prefer the parenthetical style for a few more reasons. - -### `ref` - -`ref` is the D alternative to C++’s references. In D, `ref` doesn’t create a new type, it just controls how the instance of the type is stored in memory (i.e, it’s a storage class). C++ acts as if references are types, but references have so many special restrictions that they’re effectively like a complex version of a storage class (in Walter’s words, C++ references try to be both a floor wax and dessert topping). For example, C++ treats `int&` like a type, but forbids declaring an array of `int&`. - -As a former C++ programmer, I used to write D function arguments like this: - -``` -void foo(const ref S s); -``` - -Now I write them like this: - -``` -void foo(ref const(S) s); -``` - -The difference becomes more obvious with more complex types. Treating `ref` like a storage class ends up being cleaner because that’s the way it actually is in D. - -Currently `ref` is only supported with function arguments or `foreach` loop variables, so you can’t declare a regular local variable to be `ref`. - -### Function qualifiers - -D’s backward-compatible support for the C-style `const` keyword creates an unfortunate gotcha: - -``` -struct S -{ - // Confusing! - const int* foo() - { - // ... - } -} -``` - -`foo()` doesn’t return a `const int*`. The `const` applies to the `foo()` member function itself, meaning that it works on `const` instances of `S` and returns a (non-`const`) `int*`. To avoid that trap, I always use the D-style `const()` syntax, and write member function qualifiers on the right: - -``` -struct S -{ - const(int)* foo() - { - // ... - } - - int* bar() const - { - // ... - } -} -``` - -### Syntax ambiguities - -C++ allows initialising struct and class instances without an `=` sign: - -``` -S s(42); -``` - -This syntax famously leads to ambiguities with function declaration syntax in special cases (Scott Meyers’ “most vexing parse”). [People like Herb Sutter have written enough about it.][4] D only supports initialisation with `=`: - -``` -S s = S(42); -// Alternatively: -auto s = S(42); -``` - -C syntax has some weird corners, too. Here’s a simple one: - -``` -x*y; -``` - -That looks like a useless multiplication between two variables, but logically it could be a declaration of `y` as a pointer to a type `x`. Expression and declaration are totally different parses that depend on what the symbol `x` means in this scope. (Even worse, if it’s a declaration, then the new `y` could shadow an existing `y`, which could affect later parses.) So C compilers need to track symbols in a symbol table while parsing, which is why C has forward declarations in practice. - -D sidesteps the ambiguity by requiring a typecast to `void` if you really want to write an arithmetic expression without assigning it to anything: - -``` -int x, y; -cast(void)(x*y); -``` - -I’ve never seen useful code do that, but that rule helps D parse simply without forward declarations. - -Here’s another quirk of C syntax. Remember that C declarations work by having a basic type on the left, followed by expressions that evaluate to that type? C allows parentheses in those expressions, and doesn’t care about whitespace as long as symbols don’t run together. That means these two declarations are equivalent: - -``` -int x; -int(x); -``` - -But what if, instead of `int`, we use some symbol that might be a typedef? - -``` -int main() -{ - // Is this a declaration of x, or a function call? - t(x); -} -``` - -Just for fun, we can exploit shadowing and C’s archaic type rules: - -``` -typedef (*x)(); -main() -{ - x(x); - x(x); -} -``` - -The first line makes `x` a typedef to a function pointer type. The first `x(x);` redeclares `x` to be a function pointer variable, shadowing the typedef. The second `x(x);` is a function call that passes `x` as an argument. Yes, this code actually compiles, but it’s undefined behaviour because the function pointer is dereferenced without being initialised. - -D avoids this chaos thanks to its “all type information on the left” rule. There’s no need to put parentheses around symbols in declarations, so `x(y);` is always a function call. - --------------------------------------------------------------------------------- - -via: https://theartofmachinery.com/2020/08/18/d_declarations_for_c_programmers.html - -作者:[Simon Arneaud][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://theartofmachinery.com -[b]: https://github.com/lujun9972 -[1]: https://ddili.org/ders/d.en/index.html -[2]: https://tour.dlang.org/tour/en/basics/delegates -[3]: https://dlang.org/articles/const-faq.html#transitive-const -[4]: https://herbsutter.com/2013/05/09/gotw-1-solution/ diff --git a/sources/tech/20200825 6 open source virtualization technologies to know in 2020.md b/sources/tech/20200825 6 open source virtualization technologies to know in 2020.md deleted file mode 100644 index 445ac74641..0000000000 --- a/sources/tech/20200825 6 open source virtualization technologies to know in 2020.md +++ /dev/null @@ -1,177 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (6 open source virtualization technologies to know in 2020) -[#]: via: (https://opensource.com/article/20/8/virt-tools) -[#]: author: (Bryant Son https://opensource.com/users/brson) - -6 open source virtualization technologies to know in 2020 -====== -Run, customize, and manage your VMs with open source Virt Tools. Plus -get a glossary of key virtualization terms. -![What is virtualization][1] - -Virtualization Tools, better known as [Virt Tools][2], is a collection of six open source virtualization tools created by various contributors to make the virtualization world a better place. - -![Virt Tools website][3] - -(Bryant Son, [CC BY-SA 4.0][4]) - -Some of the tools, like KVM and QEMU, might be familiar to Linux enthusiasts, but tools like libvirt and libguestfs are probably less so. - -In case you prefer to learn through watching videos than reading, I created a [video version][5] of this article, which you can access on YouTube. - -Before walking through the tools, it's a good idea to know some essential [virtualization][6] terminology. I derived many of these definitions from Wikipedia, with pages linked in the table. - -Term | Definition ----|--- -[Virtualization][7] | In computing, virtualization refers to the act of creating a virtual (rather than physical) version of something, including virtual computer hardware platforms, storage devices, and computer network resources. -[Emulator][8] | An emulator is a hardware or software that enables one computer system (called the host) to behave like another computer system (called the guest). -[Virtual machine (VM)][9] | Also known as a "guest machine," these are emulations of real, physical hardware computers. -Hosts | In [hardware virtualization][10], a computer on which a hypervisor runs one or more VMs. -[Hypervisor][11] | This is computer software, firmware, or hardware that creates and runs a VMs. -[Kernel][12] | This is a computer program at the core of a computer's operating system with complete control over everything in the system. -[Daemon][13] | This is a computer program that runs as a background process, rather than under the direct control of an interactive user. - -This table summarizes each Virt Tool, including license information and links to each tool's website and source code. Much of this information comes from the Virt Tools website and each tool's site. - -Name | What It Is | License | Source Code ----|---|---|--- -[Kernel-based Virtual Machine (KVM)][14] | A virtualization module in the Linux kernel that allows the kernel to function as a hypervisor | GNU GPL or LGPL | [Source code][15] -[Quick Emulator (QEMU)][16] | A generic and open source machine emulator and virtualizer | GPLv2 | [Source code][17] -[Libvirt][18] | A library and daemon providing a stable, open source API for managing virtualization hosts | GNU | [Source code][19] -[Libguestfs][20] | A set of tools for accessing and modifying VM disk images | LGPL, GPL | [Source code][21] -[Virt-manager][22] | A desktop user interface for managing VMs through libvirt | GPLv2+ | [Source code][23] -[Libosinfo][24] | Provides a database of information about operating system releases to assist in optimally configuring hardware when deploying VMs | LGPLv2+ | [Source code][25] - -### Kernel-based Virtual Manager (KVM) - -![KVM website][26] - -(Bryant Son, [CC BY-SA 4.0][4]) - -KVM is a full virtualization solution for Linux on hardware containing virtualization extensions. KVM provides the hardware virtualization for a wide variety of guest operating systems, including Linux, Windows, macOS, ReactOS, and Haiku. Using KVM, you can run multiple VMs on unmodified Linux or Windows images. Each VM has private virtualized hardware: a network card, disk, graphics adapter, etc. - -Most of the time, you won't directly interact with KVM. Instead, you must use QEMU, virt-manager, or another virtualization management tool to leverage KVM. - -You can find full [documentation][27] on the KVM website, as well as access its [source code][15]. - -### Quick Emulator (QEMU) - -![QEMU website][28] - -(Bryant Son, [CC BY-SA 4.0][4]) - -QEMU is a generic, open source machine emulator and virtualizer. When used as an emulator, QEMU can run operating systems and programs made for one machine (e.g., an ARM board) on a different machine (e.g., your own x86_64 PC). When used as a virtualizer, QEMU achieves near-native performance by executing the guest code directly on the host CPU using KVM. - -QEMU is supported on multiple operating systems, and its installation process is as easy as running a few simple commands; here, you can see how to install QEMU on macOS with [Homebrew][29]. - -![QEMU macOS installation info][30] - -(Bryant Son, [CC BY-SA 4.0][4]) - -After installing, learn how to use it by reading through its [documentation][31], and you can also access its [source code][17]. - -### Libvirt - -![Libvirt website][32] - -(Bryant Son, [CC BY-SA 4.0][4]) - -Libvirt is a library and daemon that provides a stable open source API for managing virtualization hosts. It targets multiple hypervisors, including QEMU, KVM, LXC, Xen, OpenVZ, VMWare ESX, VirtualBox, and more. - -Another interesting thing about libvirt is that [KubeVirt][33], an open source project for creating and managing VMs inside the Kubernetes platform, largely utilizes Libvirt. (I'll cover KubeVirt in a future article.) Libvirt is an interesting project to explore, and you can find a plethora of information on its official [website][18] as well as download its [source code][21]. - -### Libguestfs - -![Libguestfs website][34] - -(Bryant Son, [CC BY-SA 4.0][4]) - -Libguestfs is a set of tools for accessing and modifying VM disk images. You can use it for viewing and editing files inside guests; scripting changes to VMs; monitoring disk used/free statistics; creating guests, physical to virtual (P2V), or virtual to virtual (V2V) machines; performing backups; cloning VMs; building VMs; formatting disks; resizing disks; and much more. I have been using it recently while working on a KubeVirt-based project called [OpenShift Virtualization][35], which you can learn more about in my [video tutorial][36]. - -Libguestfs' official [website][20] contains extensive documentation on how to use each command, and you can also download its [source code][21] on GitHub. - -### Virt-manager - -![Virt-manager website][37] - -(Bryant Son, [CC BY-SA 4.0][4]) - -Virt-manager is a desktop user interface for managing VMs through libvirt. It primarily targets KVM VMs but also manages Xen and LXC. It also includes the command line provisioning tool virt-install. Think of virt-manager as an easy-to-use management tool for your VMs. For example, you can use virt-manager to run a Microsoft Windows environment on a Linux workstation or vice versa. - -Virt-manager's [source code][23] is available on GitHub and [documentation][38] is on its website. At this time, virt-manager is only available for Linux platforms. - -### Libosinfo - -![Libosinfo website][39] - -(Bryant Son, [CC BY-SA 4.0][4]) - -Libosinfo provides a database of information about operating system releases to assist in configuring hardware when deploying VMs. It includes a C library for querying information in the database, which is also accessible from any language supported by GObject introspection. As you may guess, libosinfo is more of a building block to enable an operating system's functionality—but quite an important one. - -Libosinfo's [source code][25] is available on GitLab, and its [documentation][40] can be found on at its website. - -### Conclusion - -Virt-tools is a set of six powerful tools that make virtualization easier and enable important virtualization functions. All of them are open source projects, so I encourage you to explore further and maybe even contribute to them. - -What do you think? Feel free to leave a comment to share your thoughts or ask questions. - -Learn how Vagrant and Ansible can be used to provision virtual machines for web development. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/8/virt-tools - -作者:[Bryant Son][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/brson -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/what_is_virtualization.png?itok=e4WCa7N_ (What is virtualization) -[2]: https://www.virt-tools.org/ -[3]: https://opensource.com/sites/default/files/uploads/1_virttools.jpg (Virt Tools website) -[4]: https://creativecommons.org/licenses/by-sa/4.0/ -[5]: https://youtu.be/E6TBDh2RLY8 -[6]: https://www.redhat.com/en/topics/virtualization/what-is-virtualization -[7]: https://en.wikipedia.org/wiki/Virtualization -[8]: https://en.wikipedia.org/wiki/Emulator -[9]: https://en.wikipedia.org/wiki/Virtual_machine -[10]: https://en.wikipedia.org/wiki/Hardware_virtualization -[11]: https://en.wikipedia.org/wiki/Hypervisor -[12]: https://en.wikipedia.org/wiki/Kernel_%28operating_system%29 -[13]: https://en.wikipedia.org/wiki/Daemon_%28computing%29 -[14]: https://www.linux-kvm.org/page/Main_Page -[15]: https://git.kernel.org/pub/scm/virt/kvm/kvm.git -[16]: https://www.qemu.org -[17]: https://git.qemu.org/git/qemu.git -[18]: https://libvirt.org -[19]: https://libvirt.org/git/?p=libvirt.git -[20]: http://libguestfs.org/ -[21]: https://github.com/libguestfs/libguestfs -[22]: https://virt-manager.org -[23]: https://github.com/virt-manager/virt-manager -[24]: https://libosinfo.org/download/ -[25]: https://gitlab.com/libosinfo/libosinfo -[26]: https://opensource.com/sites/default/files/uploads/2_kvm.jpg (KVM website) -[27]: https://www.linux-kvm.org/page/Documents -[28]: https://opensource.com/sites/default/files/uploads/3_qemu.jpg (QEMU website) -[29]: https://opensource.com/article/20/6/homebrew-mac -[30]: https://opensource.com/sites/default/files/uploads/3_1_qemuinstall.jpg (QEMU macOS installation info) -[31]: https://www.qemu.org/documentation/ -[32]: https://opensource.com/sites/default/files/uploads/4_libvirt.jpg (Libvirt website) -[33]: https://kubevirt.io/ -[34]: https://opensource.com/sites/default/files/uploads/5_libguestfs.jpg (Libguestfs website) -[35]: https://www.openshift.com/blog/blog-openshift-virtualization-whats-new-with-virtualization-from-red-hat -[36]: https://www.youtube.com/watch?v=tWPC-YER1I0 -[37]: https://opensource.com/sites/default/files/uploads/6_virtualmanager.jpg (Virt-manager website) -[38]: https://virt-manager.org/documentation/ -[39]: https://opensource.com/sites/default/files/uploads/7_libosinfo.jpg (Libosinfo website) -[40]: https://libosinfo.org/documentation/ diff --git a/sources/tech/20200825 How to choose an affordable Linux laptop for video conferencing.md b/sources/tech/20200825 How to choose an affordable Linux laptop for video conferencing.md deleted file mode 100644 index 1f58942551..0000000000 --- a/sources/tech/20200825 How to choose an affordable Linux laptop for video conferencing.md +++ /dev/null @@ -1,75 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (How to choose an affordable Linux laptop for video conferencing) -[#]: via: (https://opensource.com/article/20/8/linux-laptop-video-conferencing) -[#]: author: (Alan Formy-Duval https://opensource.com/users/alanfdoss) - -How to choose an affordable Linux laptop for video conferencing -====== -Open source can give pre-owned computers the necessary boost to make -them useful with today's popular video conferencing tools. -![Two people chatting via a video conference app][1] - -As more and more activities move online during the global pandemic, an increasing number of folks are looking for affordable and stable solutions to connect to their doctor, therapist, bank, college, and more. Many of the folks I've been working with are on limited incomes, and they're eager for any technical help they can get. - -Whether they're on a proprietary video conferencing solution or using an [open source one like Jitsi Meet][2], everyone needs a platform that's robust enough to support their needs without breaking the budget. One of the leading cloud video conferencing providers [recommends][3] that platforms should have at least an i3 processor or equivalent with a minimum of 4GB RAM. My experience has taught me that an i5 or equivalent and at least 4-8GB RAM is even better. - -I also recommend Linux for running meeting solutions. You could go out and purchase a new Linux computer. However, if you're on a limited income, then plunking down $1000 or more for a new system might not be what you had in mind. - -A more budget-friendly solution I recently put together for a friend was a 2015 MacBook Air running Elementary OS. The computer had 4GB RAM, an i5 processor, and 240GB NVMe solid-state drive. Elementary OS was a great choice for this computer, as it came with a Broadcom 4360 wireless card, which didn't play nice with other Linux distributions but was detected by Elementary. The FaceTime camera didn't work with any Linux distribution I tried, Elementary included, and no one seems to have a good solution, so I purchased a USB camera and connected it to the laptop. This fellow needed to use Zoom to connect to his church, so I downloaded the [Zoom client][4] for Linux and installed it. The software download supports .rpm, .deb, and [Flatpak][5]. - -In another case, I purchased a refurbished PC laptop from a prominent vendor. It came with 8GB RAM, i5, webcam, and 256 SSD drive. I'm going to install either Fedora or Pop!_OS on it along with the Zoom client and the usual complement of free software, including LibreOffice, Calibre, ClamAV, Gnu Chess, and other games for my friend to explore. - -### Used laptops for Linux - -When looking for a used laptop, I usually consider the reputation of the brand. I check for the same or similar models and their compatibility with Linux. Both [Fedora][6] and [Ubuntu][7] maintain lists of acceptable hardware platforms. If possible, I try to get a list of the included hardware. For example, what is the CPU model and speed? Does the unit have Bluetooth built-in? How many USB ports does it have? Does it have audio ports? Does it support Thunderbolt? Does it have built-in WiFi, and what is the chipset of the WiFi adapter? I have had good luck with Intel, Broadcom, and Realtek, though the list varies depending on your particular needs. - -There are many sources of good used laptops and desktops, but my favorites are eBay, [Dell Refurbished][8], and [PC Liquidations][9]. I look for units that are three to five years old, that are in good condition, and that have at least an Intel i3 or AMD FX-6300, or better, processor. CPU speed and at least 4 GB RAM are important if you are going to be using your Linux laptop or desktop for video conferencing. Check to make sure the unit you purchase has a power supply. It's handy to have a webcam, but that's not a dealbreaker because you can use a USB camera. I have had good experiences with Logitech web cameras. - -### Refurbishing computers - -When refurbishing older laptops or desktop computers, you'll often find older system components such as a mechanical hard drive or WiFi card that doesn't support the latest wireless technology. These can usually be remedied with a small amount of effort and a minimal budget. For instance, replacing an old hard drive with a solid-state drive (SSD) will usually provide an immediate performance boost. You can also purchase newer WiFi + Bluetooth cards. Most likely, the form factor on a laptop will be Mini PCI but do your research to be sure. This allows you to choose a brand and chipset that might be better supported by Linux. RAM can also be increased. 4GB is definitely my minimum, but I'd much rather have 8GB. I also like to install the latest BIOS, if it is available from the respective vendor, in order to have the latest fixes and features. - -A lot of this advice also applies to desktop systems. You'll generally have more flexibility with these since there are more card slots and other connectors for peripherals. For instance, an older system may not support new technology such as Bluetooth, WiFi, or USB3. Add-in PCI or PCIe cards can be installed to provide this support. - -### Choosing a Linux distribution for an old computer - -The last piece of the puzzle is choosing a Linux distribution for your rescued computer. There are many distributions out there, and though they do like to highlight their own unique spin on providing a [Linux desktop][10], at the end of the day, they're all Linux. When it comes to installing Linux on an old computer, the best one is the one that works on the computer you have. - -The key is to step through the install process (it's not much more complex than installing an office application or a new web browser) and then see how your computer responds when you reboot it. If you get a desktop to come up and you can open and run basic applications, then you're on the right track. - -Once you're satisfied that you have a working computer with a desktop and access to the Internet, give your usual video conferencing application a try. If it fails, try a lightweight Linux distribution in hopes that using fewer resources for your OS can solve any video issues. - -Also, if your camera is HiDef (high definition or HD), then try setting it to broadcast at a lower resolution. Sometimes this can improve your system's performance because you're sending less data over what's probably an old network card with a limited capacity. - -I recommend trying [Elementary OS][11] or [Fedora Linux][12] for recent computers. For very old computers, try [Peppermint OS][13], which is specifically designed for computers without many resources. The great news is there are multiple ways to use open source solutions to turn your old machine into a modern communication platform. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/8/linux-laptop-video-conferencing - -作者:[Alan Formy-Duval][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/alanfdoss -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/chat_video_conference_talk_team.png?itok=t2_7fEH0 (Two people chatting via a video conference app) -[2]: https://opensource.com/article/20/5/open-source-video-conferencing -[3]: https://support.zoom.us/hc/en-us/articles/201362023-System-requirements-for-Windows-macOS-and-Linux -[4]: https://zoom.us/download -[5]: https://flathub.org/apps/details/us.zoom.Zoom -[6]: https://docs.fedoraproject.org/en-US/fedora/rawhide/release-notes/welcome/Hardware_Overview/ -[7]: https://certification.ubuntu.com/ -[8]: https://www.dellrefurbished.com/laptops -[9]: https://www.pcliquidations.com/ -[10]: https://opensource.com/article/20/5/linux-desktops -[11]: https://elementary.io/ -[12]: http://getfedora.org/ -[13]: https://peppermintos.com/ diff --git a/sources/tech/20200829 5 open source activities for kids to try this weekend.md b/sources/tech/20200829 5 open source activities for kids to try this weekend.md deleted file mode 100644 index a6cb0f4cb5..0000000000 --- a/sources/tech/20200829 5 open source activities for kids to try this weekend.md +++ /dev/null @@ -1,65 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (5 open source activities for kids to try this weekend) -[#]: via: (https://opensource.com/article/20/8/open-source-kids) -[#]: author: (Lauren Pritchett https://opensource.com/users/lauren-pritchett) - -5 open source activities for kids to try this weekend -====== -These open source boredom busters will keep kids of all ages busy having -fun. -![Family learning and reading together at night in a room][1] - -During the last six months or so, my family and I have enjoyed a slower pace of life. With few museums and parks open, we’ve stayed safer at home together or going on outdoor excursions. My young children are pretty good at creating their imaginary worlds where they could play for hours. I think they are adapting to this new normal better than I am to tell you the truth. However, there will be weekends when we have all run out of ideas. Luckily, Opensource.com is chock full of boredom-busters for kids of all ages. In this article, I rounded up a few of our more recent open source activities for kids.  - -## [Create coloring book pages with Jupyter][2] - -My toddler uses crayons, markers, pencils, or any other writing utensil available on every sheet of paper in the house. Being surrounded by original artwork is fabulous, but he is running out of coloring page designs! With Jupyter, you can have an endless supply of coloring sheets at the ready for kids. Browse Creative Commons for images and use the magic of Python and Jupyter to turn them into one-of-a-kind coloring pages. - -## [Go to an open source scavenger hunt][3] - -When I was a kid, my brother and I each had a massive map of the United States on our bedroom wall. Each time we visited a new state, we highlighted it on our map. Since he is a few years older than me, I was continually playing catch-up, but eventually we evened the tally. This early exposure cultivated a lifelong interest in maps for both of us. These days, we can access and contribute to maps right from the palm of our hands with OpenStreetMap. The StreetComplete mobile app makes it possible to find and complete quests the whole family can enjoy together. Go on a scavenger hunt while helping out your community! - -## [Build a video game to learn Python][4] - -Seasoned educators know that the best way to teach a new subject is to turn it into a game. Author [Moshe Zadka][5] is one of those educators. He designed a Jupyter Notebook to teach people Python by making an interactive game. With Python and Git installed on your computer, you and your child can follow the steps in his tutorial. By the end, you will be having so much fun playing a penguin video game!  - -**[Read next: [Programmable tanks and Raspberry Pi: Try these kid tech projects][6]]** - -## [Experiment with open source robotics][7] - -Last fall, author [Jess Weichler][8] shared a list of her favorite maker gifts for kids and teens. It featured [Hummingbird][9], an open source robotics kit ideal for kids ages eight and up. Since it supports several popular programming languages, kids can have fun practicing their coding skills. Hummingbird is compatible with Linux, Windows, Mac, Chromebook, Android, and iOS. - -## [Play with virtual LEGOs][10] - -Have you ever stepped on a rogue LEGO brick? It’s a pain one never forgets. I love watching my daughter build cars, ice cream stands, and castles with her LEGO bricks. Our household’s cardinal rule is to keep LEGO bricks off the floor. This is easier said than done! Playing with virtual LEGOs is a much safer route to take. [Seth Kenlon’s][11] tutorial walks LEGO lovers through using open source tools to build and play with virtual bricks. - -How have you been keeping yourself and the young people around you entertained? Share your ideas in the comments. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/8/open-source-kids - -作者:[Lauren Pritchett][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/lauren-pritchett -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/family_learning_kids_night_reading.png?itok=6K7sJVb1 (Family learning and reading together at night in a room) -[2]: https://opensource.com/article/20/8/edit-images-python -[3]: https://opensource.com/article/20/1/streetcomplete-crowdsource-maps -[4]: https://opensource.com/article/20/5/python-games -[5]: https://opensource.com/users/moshez -[6]: https://enterprisersproject.com/article/2020/7/raspberry-pi-tech-projects-kids -[7]: https://opensource.com/article/19/11/maker-gifts-kids -[8]: https://opensource.com/users/cyanide-cupcake -[9]: https://www.birdbraintechnologies.com/hummingbirdbit/ -[10]: https://opensource.com/article/20/6/open-source-virtual-lego -[11]: https://opensource.com/users/seth diff --git a/sources/tech/20200831 Tune up your sound with PulseEffects- Microphones.md b/sources/tech/20200831 Tune up your sound with PulseEffects- Microphones.md deleted file mode 100644 index a700b13747..0000000000 --- a/sources/tech/20200831 Tune up your sound with PulseEffects- Microphones.md +++ /dev/null @@ -1,90 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Tune up your sound with PulseEffects: Microphones) -[#]: via: (https://fedoramagazine.org/tune-up-your-sound-with-pulseeffects-microphones/) -[#]: author: (Paul W. Frields https://fedoramagazine.org/author/pfrields/) - -Tune up your sound with PulseEffects: Microphones -====== - -![][1] - -The PulseEffects [app][2] is a full-featured set of modular effects you can use to adjust sound devices. In a [previous article][3], you learned how you can use PulseEffects to correct or enhance output devices like speakers. However, that’s not where its features stop. You can also enhance sound input devices such as microphones. This can help when recording sound for podcasts, videos, or the like. - -This article assumes you’ve already installed PulseEffects as shown in the [previous article][3]. It will not cover advanced topics like recording musical instruments, but it will show you how to do better voice or spoken-word recordings. - -### A word on microphones - -Microphones come in a variety of forms. The one almost every laptop user has at hand is the condenser microphone built into the hardware. These microphones are limited in terms of producing quality sound. They’re built to provide basic sound, and they will pick up a lot of environmental noise due to how they work. If you want better results for a voice recording, there are many choices available based on budget. - - * USB headset with built-in condenser microphone: Generally [budget-friendly][4] and almost always gives better results than a laptop’s built-in mic. The resulting sound can be somewhat harsh and tinny, but this can be corrected. Manufacturers such as Logitech make units that are plug-and-play ready for Linux. They show up as USB sound devices (both input and output). - * Handheld dynamic microphone: You’ll see the singer in a live band using one of these. You have to be close to them (and maintain that distance steadily) for best results, but they sound full and well-defined. These are typically [a little more expensive][5] than a USB headset. - * Large diaphragm condenser microphone: You’ll see this type used by a singer or speaker in a broadcast or recording studio. Like other condensers they pick up a lot of the surrounding environment. By being fairly close to the mic you can essentially “turn down” the rest of the room. You can find budget friendly, good quality large condensers [starting at the same price][6] as a good dynamic mic. Prices go up from there to astronomical levels! - - - -Most dynamic and large diaphragm condenser mics need to be plugged into a _digital audio interface_, using a microphone cable. This converts the signal from the mic into digital audio for the computer to use. However, you can find specialty mics made for direct connection via USB. These may be advertised as “podcaster mics,” and you can [save some money][7] using one of these, versus buying both a mic and an interface. - -### Making the mic sound better - -Effects help you improve the recorded sound of your microphone. Whether you know it or not, you hear these effects all the time in recorded sound — in music, in TV shows and movies, on professional podcasts, and via commercial and satellite radio. Engineers apply these effects using either hardware units, or via software. - -PulseEffects provides these effects in a software form, before your recording is saved on disk. Here is a list, in the order they are usually applied: - - * A _gate_ reduces or entirely mutes the microphone when sound falls below a certain level. With proper settings, when you start speaking, the gate quickly opens, unmuting the mic. When you finish, the gate closes and other environmental sound will be either silenced or much quieter. - * A _compressor_ reduces the dynamic range of the input. Louder sounds are caught by the compressor and squashed down. You then turn the entire signal up slightly to compensate. This way, quieter and louder sounds become closer in volume, making the sound more even and less “peaky.” This results in a more professional, polished sound that’s much more enjoyable for listeners. - * An _equalizer_ (EQ) tunes up the sound of the voice. Use it to mitigate tones in your voice that you find unflattering. In addition, when you speak close to a mic, the bass frequencies in the voice are unnaturally emphasized. Sound engineers call this the _proximity effect_. By using an EQ to roll off the low end frequencies, you can reduce this effect and create a more pleasant sound. - * A _limiter_ is often the last step in a signal chain. This effect puts an absolute limit on the volume of a sound, so that unexpectedly hard sounds (such as _p_ or _b_ sounds, called _plosives_) that aren’t caught by compression don’t distort and ruin your recording. - - - -### Dive into PulseEffects - -Open up the _PulseEffects_ app. In the top left corner, choose the microphone selector icon. This lets you set up the effects chain you want for the mic as an input device. As with output devices (speakers), you can save your effects chain as well. - -Use recording software that registers as a PulseAudio client to see your effects at work. The _PulseCaster_ app is one such app, but there are many others you can choose. - -### Tips from a mix engineer - -These guidelines may help you find the optimal sound. Remember that no two sound situations are ever the same. Use your ears, and do some test recordings, to figure out what’s best for your situation. - - * When you apply the gate, use a fast response of 5-10ms. The human voice has a significant “startup time,” so this speed makes the gate unnoticeable. Give the gate some time to close, though, so you don’t cut off the end of speech. Typically 100-200ms sounds fairly natural. A gain reduction of -12 or -18dB suffices to reduce environmental noise, and sounds more natural than more extreme values. - * If you find a module is overloading when you speak, either reduce the output of the effects module before it, or the input of the module itself. - * If you like the sound of your recorded voice without an EQ, use the _Filter_ module instead to simply apply a high pass filter. For male voices, use a roll-off frequency of 80-100 Hz. For female voices, use a higher value. If you set the filter too high, the recording may sound weak or nasal. - * Use a compressor ratio between 3 and 4 (this is actually 3:1 – 4:1) which works well with a human voice. An attack of 20ms and a release of 100-200ms is typical. - * You may want to try the _Deesser_ module as well, to reduce the “sizzling” of _s_, _z_, _t_, and _f_ sounds. Because voices vary so widely, you’ll need to tune this to taste. A split of 6kHz and a threshold of -18dB is a good place to start. - * A limiter setting of -1 to -3dB usually works well. Much lower settings result in a very “squashed” sounding track. In some cases that may be useful; in others it will sound unnatural. - - - -Refer to the previous article to save your effects chain. Remember, you can store multiple chains, and then select the one you want for your particular needs. - -* * * - -_Photo by [Jacek Dylag][8] on [Unsplash][9]_. - --------------------------------------------------------------------------------- - -via: https://fedoramagazine.org/tune-up-your-sound-with-pulseeffects-microphones/ - -作者:[Paul W. Frields][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://fedoramagazine.org/author/pfrields/ -[b]: https://github.com/lujun9972 -[1]: https://fedoramagazine.org/wp-content/uploads/2020/08/pulseeffects-2-816x345.jpg -[2]: https://flathub.org/apps/details/com.github.wwmm.pulseeffects -[3]: https://fedoramagazine.org/tune-up-your-sound-with-pulseeffects-speakers/ -[4]: https://www.google.com/search?q=usb+headset+with+mic&tbm=shop -[5]: https://www.google.com/search?tbm=shop&q=handheld+dynamic+microphone -[6]: https://www.google.com/search?tbm=shop&q=large+condenser+microphone -[7]: https://www.google.com/search?tbm=shop&q=usb+microphone -[8]: https://unsplash.com/@dylu?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText -[9]: https://unsplash.com/s/photos/microphone?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText diff --git a/sources/tech/20200901 Developing an email alert system using a surveillance camera with Node-RED and TensorFlow.js.md b/sources/tech/20200901 Developing an email alert system using a surveillance camera with Node-RED and TensorFlow.js.md deleted file mode 100644 index 3733bab543..0000000000 --- a/sources/tech/20200901 Developing an email alert system using a surveillance camera with Node-RED and TensorFlow.js.md +++ /dev/null @@ -1,179 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Developing an email alert system using a surveillance camera with Node-RED and TensorFlow.js) -[#]: via: (https://www.linux.com/news/developing-an-email-alert-system-using-a-surveillance-camera-with-node-red-and-tensorflow-js/) -[#]: author: (Linux.com Editorial Staff https://www.linux.com/author/linuxdotcom/) - -Developing an email alert system using a surveillance camera with Node-RED and TensorFlow.js -====== - -## **Overview** - -In a previous article, we introduced [a procedure for developing an image recognition flow using Node-RED and TensorFlow.js.][1] Now, let’s apply those learnings from what we have done and develop an e-mail alert system that uses a surveillance camera together with image recognition. As shown in the following image, we will create a flow that automatically sends an email alert when a suspicious person is captured within a surveillance camera frame. - -![][2] - -## **Objective: Develop flow** - -In this flow, the image of the surveillance camera is periodically acquired from the webserver, and the image is displayed under the **“Original image”** node in the lower left. After that, the image is recognized using the **TensorFlow.js** node. The recognition result and the image with recognition results are displayed under the **debug** tab and the **“image with annotation”** node, respectively. - -![][3] - -If a person is detected by image recognition, an alert mail with the image file attached will be sent using the **SendGrid** node.  Since it is difficult to set up a real surveillance camera, we will use a sample [image sent by a surveillance camera in Kanagawa Prefecture of Japan][4]  to check the amount of water in the river. - -We will explain the procedure for creating this flow in the following sections. For the Node-RED environment, use your local PC, a Raspberry Pi, or a cloud-based deployment. - -## **Install the required nodes** - -Click the hamburger menu on the top right of the Node-RED flow editor, go to **“Manage palette” -> “Palette” tab -> “Install”** tab, and install the following nodes. - - * –[node-red-contrib-tensorflow][5]: Image recognition node using TensorFlow.js - * –[node-red-contrib-image-output][6]: Nodes that display images on the Flow Editor - * –[node-red-contrib-sendgrid][7]: Nodes that send mail using SendGrid - - - -## **Create a flow of acquiring image data** - -First, create a flow that acquires the image binary data from the webserver. As in the flow below, place an inject node (the name will be changed to **“timestamp”** when placed in the workspace), **http request** node, and **image preview** node, and connect them with wires in the user interface. - -![][8] - -Then double-click the **http request** node to change the node property settings. - -## **Adjust** _**http request**_ **node property settings** - -  - -Paste the URL of the surveillance camera image to the URL on the property setting screen of the **http request** node. (In Google Chrome, when you right-click on the image and select **“Copy image address”** from the menu, the URL of the image is copied to the clipboard.) Also, select **“a binary buffer”** as the output format. - -![][9] - -## **Execute the flow to acquire image data** - -Click the **Deploy** button at the top right of the flow editor, then click the button to the **inject** node’s left. Then, the message is sent from the **inject** node to the **http request** node through the wire, and the image is acquired from the web server that provides the image of the surveillance camera. After receiving the image data, a message containing the data in binary format is sent to the **image preview** node, and the image is displayed under the **image preview** node. - -![][10] - - An image of the river taken by the surveillance camera is displayed in the lower right. - -## **Create a flow for image recognition of the acquired image data** - -Next, create a flow that analyzes what is in the acquired image. Place a **cocossd** node, a **debug** node (the name will be changed to **msg.payload** when you place it), and a second **image preview** node. - -Then, connect the **output termina**l on the right side of the **http request** node, and the **input terminal** on the left side of the **cocossd** node. - -Next, connect the **output terminal** on the right side of the **cocossd** node and the debug node, the **output terminal** on the right side of the **cocossd** node, and the **input terminal** on the left side of the **image preview** node with the respective wires. - -Through the wire, the binary data of the surveillance camera image is sent to the **cocossd** node, and after the image recognition is performed using **TensorFlow.js,** the object name is displayed in the **debug** node, and the image with the image recognition result is displayed in the **image preview** node.  - -![][11] - -The **cocossd** node is designed to store the object name in the variable **msg.payload**, and the binary data of the image with the annotation in the variable **msg.annotatedInput**.  - -To make this flow work as intended, you need to double-click the **image preview** node used to display the image and change the node property settings. - -## **Adjust** _**image preview**_ **node property settings** - -By default, the **image preview** node displays the image data stored in the variable **msg.payload**. Here, change this default variable to **msg.annotatedInput**. - -![][12] - -## **Adjust** _**inject**_ **node property settings** - -Since the flow is run regularly every minute, the **inject** node’s property needs to be changed. In the **Repeat** pull-down menu, select **“interval”** and set **“1 minute”** as the time interval. Also, since we want to start the periodic run process immediately after pressing the **Deploy** button, select the checkbox on the left side of **“inject once after 0.1 seconds”.** - -![][13] - -## **Run the flow for image recognition** - -The flow process will be run immediately after pressing the **Deploy** button. When the person (author) is shown on the surveillance camera, the image recognition result **“person”** is displayed in the debug tab on the right. Also, below the **image preview** node, you will see the image annotated with an orange square. - -![][14] - -## **Create a flow of sending an email when a person caught in the surveillance camera** - -Finally, create a flow to send the annotated image by email when the object name in the image recognition result is **“person”**. As a subsequent node of the **cocossd** node, place a **switch** node that performs condition determination, a **change** node that assigns values, and a **sendgrid** node that sends an email, and connect each node with a wire. - -![][15] - -Then, change the property settings for each node, as detailed in the sections below. - -## **Adjust the** _**switch**_ **node property settings** - -Set the rule to execute the subsequent flow only if **msg.payload** contains the string **“person” ** - -To set that rule, enter **“person”** in the comparison string for the condition **“==”** (on the right side of the **“az”** UX element in the property settings dialog for the switch node). - -![][16] - -## **Adjust the** _**change**_ **node property settings** - -To attach the image with annotation to the email, substitute the image data stored in the variable **msg.annotatedInput** to the variable **msg.payload**. First, open the pull-down menu of **“az”** on the right side of the UX element of **“Target value”** and select **“msg.”**. Then enter **“annotatedInput”** in the text area on the right. - -![][17] - -If you forget to change to **“msg.”** in the pull-down menu that appears when you click **“az”,** the flow often does not work well, so check again to be sure that it is set to **“msg.”**. - -## **Adjust the** _**sendgrid**_ **node property settings** - -Set the API key from the [SendGrid management screen][18]. And then input the sender email address and recipient email address. - -![][19] - -Finally, to make it easier to see what each node is doing, open each node’s node properties, and set the appropriate name. - -## **Validate the operation of the flow to send an email when the surveillance camera captures a person in frame** - -When a person is captured in the image of the surveillance camera, the image recognition result is displayed in the debug tab the same as in the previous flow of confirmation and the orange frame is displayed in the image under the **image preview** node of **“Image with annotation”**. You can see that the person is recognized correctly. - -![][20] - -After that, if the judgment process, the substitution process, and the email transmission process works as designed, you will receive an email with the image file with the annotation attached to your smartphone as follows: - -![][21] - -## **Conclusion** - -By using the flow created in this article, you can also build a simple security system for your own garden using a camera connected to a Raspberry Pi. At a larger scale, image recognition can also be run on image data acquired using network cameras that support protocols such as [ONVIF][22]. - -*About the author: Kazuhito Yokoi is an Engineer at Hitachi’s OSS Solution Center, located in Yokohama, Japan. * - --------------------------------------------------------------------------------- - -via: https://www.linux.com/news/developing-an-email-alert-system-using-a-surveillance-camera-with-node-red-and-tensorflow-js/ - -作者:[Linux.com Editorial Staff][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://www.linux.com/author/linuxdotcom/ -[b]: https://github.com/lujun9972 -[1]: https://www.linux.com/news/using-tensorflow-js-and-node-red-with-image-recognition-applications/ -[2]: https://www.linux.com/wp-content/uploads/2020/09/tensor1.png -[3]: https://www.linux.com/wp-content/uploads/2020/09/tensor2.png -[4]: http://www.pref.kanagawa.jp/sys/suibou/web_general/suibou_joho/html/camera/past0/p20102_0_6.html -[5]: https://flows.nodered.org/node/node-red-contrib-tensorflow -[6]: https://flows.nodered.org/node/node-red-contrib-image-output -[7]: https://flows.nodered.org/node/node-red-contrib-sendgrid -[8]: https://www.linux.com/wp-content/uploads/2020/09/tensor3.png -[9]: https://www.linux.com/wp-content/uploads/2020/09/tensor4.png -[10]: https://www.linux.com/wp-content/uploads/2020/09/tensor5.png -[11]: https://www.linux.com/wp-content/uploads/2020/09/tensor6.png -[12]: https://www.linux.com/wp-content/uploads/2020/09/tensor7.png -[13]: https://www.linux.com/wp-content/uploads/2020/09/tensor8.png -[14]: https://www.linux.com/wp-content/uploads/2020/09/tensor9.png -[15]: https://www.linux.com/wp-content/uploads/2020/09/tensor10.png -[16]: https://www.linux.com/wp-content/uploads/2020/09/tensor11.png -[17]: https://www.linux.com/wp-content/uploads/2020/09/tensor12.png -[18]: https://sendgrid.com/ -[19]: https://www.linux.com/wp-content/uploads/2020/09/tensor13.png -[20]: https://www.linux.com/wp-content/uploads/2020/09/tensor14.png -[21]: https://www.linux.com/wp-content/uploads/2020/09/tensor15.png -[22]: https://www.onvif.org/ diff --git a/sources/tech/20200901 How to Set Up Facial Recognition to Sign into Ubuntu and Other Linux Distributions.md b/sources/tech/20200901 How to Set Up Facial Recognition to Sign into Ubuntu and Other Linux Distributions.md deleted file mode 100644 index 2d953732e0..0000000000 --- a/sources/tech/20200901 How to Set Up Facial Recognition to Sign into Ubuntu and Other Linux Distributions.md +++ /dev/null @@ -1,249 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (How to Set Up Facial Recognition to Sign into Ubuntu and Other Linux Distributions) -[#]: via: (https://itsfoss.com/face-unlock-ubuntu/) -[#]: author: (Abhishek Prakash https://itsfoss.com/author/abhishek/) - -How to Set Up Facial Recognition to Sign into Ubuntu and Other Linux Distributions -====== - -Despite all the concern, facial recognition is getting popular among consumers. Most recent Android and iOS devices have the feature to unlock the device with facial authentication. - -Once you get used to the face unlock or fingerprint unlock, typing password feels like a tedious, boring task. - -On Windows operating system, Microsoft provides the [Windows Hello][1] that allows instant authentication based on your face. - -On Linux, face unlock is not a built-in feature. No Linux distribution, as far as I know, provides face unlock feature out of the box. - -But as the saying goes, there is a shell, there is a way. In Linux, you’ll often find alternative things and tools that you can configure for a certain task. Remember the tutorial I wrote for [sharing mouse and keyboard between Linux and Raspberry Pi devices][2]? - -In this tutorial, I’ll show you how to set up face unlock in Ubuntu. You can use the tutorial for other Linux distributions as well. - -You need to be comfortable with the terminal and Linux commands because you’ll be using Linux command line tool. - -### Howdy: A Windows Hello Styled Facial Recognition Authentication System for Linux - -![][3] - -[Howdy][4] is an open source software that gives you the ability to login to your Linux system with face recognition. Consider it an open source Windows Hello alternative for Linux. Here, your data is stored locally on your computer. - -Howdy uses the built-in IR emitters and webcam combination to recognize your face. It is built using [OpenCV][5] and Python. - -Howdy uses the PAM authentication system which means not only you can login to your system with your face, you can also use it for sudo, su and in most other situations where you need to use your account password. However, in my testing, it could not unlock the [keyring in Ubuntu][6]. - -In this tutorial, I’ll show you how to install Howdy and how to set it up for facial recognition. The process is not too complicated but you should not be too uncomfortable using the terminal here. - -### Installing Howdy on Ubuntu and other Linux distributions - -The developer of [Howdy provides a handy PPA][7] that makes installing Howdy easier to install on Ubuntu-based distributions. - -Open a terminal and use the following commands on Ubuntu: - -``` -sudo add-apt-repository ppa:boltgolt/howdy -sudo apt update -sudo apt install howdy -``` - -Howdy is a big software and it installs a huge number of software libraries. For me, it showed around 140 MB of download size and 600 MB of disk size requirement after installation. - -During the installation, it asks you to choose from Fast, Balanced and Secure authentication type. I chose Balanced at this step because I don’t want to wait too long but don’t want it to be less secure as well. - -![][8] - -During the installation, it complains about adding **/usr/local/bin** in the PATH but for me it was already there. You may verify it for your system. - -#### Installing Howdy on other Linux distributions - -For Debian, you can [download the DEB file][9]. Arch/Manjaro users can install it from [AUR][10]. - -Fedora users have the option to [use COPR repository][11]: - -``` -sudo dnf copr enable luya/howdy -sudo dnf install howdy -``` - -openSUSE users can find the installation instructions [here][12]. - -As the last resort, you can get the source code on [its GitHub repository][4]. - -Since I am using Ubuntu 20.04 in this tutorial, some steps may use apt command but I believe you can use your distribution’s package manager in those steps. - -### Setting up face unlock on Ubuntu and other Linux with Howdy - -Let’s see how to set it up for facial recognition. - -#### Change config file - -Before you use Howdy, you should change the configuration file to specify your webcam device. - -On most Linux systems, /dev/video0 should be the device for webcam but you should make sure of it using v4l2-ctl command. - -Install v4l-utils first: - -``` -sudo apt install v4l-utils -``` - -Now use the v4l2-ctl command to list your devices - -``` -[email protected]:~$ v4l2-ctl --list-devices -Integrated_Webcam_HD: Integrate (usb-0000:00:14.0-5): - /dev/video0 - /dev/video1 -``` - -Why two (or more) video devices? You’ll have to check the capabilities of the device. The device should have Video Capture capability, not just Metadata Capture. - -You can check it with a command like v4l2-ctl –device=/dev/video0 –all and then look under the capability section. Most of the time, it should be the first device i.e. /dev/video0. - -Now, you need to set the device path in the Howdy config. You can do that by manually opening the **/lib/security/howdy/config.ini** file for editing or use the command below to open the config file for edit in your default terminal-based text editor: - -``` -sudo howdy config -``` - -Look for the line starting with device_path. Change its value to /dev/video0 or whatever is the path for your webcam device. - -![][13] - -Save and exit the file. You are ready to go now. - -#### Add your face for facial recognition - -Howdy is a command line tool. You have to do everything in the terminal. - -Now that you have the correct device path set, it is time to add some face in its database for the recognition. - -Use the following command to associate a face to the currently logged in user i.e. you. - -``` -sudo howdy add -``` - -It doesn’t show how your face looks like by opening a camera so you should look into the webcam to get your face captured properly. - -It will ask you to add an identifier to the face. You can name it anything you want. I used terms like glasses, with-headphones etc. - -![][14] - -I suggest adding a few more variants of your face specially if you wear glasses. Just run the sudo howdy add command each time you want to add a face. - -Howdy is ready to use as soon as you add a face. To test it, open a new terminal and run a command with sudo. You’ll notice that your webcam blinks and it tries to detect a face. If the face is not recognized, it will show an error message and ask you to use your password. - -![][15] - -To add a face for some other user, you should provide the username as well: - -``` -sudo howdy -U username add -``` - -You don’t need to worry about starting Howdy after reboot. Howdy starts automatically at each boot. - -#### List all the known face models for a user - -You can see what face models are associated to a user with the `list` option. If you don’t specify the username, it shows the output for the current user. - -``` -sudo howdy list -``` - -![][16] - -#### Clear some or all face models - -When you list all the face models for a user, you can use the remove option to delete a certain face model. You’ll have to provide the ID of the face model, not the label. - -``` -sudo howdy remove face_ID -``` - -![][17] - -You can remove all the face models with the following command: - -``` -sudo howdy clear -``` - -#### Disable and re-enable Howdy - -You can temporarily disable Howdy using this command: - -``` -sudo howdy disable 1 -``` - -You can re-enable it using the same disable option but with 0 as argument: - -``` -sudo howdy disable 0 -``` - -### Removing Howdy from your system - -You can use your distribution’s package manager to remove Howdy. - -On Ubuntu, use the following command: - -``` -sudo apt remove howdy -``` - -You should also [delete the PPA][18]: - -``` -sudo add-apt-repository -r ppa:boltgolt/howdy -``` - -For other distributions, use the uninstallation method that corresponds to the installation method you used. - -### Conclusion - -It’s fun to setup face unlock on Linux. I think this could provide base for [some good Raspberry Pi projects][19]. It’s a fun weekend exercise to do a thing like this. - -However, I won’t recommend setting up it on critical infrastructure or servers. [Facial recognition is not very secure][20]. - -Using face unlock on your personal Linux system is one thing but please don’t use it on servers or work machines. - -I hope you liked this DIY (if I may call it) tutorial. Let me know if you would like to see more such tutorials on It’s FOSS in the future. - --------------------------------------------------------------------------------- - -via: https://itsfoss.com/face-unlock-ubuntu/ - -作者:[Abhishek Prakash][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://itsfoss.com/author/abhishek/ -[b]: https://github.com/lujun9972 -[1]: https://support.microsoft.com/en-in/help/4028017/windows-learn-about-windows-hello-and-set-it-up -[2]: https://itsfoss.com/keyboard-mouse-sharing-between-computers/ -[3]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/08/Face-Unlock-in-Linux.png?resize=800%2C450&ssl=1 -[4]: https://github.com/boltgolt/howdy -[5]: https://opencv.org/ -[6]: https://itsfoss.com/ubuntu-keyring/ -[7]: https://launchpad.net/~boltgolt/+archive/ubuntu/howdy -[8]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/08/select-face-unlock-level-ubuntu.png?resize=800%2C520&ssl=1 -[9]: https://github.com/boltgolt/howdy/releases -[10]: https://itsfoss.com/aur-arch-linux/ -[11]: https://copr.fedorainfracloud.org/coprs/luya/howdy/ -[12]: https://en.opensuse.org/SDB:Facial_authentication -[13]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/08/setup-howdy-for-face-unlock-in-ubuntu.png?resize=794%2C511&ssl=1 -[14]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/08/add-new-face-for-facial-recognition-linux.png?resize=799%2C225&ssl=1 -[15]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/08/use-sudo-with-face-unlock.png?resize=800%2C252&ssl=1 -[16]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/08/howdy-list-face-models.png?resize=729%2C381&ssl=1 -[17]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/08/remove-face-model-linux.png?resize=729%2C381&ssl=1 -[18]: https://itsfoss.com/how-to-remove-or-delete-ppas-quick-tip/ -[19]: https://itsfoss.com/raspberry-pi-projects/ -[20]: https://securitytoday.com/articles/2019/03/01/the-flaws-and-dangers-of-facial-recognition.aspx diff --git a/sources/tech/20200904 Managing a non-profit organization-s supply chain with Groovy.md b/sources/tech/20200904 Managing a non-profit organization-s supply chain with Groovy.md deleted file mode 100644 index e715dc47d5..0000000000 --- a/sources/tech/20200904 Managing a non-profit organization-s supply chain with Groovy.md +++ /dev/null @@ -1,229 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Managing a non-profit organization's supply chain with Groovy) -[#]: via: (https://opensource.com/article/20/9/groovy) -[#]: author: (Chris Hermansen https://opensource.com/users/clhermansen) - -Managing a non-profit organization's supply chain with Groovy -====== -Let's use Groovy to solve a charity's distribution problem. -![Jars with food inside on a shelf][1] - -There are many reasons I'm a big fan of [Java][2], but perhaps most of all, because of the particular combo of static typing and object-orientedness that imbues its design. However, when I need a quick solution, especially to a "solve it and forget it" problem dealing with data, I usually reach for [Groovy][3] (or sometimes [Python][4]) instead, especially if the library that addresses my problem exists and is well-documented. Sometimes even [awk][5] will do. But I keep meaning to start using [Julia][6] more, and then there's [Go][7]. - -Every so often, I run across a different kind of problem, and when it is sufficiently compact, sometimes I will solve it in a few languages, just to learn more about how each addresses the problem. - -Recently, a non-programmer colleague introduced me to just such a problem. It goes like this: - -> Many people living in community XYZ struggle to make ends meet on a daily basis. Employment opportunities in the community are limited and tend to be low-paying. The cost of living is comparatively high: water, electricity, and healthcare are expensive. Post-secondary education, whether academic or technical, means moving to the nearest city. On the plus side, the community is small and close-knit. People help each other out as much as their circumstances permit. -> -> COVID-19 has hit this community hard in the economic sense. Although there haven't been any infections yet, the two main employers in the town are facing financial ruin and have laid off almost all of their workers. The government has helped out, but the amount of help is not enough for the families struggling the hardest. -> -> A local branch of a national charity has received some funding to provide support to families in need. Seeking to stretch this funding as much as possible, the charity arranges to buy bulk lots of food and household supplies, then break up the bulk lots into family hampers of approximately equal monetary value. Their question is, how to do so? - -My colleague thought that perhaps I could help him with a spreadsheet to handle the distribution. However, to me, this seemed to be the perfect little problem to solve with a small program. What might the steps be? - - 1. Unpack the bulk packages into their individual units. - 2. While there are still units left: - 1. Grab a fresh hamper. - 2. Set the hamper value to zero. - 3. While the hamper value is less than the ideal hamper value and there are still units left: - 1. Pick a unit at random. - 2. If that unit isn't in the hamper and if the hamper value wouldn't be too high by adding it: - 1. Move the unit to the hamper. - 2. Increment the hamper value by the unit price. - - - -That seems like a good first approximation. It also seems like the perfect small algorithm to implement in Groovy. - -### The Groovy solution - -In Java, I find myself declaring utility classes to hold tuples of data (the new record feature is going to be great for that). In Groovy, I tend to use the language support for maps. Let's use a list of maps to hold the bulk items picked up from the wholesaler: - - -``` -def packs = [ -    [item:'Rice',brand:'Best Family',units:10,price:5650,quantity:1], -    [item:'Spaghetti',brand:'Best Family',units:1,price:327,quantity:10], -    [item:'Sardines',brand:'Fresh Caught',units:3,price:2727,quantity:3], -    [item:'Chickpeas',brand:'Southern Style',units:2,price:2600,quantity:5], -    [item:'Lentils',brand:'Southern Style',units:2,price:2378,quantity:5], -    [item:'Vegetable oil',brand:'Crafco',units:12,price:10020,quantity:1], -    [item:'UHT milk',brand:'Atlantic',units:6,price:4560,quantity:2], -    [item:'Flour',brand:'Neighbor Mills',units:10,price:5200,quantity:1], -    [item:'Tomato sauce',brand:'Best Family',units:1,price:190,quantity:10], -    [item:'Sugar',brand:'Good Price',units:1,price:565,quantity:10], -    [item:'Tea',brand:'Superior',units:5,price:2720,quantity:2], -    [item:'Coffee',brand:'Colombia Select',units:2,price:4180,quantity:5], -    [item:'Tofu',brand:'Gourmet Choice',units:1,price:1580,quantity:10], -    [item:'Bleach',brand:'Blanchite',units:5,price:3550,quantity:2], -    [item:'Soap',brand:'Sunny Day',units:6,price:1794,quantity:2]] -``` - -There is one bulk pack of 10 bags of rice and 10 bulk packs with one bag each of spaghetti. In the above, the variable `packs` is set to a list (actually a Java `ArrayList` underneath) of maps (actually a Java `HashMap` underneath). Because Groovy is dynamically typed (by default, anyway), I use `def` to declare the `packs` variable and am happy to have both `String` and `Integer` values in my maps. - -And yes, those prices do look a bit strange, but this problem happened in a place with a different currency. - -The next step is to unpack these bulk packages. Unpacking the single bulk package of rice yields 10 units of rice; that is, the total number of units yielded is `units * quantity`. Groovy provides a handy function called `collectMany` that can be used to flatten lists of lists, so the code to carry out the unpacking is really straightforward: - - -``` -def units = packs.collectMany { pack -> -    [[item:pack.item, brand:pack.brand, price:(pack.price / pack.units)]] * -                (pack.units * pack.quantity) -} -``` - -Note that `collectMany` takes a `Closure` as its argument; so this is a kind of locally declared function with a single parameter, `pack`, that returns a list of (`units * quantity`) maps, with each map including the item, brand, and calculated unit price from the corresponding bulk pack. Of note here is that the Groovy multiply operator (`*`) with a list on the left side and a number (`N`) on the right will produce a list with the original items replicated in order `N` times. - -The final step is to repack the units into the hampers for distribution. But first, I need to get a bit more specific about the ideal hamper value, and I might as well not be overly restrictive when there are just a few units left: - - -``` -def valueIdeal = 5000 -def valueMax = valueIdeal * 1.1 -``` - -OK! Let's repack the hampers: - - -``` -def rnd = new [Random][8]() -def hamperNumber = 0    // [1] - -while (units.size()) {  // [2] -    hamperNumber++ -    def hamper = [] -    def value = 0       // [2.1] -    for (boolean canAdd = true; canAdd; ) {        // [2.2] -        int u = rnd.nextInt(units.size())          // [2.2.1] -        canAdd = false                             // [2.2.2] -        for (int o = 0; o < units.size(); o++) {   // [2.2.3] -            int uo = (u + o) % units.size() -            def unit = units[uo]                   // [2.2.3.1] -            if (units.size() < 3 || -                        !(unit in hamper) && -                        (value + unit.price) < valueMax) { // [2.2.3.2] -                hamper.add(unit) -                value += unit.price -                units.remove(uo)                   // [2.2.3.3] -                canAdd = units.size() > 0 -                break                              // [2.2.3.4] -            } -        }                                          // [2.2.4] -    } -    println "" -    println "Hamper $hamperNumber value $value:" -    hamper.each { item -> -        printf "%-25s%-25s%7.2f\n",item.item,item.brand,item.price -    }                                                                   // [2.3] -    println "Remaining units ${units.size()} average price = $avgPrice" // [2.4] -} -``` - -Some clarification, with numbers in brackets in the comments above (e.g., _[1]_) corresponding to the clarifications below: - - * 1\. Initialize Groovy's random number generator and the hamper number. - * 2\. This `while {}` loop will redistribute units into hampers as long as there are more available: - * 2.1 Increment the hamper number, get a new empty hamper (a list of units), and set its value to 0. - * 2.2 This `for {}` loop will add as many units to the hamper as possible: - * 2.2.1 Get a random number between zero and the number of remaining units minus 1. - * 2.2.2 Assume you can't find more units to add. - * 2.2.3 This `for {}` loop, starting at the randomly chosen index, will try to find a unit that can be added to the hamper. - * 2.2.3.1 Figure out which unit to look at. - * 2.2.3.2 Add this unit to the hamper if there are only a few left or if the value of the hamper isn't too high once the unit is added. - * 2.2.3.3 Add the unit to the hamper, increment the hamper value by the unit price, and remove the unit from the available units list. - * 2.2.3.4 As long as there are units left, you can add more, so break out of this loop to keep looking. - * 2.2.4 On exit from this `for {}` loop, if you inspected every remaining unit and could not find one to add to the hamper, the hamper is complete; otherwise, you found one and can continue looking for more. - * 2.3 Print out the contents of the hamper. - * 2.4 Print out the remaining units info. - - - -When you run this code, the output looks like: - - -``` -Hamper 1 value 5414: -Vegetable oil            Crafco                    835.00 -Coffee                   Colombia Select          2090.00 -Tofu                     Gourmet Choice           1580.00 -Sardines                 Fresh Caught              909.00 -Remaing units 151 - -Hamper 2 value 5309: -Flour                    Neighbor Mills            520.00 -Sugar                    Good Price                565.00 -Vegetable oil            Crafco                    835.00 -Coffee                   Colombia Select          2090.00 -Rice                     Best Family               565.00 -Tomato sauce             Best Family               190.00 -Tea                      Superior                  544.00 -Remaing units 144 - -Hamper 3 value 5395: -Flour                    Neighbor Mills            520.00 -UHT milk                 Atlantic                  760.00 -Tomato sauce             Best Family               190.00 -Tofu                     Gourmet Choice           1580.00 -Spaghetti                Best Family               327.00 -Sugar                    Good Price                565.00 -Sardines                 Fresh Caught              909.00 -Tea                      Superior                  544.00 -Remaing units 136 - -… - -Hamper 23 value 5148: -Flour                    Neighbor Mills            520.00 -Tea                      Superior                  544.00 -Chickpeas                Southern Style           1300.00 -Lentils                  Southern Style           1189.00 -Vegetable oil            Crafco                    835.00 -UHT milk                 Atlantic                  760.00 -Remaing units 3 - -Hamper 24 value 3955: -Chickpeas                Southern Style           1300.00 -Sugar                    Good Price                565.00 -Coffee                   Colombia Select          2090.00 -Remaing units 0 -``` - -The last hamper is abbreviated in contents and value. - -### Closing thoughts - -Note there is some fiddly business about being able to add units to the hamper. Basically, you pick a random position in the list of units and, starting at that position, iterate through the list until you either find a unit whose price allows it to be included or until you exhaust the list. Also, when there are only a few items left, you just toss them into the last hamper. - -Another issue worth mentioning: This isn't a particularly efficient approach. Removing elements from `ArrayLists`, letting Groovy use its default `BigDecimal`, and a few other things make this less suitable for a huge redistribution problem. Still, it runs quite rapidly on my aging dual-core machine. - -And one final thought—using `while { … }` and `for { … }`? Really? Not some cool functional code? Afraid so. I couldn't think of a way to use map and reduce style closures in Groovy in collaboration with a random selection of units for repackaging. Can you? - -In another article article, I'll solve this in Python, and future articles will do it in Java, Julia, and Go. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/9/groovy - -作者:[Chris Hermansen][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/clhermansen -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/OSDC_secret_ingredient_520x292.png?itok=QbKzJq-N (Jars with food inside on a shelf) -[2]: https://www.java.com/en/ -[3]: https://groovy-lang.org/ -[4]: https://www.python.org/ -[5]: https://www.gnu.org/software/gawk/manual/gawk.html -[6]: https://julialang.org/ -[7]: https://golang.org/ -[8]: http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+random diff --git a/sources/tech/20200906 PCLinuxOS Review- This Classic Independent Linux Distribution is Definitely Worth a Look.md b/sources/tech/20200906 PCLinuxOS Review- This Classic Independent Linux Distribution is Definitely Worth a Look.md deleted file mode 100644 index 0b5d0637a7..0000000000 --- a/sources/tech/20200906 PCLinuxOS Review- This Classic Independent Linux Distribution is Definitely Worth a Look.md +++ /dev/null @@ -1,144 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (PCLinuxOS Review: This Classic Independent Linux Distribution is Definitely Worth a Look) -[#]: via: (https://itsfoss.com/pclinuxos-review/) -[#]: author: (John Paul https://itsfoss.com/author/john/) - -PCLinuxOS Review: This Classic Independent Linux Distribution is Definitely Worth a Look -====== - -Most of the Linux distributions that we cover on It’s FOSS are based on either Ubuntu or Arch. - -No, we don’t have any affinity for either Ubuntu or Arch though personally, [I love using Manjaro][1]. It’s just that majority of new Linux distributions are based on these two. - -While discussing within the team, we thought, why fixate over new distributions. Why not go for the classic distributions? Distributions that don’t belong to DEB/Arch domain. - -So, today, we are going to be looking at an independent distro that tends to go against the flow. We’ll be looking at PCLinuxOS. - -### What is PCLinuxOS? - -![][2] - -Back in 2000, Bill Reynolds (also known as Texstar) created a series of packages to improve Mandrake Linux, which later became [Mandriva Linux][3]. [PCLinuxOS][4] first became a separate distro in 2003 when Texstar forked Mandrake. He [said][5] that he made the move because he wanted “to provide an outlet for my crazy desire to package source code without having to deal with egos, arrogance and politics”. - -As I said earlier, PCLinuxOS does not follow the rest of the Linux world. PCLinuxOS does not use systemd. Instead, it uses SysV init and “[will continue to do so for the foreseeable future][6]“. - -It also has one of the oddest package management systems, I have ever encountered. PCLinuxOS uses apt and [synaptic][7] to handle RPM packages. Unlike most distros that use either apt or rpm, PCLinuxOS is a rolling distro. It also supports [Flatpak][8]. - -The PCLinuxOS team offers [three different versions][9]: **KDE**, **MATE**, and **XFCE**. The PCLinuxOS community has also created a number of [community][10] [releases][11] with more desktop options. - -![PCLinuxOS Updater][12] - -### System requirements for PCLinuxOS - -According to the [PCLinuxOS wiki][13], the following hardware is recommended to run PCLinuxOS: - - * Modern Intel or AMD processor. - * 10 GB or more free space recommended. - * Minimum 2 GB of memory. – Recommended 4 GB or more. - * Any modern video card by Nvidia, ATI, Intel, SiS, Matrox, or VIA. - * 3D desktop support requires a 3D instructions set compatible card. - * Any Sound Blaster, AC97, or HDA compatible card. - * A CD or DVD drive. - * Flash drives can also be used to install, with PCLinuxOS-LiveUSB script just for this purpose. - * Generally any onboard network card will suffice. - * A high-speed internet connection is recommended for performing any updates/software installations as necessary. - - - -### Experience with PCLinuxOS - -I originally encountered PCLinuxOS when I was first entering the Linux world about 7+ years ago. Back then I was trying out distros like crazy. At the time, I didn’t quite understand it and ended up going with Lubuntu. - -Recently, I was reminded of the distro when [Matt Hartley][14], community manager at [OpenShot][15] mentioned it on the [Bryan Lunduke podcast][16]. PCLinuxOS is Hartley’s daily driver and has been for a while. Based on his comments, I decided to take another look at it. - -#### Smooth installation - -![PCLinuxOS installer][17] - -The majority of Linux distros use one of three installers, [Ubiquity][18], [Anaconda][19], or [Calamares][20]. PCLinuxOS is one of the few that has its own installer, which it inherited from Mandrake. The installation went quickly and without any issue. - -After the installation, I booted into the MATE [desktop environment][21] (because I had to). A dialog box asked me if I wanted to enable the update notifier. It’s always best to be up-to-date, so I did. - -#### Handy set of utilities - -Besides the usual list of utilities, office programs, and web tools, PCLinuxOS has a couple of interesting additions. Both Zoom (a videoconferencing tool) and AnyDesk (a remote desktop application) come pre-installed for your remote working needs. The menu also includes an option to install VirtualBox GuestAdditions (in case you installed PCLinuxOS on VirtualBox). - -![PCLinuxOS Control Center][22] - -PCLinuxOS comes with a control center to handle all of your system admin needs. It covers installing software, file sharing, handles network connections, handles hardware issues, and security. - -#### Create your own custom PCLinuxOS live disk - -It also comes with a couple of apps that allow you to download a new PCLinuxOS ISO, write that ISO to a disc or USB, or create [your own LiveCD][23] based on your current system. - -![It is easy to create your own custom PCLinuxOS ISO][24] - -#### No sudo in PCLinuxOS - -Interestingly, PCLinuxOS doesn’t have `sudo` installed. According to the [FAQ][6], “Some distros…leaving sudo in a default state where all administrator functions are allowed without the requirement to enter the root password. We consider this an unacceptable security risk.” Whenever you perform a task that requires admin privileges, a window appears asking for your password. - -#### Strong community - -One of the cool things about PCLinuxOS is its strong community. That community creates a monthly [e-magazine][25]. Each issue contains news, tutorials, puzzles, and even recipes. The only other distro (or family of distros) that has sustained a community publication for over 15 years is Ubuntu with the [Full Circle Magazine][26]. Be sure to check it out. - -#### No hardware issues noticed (for my system) - -This is one of the last distros I will review on my Dell Latitude D630. (I’m moving up to a newer Thinkpad.) One of the major problems I’ve had in the past was getting the Nvidia GPU to work correctly. I didn’t have any issues with PCLinuxOS. It just worked out of the box. - -### Final Thoughts - -![PCLinuxOS Desktop][27] - -PCLinuxOS also provides an easy way to remaster the system after installation. It allows you to create a live disk of PCLinuxOS with your customization. I - -PCLinuxOS feels like part of the past and part of the present. It reflects the pre-systemd days and offers a modern desktop and apps at the same time. The only thing I would complain about is that there are fewer applications available in the repos than more popular distros, but the availability of Flatpak and AppImages should fix that. - -PCLinuxOS’ tag line is: “_**So cool ice cubes are jealous**_“. It might sound corny, but I think it’s true, especially if you aren’t a fan of the direction the rest of the Linux world has taken. If you find something lacking in the big Linux distros, check out this old-little distro with a great community. - -Have you ever used PCLinuxOS? What is your favorite independent distro? Please let us know in the comments below. If you found this article interesting, please take a minute to share it on social media, Hacker News or [Reddit][28]. - --------------------------------------------------------------------------------- - -via: https://itsfoss.com/pclinuxos-review/ - -作者:[John Paul][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://itsfoss.com/author/john/ -[b]: https://github.com/lujun9972 -[1]: https://itsfoss.com/why-use-manjaro-linux/ -[2]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/09/PCLinuxOS-review.png?resize=800%2C450&ssl=1 -[3]: https://en.wikipedia.org/wiki/Mandriva_Linux -[4]: https://www.pclinuxos.com/ -[5]: http://linux-blog.org/Experiment-Interview-with-Texstar-of-PCLinuxOS/ -[6]: https://pclinuxoshelp.com/index.php/Frequently_Asked_Questions -[7]: https://itsfoss.com/synaptic-package-manager/ -[8]: https://pclinuxoshelp.com/index.php/Installing_Software#Using_Flatpak -[9]: https://www.pclinuxos.com/?page_id=10 -[10]: https://ftp.nluug.nl/pub/os/Linux/distr/pclinuxos/pclinuxos/live-cd/community/ -[11]: https://pclosusers.com/communityiso/ -[12]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/08/PCLinuxOS-updater.jpg?resize=800%2C487&ssl=1 -[13]: https://pclinuxoshelp.com/index.php/Hardware_Recommendations -[14]: https://twitter.com/matthartley -[15]: https://www.openshot.org/ -[16]: http://www.lunduke.com/ -[17]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/08/PCLinuxOS-installer.jpg?resize=800%2C500&ssl=1 -[18]: http://launchpad.net/ubiquity -[19]: https://fedoraproject.org/wiki/Anaconda -[20]: https://calamares.io/ -[21]: https://itsfoss.com/what-is-desktop-environment/ -[22]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/08/PCLinuxOS-Control-Center.jpg?resize=800%2C585&ssl=1 -[23]: https://pclinuxoshelp.com/index.php/LiveCD,_Create_your_own -[24]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/08/PCLinuxOS-downloader.jpg?resize=800%2C608&ssl=1 -[25]: https://pclosmag.com/index.html -[26]: https://fullcirclemagazine.org/ -[27]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/08/PCLinuxOS-desktop.jpg?resize=800%2C500&ssl=1 -[28]: http://reddit.com/r/linuxusersgroup diff --git a/sources/tech/20200908 Open source data control for cloud services with Apache Ranger.md b/sources/tech/20200908 Open source data control for cloud services with Apache Ranger.md deleted file mode 100644 index 38e6da27a5..0000000000 --- a/sources/tech/20200908 Open source data control for cloud services with Apache Ranger.md +++ /dev/null @@ -1,63 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Open source data control for cloud services with Apache Ranger) -[#]: via: (https://opensource.com/article/20/9/apache-ranger) -[#]: author: (Balaji Ganesan https://opensource.com/users/balajiganesan) - -Open source data control for cloud services with Apache Ranger -====== -Comparing different approaches to make more data available to more users -while maintaining security and compliance with data privacy regulations. -![Tools in a cloud][1] - -As the movement to migrate enterprise data to the cloud gathers steam, there is an active debate on the best approach to securing and protecting it. But before we talk about the details of the various access control frameworks, let us first understand the breadth of challenges a company faces when it begins migrating its data to the cloud. First and foremost is the wide array of storage and analysis or compute services offered by cloud and third-party providers. In other words, when a company decides to move its data to the cloud, it needs to decide the type of repository in which it is going to store its data. - -Each cloud company offers many different data stores, and there are a dozen different services to analyze data once it has been migrated to the cloud. Then there are cloud-native third-party services to allow data science platforms and data warehouses to operate as part of the leading public cloud infrastructure. Each of these services offers a unique mechanism by which to administer access to data consumers such as data analysts and scientists in the organization. - -If you think this is beginning to sound a lot like Hadoop-based data lakes, you're right. Needless to say, this places a very heavy burden on the administrators that have to make data widely available in the organization and comply with privacy and industry regulations such as California Consumer Privacy Act (CCPA), General Data Protection Regulation (GDPR), and Health Insurance Portability and Accountability Act (HIPAA) at the same time. - -### The fundamentals of two popular approaches: RBAC vs. ABAC - -Access control mechanisms have been part of the enterprise IT landscape since the advent of computer systems, and there are two key aspects to controlling access to data. The first relates to authenticating the identity of the user and establishing whether the individual or system is actually who they claim to be. The second has to do with ensuring that the user has the appropriate permission to access a data system, a process known as authorization. These principles also apply to the data stored in the cloud. Today, role-based access control (RBAC) and attribute-based access control (ABAC) are the two most prevalent approaches to managing access to data in the enterprise. The goal of these approaches is to help define and enforce the policies and privileges that grant authorized users access to the required data. - -RBAC is based on the concepts of users, roles, groups, and privileges in an organization. Administrators grant privileges or permissions to pre-defined organizational roles—roles that are assigned to subjects or users based on their responsibility or area of expertise. For example, a user who is assigned the role of a manager might have access to a different set of objects and/or is given permission to perform a broader set of actions on them as compared to a user with the assigned role of an analyst. When the user generates a request to access a data object, the access control mechanism evaluates the role assigned to the user and the set of operations this role is authorized to perform on the object before deciding whether to grant or deny the request. - -RBAC simplifies the administration of data access controls because concepts such as users and roles are well-understood constructs in a majority of organizations. In addition to being based on familiar database concepts, RBAC also offers administrators the flexibility to assign users to various roles, reassign users from one role to another, and grant or revoke permissions as required. Once an RBAC framework is established, the administrator's role is primarily to assign or revoke users to specific roles. In RBAC, a user can be assigned many roles, a role can have many users, and a role/user can perform many operations. - -The concept of attribute-based access control appeared on the scene in the early 2000s. Prior to ABAC, managing access to enterprise data involved granting a user or subject permission to perform a specific action on an entity—in this case, a database, table, or column. In ABAC, the decision to grant access or request to perform an operation on an object is based on assigned attributes of the subject, object, environment conditions, and a set of policies that are specific to those attributes and conditions. Environment conditions are dynamic factors that are independent of user or object and can include things such as the time and location of the subject. Just like subjects or users have attributes, so do objects such as databases, files, or tables. Object attributes may include author, creation date, version, effective date, last update, etc. - -ABAC operates by assigning attributes to subjects and objects and developing policies that govern rules of data access. Each component in the information system is assigned attributes that are specific to the object. For example, a file can be classified as an intellectual property (IP). Similarly, each user or subject in the system can be assigned attributes that may include the user's location and time zone. Based on these attributes, an administrator can build an access policy that specifies that any document that has been classified as IP cannot be accessed by a user who is located outside the US or that it can only be accessed by users who are affiliated with the company's legal department during the hours of 8:00am and 5:00pm PST. You can now see how ABAC extends the concept of role, users, and privileges to include attributes. - -ABAC also offers several advantages to infrastructure administrators. For instance, they do not require knowledge of specific users or subjects that need access to data. The combination of user and object attributes governed by a set of policies can accommodate an unlimited number of users. As new users are added to the platform, they, too, can be governed by the same set of rules. Because ABAC does not require administrators to have prior knowledge of the users, this approach is better suited to environments where individuals are routinely added and removed from the data platform. - -### Making the right choice - -It is important to point out that the distinction between RBAC and ABAC approaches is increasingly blurred by access control platforms such as Apache Ranger, a data governance framework originally developed to manage Big Data in Hadoop data lakes. - -Today, Apache Ranger is the leading open source project for data access governance for Big Data environments, including Apache Spark. It's in use at hundreds of enterprises around the world, utilized to define and enforce data access control policies to govern sensitive data as mandated by regulations like GDPR and CCPA. - -Apache Ranger was built to centrally manage access to data used by different engines that are part of the Hadoop platforms. It is inherently architected to handle the diversity of data storage and compute environments presented by multiple cloud services in use at enterprises today. - -Apache Ranger's approach to data authorization is based on ABAC, which is a combination of the subject, action, resource, and environment. At the same time, Ranger can provide fine-grained access control to users based on the concepts of role, user, and permission. - -The best strategy for organizations migrating to the cloud is to select a data access control platform that strikes a balance between empowering administrators to make more data available to more data consumers and complying with industry and privacy regulations. More importantly, it must do this without adversely affecting the performance of the data platform or user behavior.  - -Looking for ways to draw meaningful conclusions from big data? Rommel Garcia runs through three... - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/9/apache-ranger - -作者:[Balaji Ganesan][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/balajiganesan -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/cloud_tools_hardware.png?itok=PGjJenqT (Tools in a cloud) diff --git a/sources/tech/20200909 Create a slide deck using Jupyter Notebooks.md b/sources/tech/20200909 Create a slide deck using Jupyter Notebooks.md deleted file mode 100644 index 5ba0d7fe1a..0000000000 --- a/sources/tech/20200909 Create a slide deck using Jupyter Notebooks.md +++ /dev/null @@ -1,108 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Create a slide deck using Jupyter Notebooks) -[#]: via: (https://opensource.com/article/20/9/presentation-jupyter-notebooks) -[#]: author: (Moshe Zadka https://opensource.com/users/moshez) - -Create a slide deck using Jupyter Notebooks -====== -Jupyter may not be the most straightforward way to create presentation -slides and handouts, but it affords more control than simpler options. -![Person reading a book and digital copy][1] - -There are many options when it comes to creating slides for a presentation. There are straightforward ways, and generating slides directly from [Jupyter][2] is not one of them. But I was never one to do things the easy way. I also have high expectations that no other slide-generation software quite meets. - -### Why transition from slides to Jupyter? - -I want four features in my presentation software: - - 1. An environment where I can run the source code to check for errors - 2. A way to include speaker notes but hide them during the presentation - 3. To give attendees a useful handout for reading - 4. To give attendees a useful handout for exploratory learning - - - -There is nothing more uncomfortable about giving a talk than having someone in the audience point out that there is a coding mistake on one of my slides. Often, it's misspelling a word, forgetting a return statement, or doing something else that becomes invisible as soon as I leave my development environment, where I have [a linter][3] running to catch these mistakes. - -After having one too many of these moments, I decided to find a way to run the code directly from my slide editor to make sure it is correct. There are three "gotchas" I needed to consider in my solution: - - * A lot of code is boring. Nobody cares about three slides worth of `import` statements, and my hacks to mock out the `socket` module distract from my point. But it's essential that I can test the code without creating a network outage. - * Including boilerplate code is _almost_ as boring as hearing me read words directly off of the slide. We have all heard (or even given) talks where there are three bullet points, and the presenter reads them verbatim. I try to avoid this behavior by using speaker notes. - * There is nothing more annoying to the audience when the talk's reference material doesn't have any of the speaker notes. So I want to generate a beautiful handout containing all of my notes and the slides from the same source. Even better, I don't want to have slides on one handout and a separate GitHub repository for the source code. - - - -As is often the case, to solve this issue, I found myself reaching for [JupyterLab][4] and its notebook management capabilities. - -### Using Jupyter Notebooks for presentations - -I begin my presentations by using Markdown and code blocks in a Jupyter Notebook, just like I would for anything else in JupyterLab. I write out my presentation using separate Markdown sections for the text I want to show on the slides and for the speaker notes. Code snippets go into their own blocks, as you would expect. - -Because you can add a "tag" to cells, I tag any cell that has "boring" code as `no_markdown`. - -![Using tags in Jupyter Notebook][5] - -(Moshe Zadka, [CC BY-SA 4.0][6]) - -Then I convert my Notebook to Markdown with: - - -``` -`$ jupyter nbconvert presentation.ipynb --to markdown --TagRemovePreprocessor.remove_cell_tags='{"no_markdown"}'  --output build/presentation.md` -``` - -There are ways to [convert Markdown to slides][7]—but I have no idea how to use any of them and even less desire to learn. Plus, I already have my favorite presentation-creation tool: [Beamer][8]. - -But Beamer requires custom LaTeX, and that is not usually generated when you convert Markdown to LaTeX. Thankfully, one Markdown implementation–[Pandoc Markdown][9]—has a feature that lets me do what I want. Its [raw_attribute][10] extension allows including "raw" bits of the target format in the Markdown. - -This means if I run `pandoc` on the Markdown export from a notebook that includes `raw_attribute` LaTeX bits, I can have as much control over the LaTeX as I want: - - -``` -`$ pandoc --listings -o build/presentation.tex build/presentation.md` -``` - -The `--listings` makes `pandoc` use LaTeX's `listings` package, which makes code look much prettier. Putting those two pieces together, I can generate LaTeX from the notebook. - -Through a series of conversion steps, I was able to hide the parts I wanted to hide by using: - - * LaTeX `raw_attribute` bits inside Jupyter Notebook's Markdown cells - * Tagging boring cells as `no_markdown` - * Jupyter's "nbconvert" to convert the notebook to Markdown - * Pandoc to convert the Markdown to LaTeX while interpolating the `raw_attribute` bits - * Beamer to convert the Pandoc output to a PDF slide-deck - * Beamer's beamerarticle mode - - - -All combined with a little bit of duct-tape, in the form of a UNIX shell script, to produce slide-deck creation software. Ultimately, this pipeline works for me. With these tools, or similar, and some light UNIX scripting, you can make your own customized slide created pipeline, optimized to your needs and preferences. - -What is the most complicated pipeline you have ever used to build a slide deck? Let me know about it—and whether you would use it again—in the comments. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/9/presentation-jupyter-notebooks - -作者:[Moshe Zadka][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/moshez -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/read_book_guide_tutorial_teacher_student_apaper.png?itok=_GOufk6N (Person reading a book and digital copy) -[2]: https://jupyter.org/ -[3]: https://opensource.com/article/19/5/python-flake8 -[4]: https://jupyterlab.readthedocs.io/en/stable/index.html -[5]: https://opensource.com/sites/default/files/uploads/jupyter_presentations_tags.png (Using tags in Jupyter Notebook) -[6]: https://creativecommons.org/licenses/by-sa/4.0/ -[7]: https://opensource.com/article/18/5/markdown-slide-generators -[8]: https://opensource.com/article/19/1/create-presentations-beamer -[9]: https://pandoc.org/MANUAL.html#pandocs-markdown -[10]: https://pandoc.org/MANUAL.html#extension-raw_attribute diff --git a/sources/tech/20200910 How this open source test framework evolves with .NET.md b/sources/tech/20200910 How this open source test framework evolves with .NET.md deleted file mode 100644 index e9acf235d7..0000000000 --- a/sources/tech/20200910 How this open source test framework evolves with .NET.md +++ /dev/null @@ -1,156 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (How this open source test framework evolves with .NET) -[#]: via: (https://opensource.com/article/20/9/testing-net-fixie) -[#]: author: (Patrick Lioi https://opensource.com/users/patricklioi) - -How this open source test framework evolves with .NET -====== -Re-evaluating and overhauling a software project's design are crucial -steps to keep up as circumstances change. -![magnifying glass on computer screen, finding a bug in the code][1] - -A software project's design is a consequence of the time it was written. As circumstances change, it's wise to take a step back and consider whether old ideas still make for a good design. If not, you risk missing out on enhancements, simplifications, new degrees of freedom, or even a project's very survival. - -This is relevant advice for [.NET][2] developers whose dependencies are subject to constant updates or are preparing for .NET 5. The [Fixie][3] project confronted this reality as we flexed to outside circumstances during the early adoption phase of .NET Core. Fixie is an open source .NET test framework similar to NUnit and xUnit with an emphasis on [developer ergonomics][4] and customization. It was developed before .NET Core and has gone through a few major design overhauls in response to platform updates. - -### The problem: Reliable assembly loading - -A .NET test project tends to feel a lot like a library: a bunch of classes with no visible entry point. The assumption is that a test runner, like Fixie's Visual Studio Test Explorer plugin, will load your test assembly, use reflection to find all the tests within it, and invoke the tests to collect results. Unlike a regular library, test projects share some similarities with regular console applications: - - 1. The test project's dependencies should be naturally loadable, as with any executable, from their own build output folder. - 2. When running multiple test projects, the loaded assemblies for test project A should be separate from the loaded assemblies for test project B. - 3. When the system under test relies on an App.config file, it should use the one local to the test project while the tests are running. - - - -I'll call these behaviors the Big Three. The Big Three are so natural that you rarely find a need to even _say_ them. A test project should resemble a console executable: It should be able to have dependencies, it should not conflict with the assemblies loaded for another project, and each project should respect its own dedicated config file. We take this all for granted. The sky is blue, water is wet, and the Big Three must be honored as tests run. - -### Fixie v1: Designing for the Big Three - -The Big Three pose a _huge_ problem for .NET test frameworks: the primary running process, such as Visual Studio Test Explorer, is nowhere near the test project's build output folder. The most natural attempt to load a test project and run it will fail all of the Big Three. - -Early alpha builds of Fixie were naive about assembly loading: The test runner .exe would load a test project and run simple tests, but it would fail as soon as a test tried to run code in another assembly—like the application being tested. By default, it searched for assemblies _near the test runner_, nowhere near the test project's build output folder. - -Once we resolved that, using that test runner to run more than one test project would result in conflicts at runtime, such as when each test project referenced different versions of the same library. - -And when we resolved that, the test runner would fail to look in the right config files, mistakenly thinking the test runner's config file was the one to use. - -In the days of the regular old .NET Framework, the solution to the Big Three came in the form of AppDomains. AppDomains are a fairly old and now-deprecated technology. Fixie v1 was developed when this was the primary solution, with no deprecation in sight, to the Big Three. _Under those circumstances_, using AppDomains to solve the Big Three was the ideal design, though it was a bit frustrating to work with them. In short, they let a single test runner carve out little pockets of loaded assemblies with rigid communication boundaries between them. - -![Fixie version 1][5] - -The Test Explorer plugin and its own dependencies (like [Mono.Cecil][6]) live in one AppDomain. The test assembly and its dependencies live in a second AppDomain. A painful serialization boundary allows requests to cross the chasm with no risk of mixing the loaded assemblies. - -AppDomains let you identify each test project's build output folder as the home of that test project's config file and dependencies. You could successfully load a test project's folder into the test runner process, call into it, and get test results while meeting the Big Three requirements. - -And then .NET Core came along. Suddenly, AppDomains were an old and deprecated concept that simply would not continue to exist in the .NET Core world. - -Circumstances had changed with a vengeance. - -### Fixie v2: Adapting to the .NET Core crisis - -At first, this seemed like the end of the Fixie project. The entire design depended on AppDomains, and if this newfangled .NET Core thing survived, Fixie would have no answer to the Big Three. Despair. Close up shop. Delete the repository. - -In these moments of despair, we were making a classic software development mistake: confusing the _solution_ with the _requirements_. The _actual requirements_ (the Big Three) had not changed. The circumstances _around_ the design had changed: AppDomains were no longer available. When people make the mistake of confusing their solution with their requirements, they may double down, grip their steering wheel tighter, and just flail around while they try to force their solution to continue working. - -Instead, we needed to recognize the plain truth: we had familiar requirements, but new circumstances, and it was time to throw out the old design for something new that met the same requirements under the new circumstances. Once we gave ourselves permission to go back to the drawing board, the solution was clear: - -The Big Three let your "library" test project feel like a console application. So, what if your test project _was_ a console application? - -A console application already has meaningful notions of loading dependencies from the right folder, distinct from the dependencies of another application, while respecting its own config file. The test runner is no longer the only process in the mix. Instead, the test runner's job is to _start_ the test project as a process of its own and communicate with it to collect results. We traded away AppDomains for interprocess communication, resulting in a new design that met all the original requirements while also working in the context of .NET Framework _and_ .NET Core projects. - -![Fixie version 2][7] - -This design kept the project alive and allowed us to serve both platforms during those shaky years when it wasn't certain which platform would survive in the long run. However, maintaining support for two worlds became increasingly painful, especially in keeping the Visual Studio Test Explorer plugin alive through every minor Visual Studio release. Every minor Fixie release involved a huge matrix of use cases to do regression testing, and every new little bump in the road brought innovation to a halt. - -On top of that, Microsoft was starting to show clear signs that it was abandoning the .NET Framework: the old Framework no longer kept up with advances in .NET Standard, ASP.NET, or C#. The .NET Framework would exist but would quickly fall by the wayside. - -Circumstances had changed again. - -### Fixie v3: Embracing One .NET - -Fixie v3 is a work in progress that we intend to release shortly after .NET 5 arrives. .NET 5 is the resolution to the .NET Framework vs. .NET Core development lines, arriving at [One .NET][8]. Instead of fighting it, we're following Microsoft's evolution: Fixie v3 will no longer run on the .NET Framework. Removing .NET Framework support allowed us to remove a lot of old, slow implementation details and dramatically simplified the regression testing scenarios we had to consider for reach release. It also allowed us to reconsider our design. - -The Big Three requirements changed only slightly: .NET Core does away with the notion of an App.config file closely tied to your executable, instead relying on a more convention-based configuration. All of Fixie's assembly-loading requirements remained. More importantly, the circumstances _around_ the design changed in a fundamental way: we were no longer limited to using types available in both .NET Framework and .NET Core. - -By promising _less_ with the removal of .NET Framework support, we _gained_ new degrees of freedom to modernize the system. - -.NET's [AssemblyLoadContext][9] is a distant cousin of AppDomains. It's not available to the .NET Framework, so it hadn't been an option for us before. AssemblyLoadContext lets you set up a dedicated loading area for an assembly and its own dependencies without polluting the surrounding process and without being limited to the original process's own folder of assemblies. In other words, it gives AppDomains' "load this folder of assemblies off to the side" behavior without the frustrating AppDomains quirks. - -We defined the concept of a **TestAssemblyLoadContext**, the little pocket of assembly-loading necessary for one test assembly folder: - - -``` -class TestAssemblyLoadContext : AssemblyLoadContext -{ -    readonly AssemblyDependencyResolver resolver; - -    public TestAssemblyLoadContext(string testAssemblyPath) -        => resolver = [new][10] AssemblyDependencyResolver(testAssemblyPath); - -    protected override Assembly? Load(AssemblyName assemblyName) -    { -        // Reuse the Fixie.dll already loaded in the containing process. -        if (assemblyName.Name == "Fixie") -            return null; - -        var assemblyPath = resolver.ResolveAssemblyToPath(assemblyName); - -        if (assemblyPath != null) -            return LoadFromAssemblyPath(assemblyPath); - -        return null; -    } - -    ... -} -``` - -Armed with this class, we can successfully load a test assembly and all its dependencies in a safe way and from the right folder. The test runner can work with the loaded Assembly directly, knowing that the loading effort won't pollute the test runner's own dependencies: - - -``` -var assemblyName = [new][10] AssemblyName(Path.GetFileNameWithoutExtension(assemblyPath)); -var testAssemblyLoadContext = [new][10] TestAssemblyLoadContext(assemblyPath); -var assembly = testAssemblyLoadContext.LoadFromAssemblyName(assemblyName); -// Use System.Reflection.* against `assembly` to find and run test methods... -``` - -We've come full circle: The Fixie v3 Visual Studio plugin uses TestAssemblyLoadContext to load test assemblies in process, similar to the way the Fixie v1 plugin did with AppDomains. The core Fixie.dll assembly need only be loaded once. Most importantly, we got to eliminate all the interprocess communication while taking advantage of the best that the new circumstances allowed. - -![Fixie version 3][11] - -### Always be designing - -When you work with any long-lived system, some of your maintenance pains are really clues that outside circumstances have changed. If your circumstances are changing, take a step back and reconsider your design. Are you mistaking your _solution_ for your _requirements_? Articulate your requirements separate from your solution, and see whether your circumstances suggest a new and perhaps even exciting direction. - -With news of Microsoft making the server side of .NET open source, we look at how the creation of... - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/9/testing-net-fixie - -作者:[Patrick Lioi][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/patricklioi -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/mistake_bug_fix_find_error.png?itok=PZaz3dga (magnifying glass on computer screen, finding a bug in the code) -[2]: https://en.wikipedia.org/wiki/.NET_Framework -[3]: https://github.com/fixie/fixie -[4]: https://headspring.com/2020/04/01/fixie-test-framework-developer-ergonomics/ -[5]: https://opensource.com/sites/default/files/fixie-design-diagram-v1-cropped.jpg (Fixie version 1) -[6]: https://www.mono-project.com/docs/tools+libraries/libraries/Mono.Cecil/ -[7]: https://opensource.com/sites/default/files/fixie-design-diagram-v2-cropped_0.jpg (Fixie version 2) -[8]: https://channel9.msdn.com/Events/Build/2020/BOD106 -[9]: https://docs.microsoft.com/en-us/dotnet/core/tutorials/creating-app-with-plugin-support -[10]: http://www.google.com/search?q=new+msdn.microsoft.com -[11]: https://opensource.com/sites/default/files/fixie-design-diagram-v3-cropped_0.jpg (Fixie version 3) diff --git a/sources/tech/20200914 The future of virtual conferences, service mesh, and more industry trends.md b/sources/tech/20200914 The future of virtual conferences, service mesh, and more industry trends.md deleted file mode 100644 index 8a895eba9e..0000000000 --- a/sources/tech/20200914 The future of virtual conferences, service mesh, and more industry trends.md +++ /dev/null @@ -1,69 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (The future of virtual conferences, service mesh, and more industry trends) -[#]: via: (https://opensource.com/article/20/9/virtual-conferences-service-mesh-industry-trends) -[#]: author: (Tim Hildred https://opensource.com/users/thildred) - -The future of virtual conferences, service mesh, and more industry trends -====== -A weekly look at open source community and industry trends. -![Computer laptop in space][1] - -As part of my role as a principal communication strategist at an enterprise software company with an open source development model, I publish a regular update about open source community, market, and industry trends. Here are some of my and their favorite articles from that update. - -## [Enough with the Linux security FUD][2] - -> Whether you're running Windows Server, Linux, NetBSD, whatever on your mission-critical systems, if you utterly fail at security, it doesn't matter how "secure" your operating system is. It's like leaving your car keys in an unlocked car, your system will be hacked, your car will be stolen.  - -**The impact**: I worry a bit about the organizations at the size that comes before "can afford fulltime expert IT" where you might find someone who likes computers taking on that responsibility by default. If that sounds like you or your organization, get that person some training! - -## [A look back at our FIRST KubeCon + CloudNativeCon virtual conference][3] - -> The first virtual KubeCon + CloudNativeCon just wrapped up and it was a huge success thanks to our amazing community of doers – builders, operators and advocates. We are so thrilled that the cloud native community came together with hope and positivity to make this a truly community-driven event we will remember for a long time. We may not have been able to meet in person this year but we are indomitable!  - -**The impact**: These virtual experiences keep getting better and adding to the state of the art; running them requires important muscles that have until this point gone underused. Whatever else happens as the pandemic progresses, I hope we get a sense of "if we really think hard about it, we can build powerful bonds within our communities without airfares and hotel rooms." It doesn't have to be the same as sharing a beer to be impactful. - -## [Istio 1.7: Security improvements take centre stage as users continue to speculate about the service mesh’s future][4] - -> Lately, Istio has been anything but boring, especially after originator Google came into some criticism for handing the project’s trademarks over to its recently founded [Open Usage Commons][5]. The step led to some turmoil, raising questions about how neutral OUC really was as well as basically smothering the hopes of those who had wished for Istio to become a CNCF project one day. [According to IBM][6], a founding member of the project, there had actually been an “agreement” to do so with Google, which only seems sensible, given that the Envoy proxy, which is central to Istio, has found a vendor-neutral home at the organisation. - -**The impact**: My guess is that the project has enough adoption and functionality leading over competitive projects that it would take some truly dastardly governance to blow it. - -## [Z is for Zowe–the open path to mainframe DevOps][7] - -> This article describes the framework’s ability to onboard the mainframe to enterprise DevOps, so developers, systems programmers and others who work with the mainframe can now do so the same way their peers do with other IT platforms (i.e., cloud, mobile, distributed). These shared experiences close the gap between mainframers and others while preserving the core advantages of the platform. Common tools fuel a common language that benefits all, especially when deploying hybrid applications (e.g., web front-end with mainframe back-end). - -**The impact**: The point about common tools fueling a common language is subtle but important. Tools for tools' sake won't get you very far; bringing more minds to bear on a problem will. - -## [Tiering self-service by user competence][8] - -> The degree to which each team can reasonably create its own configurations is related to the team’s competence with cloud solution architecture, cloud engineering, and cloud security. Not every person on the team may have a high level of competence; in fact, that will generally not be the case. However, the very least, for full self-service there needs to be at least one person with strong competencies in each of those areas, who has oversight responsibilities, acts an expert (provides assistance/mentorship within the team), and does any necessary code review. - -**The impact**: We do it for driving cars and learning to ski; so why shouldn't we do it when it comes to letting people deploy sometimes critical applications? - -_I hope you enjoyed this list and come back next week for more open source community, market, and industry trends._ - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/9/virtual-conferences-service-mesh-industry-trends - -作者:[Tim Hildred][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/thildred -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/computer_space_graphic_cosmic.png?itok=wu493YbB (Computer laptop in space) -[2]: https://www.zdnet.com/article/enough-with-the-linux-security-fud/#ftag=RSSbaffb68 -[3]: https://www.cncf.io/blog/2020/08/26/a-look-back-at-our-first-kubecon-cloudnativecon-virtual-conference/ -[4]: https://devclass.com/2020/08/24/istio-service-mesh-1_7/ -[5]: https://istio.io/latest/blog/2020/open-usage/ -[6]: https://developer.ibm.com/blogs/istio-google-open-usage-commons/ -[7]: https://devops.com/z-is-for-zowe-the-open-path-to-mainframe-devops/ -[8]: https://cloudpundit.com/2020/08/10/tiering-self-service-by-user-competence/ diff --git a/sources/tech/20200916 Manage your Raspberry Pi fleet with Ansible.md b/sources/tech/20200916 Manage your Raspberry Pi fleet with Ansible.md deleted file mode 100644 index 42d39c2843..0000000000 --- a/sources/tech/20200916 Manage your Raspberry Pi fleet with Ansible.md +++ /dev/null @@ -1,229 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Manage your Raspberry Pi fleet with Ansible) -[#]: via: (https://opensource.com/article/20/9/raspberry-pi-ansible) -[#]: author: (Ken Fallon https://opensource.com/users/kenfallon) - -Manage your Raspberry Pi fleet with Ansible -====== -A solution to the problem of updating difficult-to-reach Raspberry Pis -in the enterprise. -![Raspberries with pi symbol overlay][1] - -The Raspberry Pi is a small, versatile device that makes interfacing with the real world a breeze for mere mortals. The Raspberry Pi Foundation's idea was to sell the devices at such a low cost that breaking one would be sad—but not a disaster. This is one reason it has been a massive success as an [educational tool][2]. But their usefulness has not escaped the business world, where they are becoming a valuable tool for automating the physical world. - -Whether they are used for powering information displays, automating testing, controlling machinery, monitoring an environment, or doing other tasks, enterprises see Raspberry Pis as serious devices for doing serious tasks. Each model has a long product lifecycle—even the older models ([1B+][3], [2B][4], [3A+][5], [3B][6], and [3B+][7]) will remain in production until at least January 2026. There is little risk that they will go obsolete, so you can maintain a sufficiently large stock and treat them as modular components that you replace rather than fix. - -### Stable hardware vs. changing software - -While you can rely on the hardware to remain constant, the same is not true for the software. The Raspberry Pi's official supported operating system is [Raspberry Pi OS][8] (previously called Raspbian), and it should be updated regularly to get the latest [security and bug fixes][9]. - -This presents a problem. Because Raspberry Pis provide a bridge between the physical and virtual worlds, they are often installed in difficult-to-reach locations. They also tend to be installed by hardware folks, typically electricians for plants and assembly technicians for products. You do not want to waste their time by requiring them to connect a keyboard and monitor, log in [to run `raspi-config`][10], install software with `apt-get`, and then configure the software. - -Since Raspberry Pi OS boots off an SD card, one approach is to always maintain an up-to-date version of the software on the SD card that the installer can just plug (and hot glue) in. A good quality assurance (QA) department will keep the SD cards under version control, so you can be assured that all new installations are on the latest release. But this solution is costly to maintain since every software update requires preparing a new image and burning it to all the SD cards. It also doesn't address how to fix all your existing devices. In some cases, you may need to create custom images for specific Raspberry Pis doing specific jobs, and it may be unavoidable that you need an installer to connect a keyboard and monitor to configure something. - -A better approach is to use the same minimal base operating system install and then use [network boot][11] to maintain all the customizations and updates on the network. This requires maintaining just one base image, which is easier to manage, so it is a good approach if you have a reliable network infrastructure. Unfortunately, not all networks support this method; as the Raspberry Pi's network boot documentation says: "Due to the huge range of networking devices available, we can't guarantee that network booting will work with any device." Sadly, it is no longer an option on the [Raspberry Pi 4][12]. Furthermore, this is not an option when devices are disconnected from the network for a long period of time. - -The better goal, therefore, is to produce a common base Raspberry Pi OS image that doesn't change often but, once it's installed, can automatically be customized, maintained, and managed remotely. - -### Create the base image - -Your base image will almost certainly need small changes from the default Raspberry Pi OS image. Fortunately, you only need to recreate the base image if the Raspberry Pi OS image is updated or you need to change something in your configuration. The typical time between major versions of Raspberry Pi OS is about two years, which is a good target maintenance lifecycle. It gives you plenty of time to swap out older devices for new ones while keeping things manageable for the QA department to maintain releases. Older versions will still be supported for security and bug fixes for [some time][13] after that. - -On my Hacker Public Radio episode _[Safely enabling SSH in the default Raspbian image][14]_ in 2017, I walked through the steps to automate updating the base image. The script I created: - - * Downloads the latest image ZIP file - * Verifies it is valid - * Extracts the image itself - * Enables SSH for secure remote management - * Changes the default passwords for the root and Pi users - * Secures the SSH server on the Pi - - - -Since then, I have augmented the script to: - - * Enable connections to a WiFi network (`wpa_supplicant.conf`) - * Load its configuration from an INI file, keeping sensitive information separate from the main script. - * Use [`losetup` to simplify mounting][15] the image - * Create a [firstboot script][16] - - - -These changes ensure that the devices are locked down before deploying them. You can find an updated version of the [fix-ssh-on-pi script][17] on GitHub. - -Now is a good time to modify the script for your environment and especially to add any security keys or digital certificates necessary for authentication. However, it's best to hold off adding any custom applications or configurations at this point, as they can be added later. For the most part, the image will behave like a generic Raspberry Pi OS image, meaning it will boot and resize the SD card as usual and install the typical default software and firmware. - -The notable addition is support for a firstboot script. This is the glue that makes the Raspberry Pi run your custom configuration after the first time it configures itself. Again, I encourage you to modify the script for your environment. For example, you can have the device register itself, run through a system test and diagnostic procedures, pull down a client application, etc. - -If you don't want to customize it, it will do the bare minimum needed to get your Raspberry Pi on the network so that it can be uniquely identified by the network-management software. - -### Set up automatic management - -If you're managing servers in a [DevOps][18] environment, you won't blink an eye at the idea of using [configuration management software][19] to control your Raspberry Pi devices. If you use a tool that requires an agent, you can include the agent software as part of the base image. Given the resources on the Raspberry Pi, though, an agentless solution such as [Ansible][20] might be the best option. It just uses SSH and Python, doesn't require any additional software on the client, the control software is easy to install, and it is easy to use. - -All you need is the [Ansible software][21], a list of devices you want to manage saved in an [inventory file][22], and a [playbook][23], which is a set of instructions that you want carried out. For example, you can [update][9] the base Raspberry Pi OS image using the `apt update && apt full-upgrade` equivalent [apt module][24]. The playbook would be: - - -``` - - name: Run the equivalent of "apt-get update" as a separate step -    apt: -      update_cache: true -      cache_valid_time: 3600 -  - name: Update all packages to the latest version -    apt: -      upgrade: dist -``` - -You may think installing Ansible for Raspberry Pi is overkill, but I find it is worthwhile if you need to manage more than two or three computers. Using Ansible also gives you a more hygienic network—your inventory is audited and listed in its host file, software installations are documented through its playbooks, and data and configurations are kept away from their devices, so they are easier to back up regularly. - -According to [Wikipedia][25], Ansible's design goals include: - -> * **Minimal in nature**. Management systems should not impose additional dependencies on the environment. -> * **Consistent**. With Ansible, one should be able to create consistent environments. -> * **Secure**. Ansible does not deploy agents to nodes. Only OpenSSH and Python are required on the managed nodes. -> * **Highly reliable**. When carefully written, an Ansible playbook can be [idempotent][26] to prevent unexpected side effects on the managed systems. It is entirely possible to have a poorly written playbook that is not idempotent. -> * **Minimal learning required**. Playbooks use an easy and descriptive language based on YAML and Jinja templates. -> - - -Anyone with the correct authorization can configure a device, but you can limit authorization using standard Unix permissions. You can apply granular access to playbooks so that, for example, test operators can access just the test and diagnostic tools you install. - -### How it works - -Imagine you have a widget factory that includes a Raspberry Pi in its product. Your facilities team also uses them to monitor the environmental plant and security. Likewise, the engineering team uses the devices on the production lines within the manufacturing monitoring process. And the IT department uses them as disposable dumb terminals to access the head office enterprise resource planning ([ERP][27]) system. In all of these cases, downtime needs to be kept to a minimum. - -We aim to deliver the exact same device with the exact same image to each of the teams. - -#### Preparing the image - -Common to all stages is preparing the image itself. After cloning the [fix-ssh-on-pi.bash script from github][17], a one time action is needed to edit and rename the files `fix-ssh-on-pi.ini_example` to `fix-ssh-on-pi.ini`, and `wpa_supplicant.conf_example` to `wpa_supplicant.conf`. - -You only need to run the script any time that [Raspberry Pi OS][8](Raspbian) is updated, or when you changed your configuration files. I would recommend including this as part of your devops workflow. If you don’t have that in place yet then it can be automated using a simple cron job. - -I would recommend having a Raspberry Pi Station dedicated to burning the latest SDCards in the store room. This would automatically burn the latest image from the network once a new card is inserted into the [external SD Card Reader][28]. With some imagination and a 3D printer, a nice unit could be manufactured for giving feedback on progress. - -When a Raspberry Pi is requisitioned, the store keepers can then remove one of the finished SDCards and include it with the work order. - -#### Inventory/Hosts File - -In our fictitious example, the role of the device will be determined by the location of the network that it has connected to. Therefore we need to be able to identify Raspberry Pies once they come onto the network. How you approach this will entirely depend on how your network is configured, and what tools is available to you. I would advise listening to the episode by [operat0r][29] called [hpr3090 :: Locating Computers on a Enterprise Network][30] for some great tips on how to do this. - -Each department would have their own provisioning server running the Ansible Software, which of course could be another Raspberry Pi. It is the standard unix/ssh permissions that dictate who has access to what within your organization. In episode [hpr3080 :: Ansible ping][31] I walked through the absolute basics of installing and troubleshooting [Ansible][20]. Since then [klaatu][32] added [hpr3162 :: Introduction to Ansible][33] which is a great introduction to the topic in general. - -How the provisioning server becomes aware of the new devices can be active or passive. - -You could have the [First Boot script][16] actively calling a url to register itself. You would need to have a web application listening and using the received information to register the new host in the Ansible Inventory. - -This might be a good approach for departments where devices are replaced infrequently and you want them provisioned as soon as possible. As an example when a water quality monitoring station gets replaced, it would be a good idea to have it register. The Electrician could then select the exact Playbook to deploy to the device via a smart phone app. - -On the other hand a passive approach may be better if you are going to be installing devices constantly, like on a production line. In that case we can assume that any new devices found on the production line network will have our test and diagnostic software installed at the beginning of the line. This can also be removed automatically prior to shipping. - -One of the changes that `fix-ssh-on-pi.bash` does is that it renames the hostname of each Raspberry Pi to a version based on it’s [Ethernet MAC address][34]. As an example a [Ethernet MAC address][34] of `dc:a6:32:01:23:45` will result in a [hostname][35] of `dca632012345`. - -When the Raspberry Pi finishes it’s first time boot sequence, the 3rd automatic reboot will request a IP Address from your [DHCP][36] server, that hostname will (probably) become available in the office [DNS][37] network. - -At this point your Raspberry Pi is accessible using something like `ssh dca632012345`, `ssh dca632012345.local`, `ssh dca632012345.lan`, or in our example `ssh dca632012345.production.example.com`. - -I included a small script on [github][17] to locate Raspberry Pies based on [Ethernet MAC address][34]. I discussed this recently on my Hacker Public Radio episode _[Locating computers on a network][38]_: - - -``` -# ./put-pi-in-ansible-host.bash | tee all_pies.ini -[all_pies] -b827eb012345 ansible_host=192.168.1.123 -dca632012345 ansible_host=192.168.1.127 -b827eb897654 ansible_host=192.168.1.143 -dca632897654 ansible_host=192.168.1.223 -``` - -In my _[Ansible ping][31]_ episode on Hacker Public Radio, I used a YAML inventory file instead of the INI version above. - -#### Execute a playbook - -Regardless of how the provisioning server becomes aware of the devices, you now know they exist. In this example, you would deploy different playbooks based on the subnet the device is in. - -Perhaps the simplest playbook you can try is this one (from _Ansible ping_ and available on [GitHub][17]): - - -``` -\- name: Test Ping -  hosts: all -  tasks: -  - action: ping -``` - -You should now have everything you need to communicate with the new devices: - - -``` -`ansible-playbook --inventory-file all_pies.ini ping-example-playbook.yaml` -``` - -By modifying the playbook, you can update and configure your devices any way you like. I use this to create users, update the system to the latest version, add and remove software, and do other configurations. There are several good examples available about updating your systems, such as the [Ansible apt update all packages on Ubuntu / Debian Linux][39] tutorial. - -At this point, the devices cease to be generic. You will know the exact role each Raspberry Pi should have, and you can provision it as such. How custom it is will depend on the playbook, but I advise having a specific [Ansible role][40] for each task you need a Pi to do. For example, even if your widget factory has only one water-quality monitoring station, you should still define a role for it. Not only will this allow you to quickly deploy an identical replacement if necessary, but you are also documenting the process, which may be required for certifications such as [ISO 9000][41]. - -You now have the means to audit that updates to your network are in place and being done regularly. Hopefully, this will keep your devices secure for many years of service. This method also applies to products you ship, as they can be updated via hotspots operated by field service engineers. During regular system maintenance, the Raspberry Pi is automatically updated using credentials supplied in the `wpa_supplicant.conf` file. - -### Make management easier - -I hope this has opened your mind about how to tackle managing many devices more easily. All you need to get started is your PC or laptop and a Raspberry Pi. The principles of burning a generic image, creating a device inventory, and deploying a playbook are the same whether you're working on a small scale or scaling up to hundreds of devices. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/9/raspberry-pi-ansible - -作者:[Ken Fallon][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/kenfallon -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/life-raspberrypi_0.png?itok=Kczz87J2 (Raspberries with pi symbol overlay) -[2]: https://www.raspberrypi.org/education/ -[3]: https://www.raspberrypi.org/products/raspberry-pi-1-model-b-plus/ -[4]: https://www.raspberrypi.org/products/raspberry-pi-2-model-b/ -[5]: https://www.raspberrypi.org/products/raspberry-pi-3-model-a-plus/ -[6]: https://www.raspberrypi.org/products/raspberry-pi-3-model-b/ -[7]: https://www.raspberrypi.org/products/raspberry-pi-3-model-b-plus/ -[8]: https://www.raspbian.org/ -[9]: https://www.raspberrypi.org/documentation/raspbian/updating.md -[10]: https://www.raspberrypi.org/documentation/configuration/raspi-config.md -[11]: https://www.raspberrypi.org/documentation/hardware/raspberrypi/bootmodes/net_tutorial.md -[12]: https://www.raspberrypi.org/blog/raspberry-pi-4-on-sale-now-from-35/#comment-1510410 -[13]: https://wiki.debian.org/DebianReleases -[14]: http://hackerpublicradio.org/eps.php?id=2356 -[15]: http://man7.org/linux/man-pages/man8/losetup.8.html -[16]: https://github.com/nmcclain/raspberian-firstboot -[17]: https://github.com/kenfallon/fix-ssh-on-pi -[18]: https://en.wikipedia.org/wiki/DevOps -[19]: https://en.wikipedia.org/wiki/Comparison_of_open-source_configuration_management_software -[20]: https://www.ansible.com/ -[21]: https://docs.ansible.com/ansible/latest/installation_guide/intro_installation.html -[22]: https://docs.ansible.com/ansible/latest/user_guide/intro_inventory.html -[23]: https://docs.ansible.com/ansible/latest/user_guide/playbooks_intro.html -[24]: https://docs.ansible.com/ansible/latest/modules/apt_module.html -[25]: https://en.wikipedia.org/wiki/Ansible_%28software%29%23Design_goals -[26]: https://en.wikipedia.org/wiki/Idempotent -[27]: https://en.wikipedia.org/wiki/Enterprise_resource_planning -[28]: https://www.amazon.com/StarTech-com-4-Slot-USB-C-Card-Reader/dp/B07HVPNQRQ/ -[29]: http://hackerpublicradio.org/correspondents.php?hostid=36 -[30]: http://hackerpublicradio.org/eps.php?id=3090 -[31]: http://hackerpublicradio.org/eps.php?id=3080 -[32]: http://hackerpublicradio.org/correspondents.php?hostid=78 -[33]: http://hackerpublicradio.org/eps.php?id=3162 -[34]: https://en.wikipedia.org/wiki/MAC_address -[35]: https://en.wikipedia.org/wiki/Hostname -[36]: https://en.wikipedia.org/wiki/Dynamic_Host_Configuration_Protocol -[37]: https://en.wikipedia.org/wiki/Domain_Name_System -[38]: http://hackerpublicradio.org/eps.php?id=3052 -[39]: https://www.cyberciti.biz/faq/ansible-apt-update-all-packages-on-ubuntu-debian-linux/ -[40]: https://docs.ansible.com/ansible/latest/user_guide/playbooks_reuse_roles.html -[41]: https://en.wikipedia.org/wiki/ISO_9000 diff --git a/sources/tech/20200917 Open Usage Commons- Google-s Initiative to Manage Trademark for Open Source Projects Runs into Controversy.md b/sources/tech/20200917 Open Usage Commons- Google-s Initiative to Manage Trademark for Open Source Projects Runs into Controversy.md deleted file mode 100644 index 1ba65ad315..0000000000 --- a/sources/tech/20200917 Open Usage Commons- Google-s Initiative to Manage Trademark for Open Source Projects Runs into Controversy.md +++ /dev/null @@ -1,83 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Open Usage Commons: Google’s Initiative to Manage Trademark for Open Source Projects Runs into Controversy) -[#]: via: (https://itsfoss.com/open-usage-commons-controversy/) -[#]: author: (Abhishek Prakash https://itsfoss.com/author/abhishek/) - -Open Usage Commons: Google’s Initiative to Manage Trademark for Open Source Projects Runs into Controversy -====== - -Back in July, Google [announced][1] a new organization named Open Usage Commons. The aim of the organization is to help “projects protect their project identity through programs such as trademark management and usage guidelines”. - -Google believes that “creating a neutral, independent ownership for these trademarks gives contributors and consumers peace of mind regarding their use of project names in a fair and transparent way”. - -### Open Usage Commons and the controversy with IBM - -![][2] - -Everything seems good in theory, right? But soon after the Google’s announcement of the Open Usage Commons, [IBM made an objection][3]. - -The problem is that Google included [Istio][4] project under [Open Usage Commons][5]. IBM is one of the founding members of the Istio project and it wants the project to be under open governance with [CNCF][6]. - -On behalf of It’s FOSS, I had a quick interaction with [Heikki Nousiainen][7], CTO at [Aiven][8] to clear some air on the entire Open Usage Commons episode. - -#### What is the Open Usage Commons trying to do? - -**Heikki Nousiainen**: The stated purpose of Google’s Open Usage Commons (OUC) is to provide a neutral and independent organization for open source projects to host and manage their trademarks. By applying open source software principles to trademarks, this will provide transparency and consistency. The idea is that this will lead to a more vibrant ecosystem for end users because vendors and developers can confidently build something that relies on projects’ brands.  - -Although other foundations, such as the Cloud Native Computing Foundation (CNCF) and [Apache Foundation][9], provide some direction on trademarks, OUC provides more precision and consistency in what constitutes fair use for vendors. This avoids what has generally been left to the individual projects to decide, which has resulted in a confusing patchwork of guidelines. - -Additionally, it is likely an attempt by Google to avoid situations similar to what [Amazon Web Services (AWS) has faced with Elasticsearch][10], e.g. where trademarks have appeared to be increasingly used to prevent exactly what Google is attempting to accomplish with this foundation, _**relatively open use of project brand identifiers by competing vendors**_. - -#### What are the problems surrounding the Commons? - -**Heikki Nousiainen**: The main controversy surrounds the question as to why [Istio][11] was not placed under CNCF governance as IBM was clearly expecting it to be placed under an [Open Governance model][12] once it matured. - -However, Open Usage Commons does not touch the governance model at all. Google, of course, has incentive to be able to trust they can utilize the recognized brands and trademarks to help customers recognize the services built on top of these familiar technologies. - -#### How will it impact the open source world, both positive and negative impacts? - -**Heikki Nousiainen**: It will remain to be seen what the long-term impact will be due to the fact that the only member projects are currently driven by Google. Although controversial, it doesn’t seem like the fears that Google would be able to enact effective control over member projects will materialize. - -A more telling question is, “Who will be likely to participate?” One thing is for sure, this will spark a long overdue discussion on how Open Source trademarks should be used when moving from software bundles to services offered in the cloud. - -#### Does it sound like some big players will have control over the definition of ‘open source trademarks’?  - -**Heikki Nousiainen**: Despite all the controversy over licensing, big players in this space have been and will remain key in securing the resources and support needed for the open source community to thrive. - -Although there is some self-interest here, the creation of vehicles such as this do not necessarily constitute an attempt at imposing unjustified control over projects. As a community-driven software, all must work alongside one another to achieve success. - -* * * - -Personally, I think Google’s long term game plan is to protect its Google Cloud Platform from possible lawsuits over the use of popular source projects’ trademarks and branding. - -What do you think of the entire Open Usage Commons episode? - --------------------------------------------------------------------------------- - -via: https://itsfoss.com/open-usage-commons-controversy/ - -作者:[Abhishek Prakash][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://itsfoss.com/author/abhishek/ -[b]: https://github.com/lujun9972 -[1]: https://opensource.googleblog.com/2020/07/announcing-new-kind-of-open-source.html -[2]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/09/google-open-usage-commons.png?resize=800%2C450&ssl=1 -[3]: https://developer.ibm.com/components/istio/blogs/istio-google-open-usage-commons/ -[4]: https://istio.io -[5]: https://openusage.org -[6]: https://www.cncf.io/ -[7]: https://www.linkedin.com/in/heikki-nousiainen/ -[8]: https://aiven.io -[9]: http://apache.org -[10]: https://news.bloomberglaw.com/ip-law/amazon-sued-for-allegedly-infringing-elasticsearch-trademarks -[11]: https://istio.io/ -[12]: https://developer.ibm.com/articles/open-governance-community/ diff --git a/sources/tech/20200917 Update devices remotely with this open source tool.md b/sources/tech/20200917 Update devices remotely with this open source tool.md deleted file mode 100644 index 5b4ee15fb4..0000000000 --- a/sources/tech/20200917 Update devices remotely with this open source tool.md +++ /dev/null @@ -1,277 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Update devices remotely with this open source tool) -[#]: via: (https://opensource.com/article/20/9/update-remote-devices-updatehub) -[#]: author: (Domarys https://opensource.com/users/domarys) - -Update devices remotely with this open source tool -====== -Handle all your complete device updates, including firmware and -bootloaders, over the air with UpdateHub Community Edition. -![Working from home at a laptop][1] - -The ability to access, connect, and [manage multiple devices remotely][2] through a single account is important. Going a step further, being able to completely update devices remotely is another way for sysadmins to reduce effort and minimize headaches. - -[UpdateHub][3] is an open source solution that allows you to do complete device updates, including firmware and bootloaders, remotely. Its goal is to make it easier to do device updates and reduce rework and risk, whether you're updating thousands of devices or managing small deployments. UpdateHub handles all aspects of over-the-air (OTA) updates, including package integrity and authenticity, while you take care of your other work. - -This step-by-step guide to UpdateHub aims to help you get started with this professional tool. There are two UpdateHub server options: [UpdateHub Cloud][4] and [UpdateHub Community Edition][3] (UpdateHub CE), a fully open source server (distributed under the MIT License), which is what this tutorial uses. - -### Check the requirements - -First, make sure your Linux distribution has installed all [the required packages][5] to build an image using the Yocto Project. - -You also need the following hardware: - - * **Target** is the development device. This tutorial uses a [Raspberry Pi 3 Model B+][6], but you could also use a Raspberry Pi 3, Model B, or Model B+. - * **Host** is the computer where you will build the image using the Yocto Project. This tutorial uses [Yocto 3.1 Dunfell][7]. - - - -To start UpdateHub CE, you must have [Docker][8] installed on the host. If you don't have it, see Docker's [orientation and setup][9] instructions. - -This tutorial uses Google's [repo tool][10] to facilitate the process, as it requires multiple repositories. You can learn more about repo in the [Android development setup guide][11]. - -On Debian and Ubuntu distros, install repo with: - - -``` -`sudo apt install repo` -``` - -If you're using another Linux distribution, download repo directly and set your distro with: - - -``` -mkdir ~/bin -curl > ~/bin/repo -chmod a+x ~/bin/repo -PATH=${PATH}:~/bin -``` - -Finally, you need network connectivity via [DHCP][12], or you must know how to change the internet protocol (IP) address or to create a Yocto Project layer that handles this configuration. - -### Prepare your environment for the build - -UpdateHub provides a repository with a manifest file used by the repo tool, which makes it easier to manage multiple layers. - -Download the source code by creating a directory and fetching the necessary Yocto Project layers: - - -``` -mkdir updatehub-platform -cd updatehub-platform -repo init -u -b dunfell -repo sync -``` - -After the `repo sync` command completes, you will see all the layers you need in the `sources` directory. - -The UpdateHub platform provides support for multiple [supported devices][13]. During the Yocto Project environment setup, it will ask if you want to accept the end-user license agreement (EULA) of the `meta-freescale` layer; this is not necessary for this project. - -Load the Yocto Project environment: - - -``` -`MACHINE="raspberrypi3" source ./setup-environment build` -``` - -Note that this command is valid only for the terminal session where you loaded the environment. If you use a new terminal, you will need to load the environment again. However, you won't need to configure the machine again because the configuration content is stored in the `conf/local.conf` file. - -### Start UpdateHub CE - -With Docker installed, download the Docker image and start the server on port 8080: - - -``` -`docker run -d -p 8080:8080 updatehub/updatehub-ce:latest` -``` - -![Installing and running the server with Docker image][14] - -(Domarys Correa, [CC BY-SA 4.0][15]) - -Access the UpdateHub CE dashboard through the host IP address and port 8080 (`http://IP_ADDRESS:8080`). The host IP in the example is 192.168.15.50, so that would be `http://192.168.15.50:8080`. - -Use the default of `admin` for the login and password, and click **Login**. - -You need to configure the `UPDATEHUB_SERVER_URL` to use the UpdateHub CE address because the device needs to know the server's IP address. By default, the `meta-updatehub` layer uses the UpdateHub Cloud address in the server URL variable. - -You should see UpdateHub CE's main interface: - -![Accessing the UpdateHub CE dashboard][16] - -(Domarys Correa, [CC BY-SA 4.0][15]) - -### Configure the environment to generate the image - -The next step is to generate the Linux image that will be used by the device. But first, you need to set up some variables in the `conf/local.conf` file: - - -``` -UPDATEHUB_SERVER_URL = "" -UPDATEHUB_PACKAGE_VERSION_SUFFIX = "-test-image-1" -ENABLE_UART = "1" -UPDATEHUB_POLLING_INTERVAL = "1m" -``` - -Going line by line in the above code: - - * `UPDATEHUB_SERVER_URL` contains the IP address where UpdateHub CE is running. - * `UPDATEHUB_PACKAGE_VERSION_SUFFIX` adds a suffix in the image version. This is useful for placing a version number and incrementing it for each new image. This variable will be the `VERSION_ID`, which is composed of the `DISTRO_VERSION` (described in the [docs][17]) plus the `UPDATEHUB_PACKAGE_VERSION_SUFFIX`. You can verify this in the `/etc/os-release` file in the target. - * `ENABLE_UART`: There are several ways to access the target device, such as using the serial console or connecting a keyboard and a monitor. This variable allows access to a serial console on a Raspberry Pi by using the serial ports available on the GPIO header. - * `UPDATEHUB_POLLING_INTERVAL`: By default, communication between UpdateHub's agent and server happens every 24 hours. Use this variable to set up a new consultation time of 1 minute. - - - -This tutorial uses [Minicom][18] to connect with the target; if you want, you can learn more about [using the serial connection in Raspberry Pi][19]. - -### Generate the image - -Now that the Yocto Project environment is ready, compile the image using the [BitBake][20] task-execution engine by running: - - -``` -`bitbake updatehub-image-base` -``` - -Image generation can take a while, depending on the host machine. If this is the first time you are building an image for `raspberrypi3` in Yocto's Dunfell branch, BitBake will download the entire source code, so your download speed will influence the time it takes to generate the image. - -Once the image is compiled, navigate to the `build/tmp/deploy/images/raspberrypi3/` host directory and verify the image file, `updatehub-image-minimal-raspberrypi3.wic.gz`, is there. - -Insert an SD card into your Raspberry Pi and check its name by running `dmesg`. Then flash the image to your SD card with the following command, but make sure to change `/dev/sdX` to your SD card name: - - -``` -`zcat updatehub-image-base-raspberrypi3.wic.gz | sudo dd of=/dev/sdX` -``` - -Insert the imaged SD card into the target device to connect to Raspberry Pi. The image has a network configured to obtain an IP address using DHCP. Access the console with user `root` and leave the password empty. - -Confirm the version of the image running on the target using `cat /etc/os-release`. - -![Viewing a version of the image with Minicom][21] - -(Domarys Correa, [CC BY-SA 4.0][15]) - -### Generate the update package - -Your device should be running and working correctly, but you need to add the feature to create an update package. This creates an image to update your target. The following example adds support for an SSH server on the target and creates an update package to install this functionality. - -Add support for the OpenSSH server by adding the following line to the `build/conf/local.conf` file: - - -``` -`IMAGE_FEATURES += "ssh-server-openssh"` -``` - -To make it clear that the updated image will have another version, put the suffix `-test-image-2` in the `UPDATEHUB_PACKAGE_VERSION_SUFFIX` variable: - - -``` -`UPDATEHUB_PACKAGE_VERSION_SUFFIX = "-test-image-2"` -``` - -Save the file and run: - - -``` -`bitbake updatehub-image-base -c uhuarchive` -``` - -This command generates a file with a `.uhupkg` extension, a format used by UpdateHub to update the system. The generated file will be in the same directory as the images are, `tmp/deploy/images/raspberrypi3`; in this example, that's `updatehub-image-base-raspberrypi3.uhupkg`. - -### Check your device - -To access the UpdateHub CE dashboard, click the **Devices** tab to see if your device is listed: - -![Device section on the UpdateHub CE][22] - -(Domarys Correa, [CC BY-SA 4.0][15]) - -### Send an update package - -UpdateHub CE dashboard's **Packages** tab shows a list of available packages, but you do not have any yet. To add a package, click the **Upload Package** button, and select the `updatehub-image-minimal-raspberrypi3.uhupkg` file. In this example, it is in `tmp/deploy/images/raspberrypi3/directory`. A screen showing the package details will appear. This shows the process of adding an update package to the dashboard: - -![Add an update package][23] - -(Domarys Correa, [CC BY-SA 4.0][15]) - -### Create a rollout - -With the device recognized and the packet sent to the server, you can create a rollout, which is essentially a deployment plan. Navigate to the **Rollouts** tab and click **Create Rollout**. Choose which package version you want to use in the upgrade. This example only has the package from the previous step, with version `20.04-test-image-2`. Choose this version, and make sure it includes the list of devices that will be updated. - -![Creating a rollout and checking the device update][24] - -(Domarys Correa, [CC BY-SA 4.0][15]) - -Previously, you configured the image running on the target to perform an update query on the UpdateHub server every minute, so within one minute of creating the rollout, the update process will start. To track the update status, check the **Rollouts** tab. - -![The update process][25] - -(Domarys Correa, [CC BY-SA 4.0][15]) - -After finishing an upgrade process, the target reboots automatically. The new image boots up and automatically queries the server for updates. The server responds that it does not have any updates and ends the update cycle. - -When the status shows `updated`, run the command below on the host to access the target over SSH: - - -``` -`ssh root@IP_DO_TARGET` -``` - -No password is required; just press **Enter**, and you will be in the target console. You can check the version in the `/etc/os-release` file to confirm. - -### Congratulations! You're done! - -Now you have access to a professional tool to update your devices remotely. This tutorial used a Raspberry Pi 3 with the Yocto Project version Dunfell 3.1.2, but [other devices and versions][13] are supported. - -If you have any questions about integrating your device, access the developers' team through [Gitter][26] or by emailing [contact@updatehub.io][27]. - -* * * - -_This article is based on [UpdateHub: Sending OTA Updates using the Yocto Project][28] on UpdateHub's blog._ - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/9/update-remote-devices-updatehub - -作者:[Domarys][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/domarys -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/wfh_work_home_laptop_work.png?itok=VFwToeMy (Working from home at a laptop) -[2]: https://opensource.com/article/20/7/linux-shellhub -[3]: https://github.com/UpdateHub/updatehub-ce -[4]: https://updatehub.io/ -[5]: https://www.yoctoproject.org/docs/2.6.1/mega-manual/mega-manual.html#required-packages-for-the-build-host -[6]: https://www.raspberrypi.org/products/raspberry-pi-3-model-b-plus/ -[7]: https://old.yoctoproject.org/yoctoproject/dunfell -[8]: https://www.docker.com/ -[9]: https://docs.docker.com/get-started/ -[10]: https://gerrit.googlesource.com/git-repo/+/refs/heads/master/README.md -[11]: https://source.android.com/setup/develop -[12]: https://en.wikipedia.org/wiki/Dynamic_Host_Configuration_Protocol -[13]: https://docs.updatehub.io/yocto-project/supported-machines/ -[14]: https://opensource.com/sites/default/files/uploads/yocto1_installserver.gif (Installing and running the server with Docker image) -[15]: https://creativecommons.org/licenses/by-sa/4.0/ -[16]: https://opensource.com/sites/default/files/uploads/yocto2_updatehubce-dashboard.gif (Accessing the UpdateHub CE dashboard) -[17]: https://www.yoctoproject.org/docs/2.6.1/ref-manual/ref-manual.html#var-DISTRO_VERSION -[18]: https://wiki.emacinc.com/wiki/Getting_Started_With_Minicom -[19]: https://elinux.org/RPi_Serial_Connection -[20]: https://github.com/openembedded/bitbake -[21]: https://opensource.com/sites/default/files/uploads/yocto_confirm.gif (Viewing a version of the image with Minicom) -[22]: https://opensource.com/sites/default/files/uploads/yocto_device-dashboard.gif (Device section on the UpdateHub CE) -[23]: https://opensource.com/sites/default/files/uploads/yocto_addupdate.gif (Add an update package) -[24]: https://opensource.com/sites/default/files/uploads/yocto6_createrollout.gif (Creating a rollout and checking the device update) -[25]: https://opensource.com/sites/default/files/uploads/yocto7.gif (The update process) -[26]: https://gitter.im/UpdateHub -[27]: mailto:contact@updatehub.io -[28]: https://blog.updatehub.io/updatehub-sending-ota-updates-using-the-yocto-project/ diff --git a/sources/tech/20200919 3 ways to protect yourself from imposter syndrome.md b/sources/tech/20200919 3 ways to protect yourself from imposter syndrome.md deleted file mode 100644 index 63d511c530..0000000000 --- a/sources/tech/20200919 3 ways to protect yourself from imposter syndrome.md +++ /dev/null @@ -1,59 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (3 ways to protect yourself from imposter syndrome) -[#]: via: (https://opensource.com/article/20/9/imposter-syndrome) -[#]: author: (Josh Atwell https://opensource.com/users/joshatwell) - -3 ways to protect yourself from imposter syndrome -====== -It can be hard to believe you deserve success, sometimes, but these tips -can help you combat impostor syndrome and accept the accolades you've -earned. -![Brain on a computer screen][1] - -Poet and activist Maya Angelou published many books throughout her storied career, but each time, she feared people would figure out that she'd "run a game on everybody, and they're going to find me out." This seems an odd response from a well-honored writer. What she is describing is her own challenge with imposter syndrome. - -Think for a moment about your own accomplishments. Being hired into a new role. Having your first [open source contribution][2] merged into the project. Receiving an award or recognition. Being invited to participate in a project or event with people you respect and look up to. Did you question whether you belonged there? Did you fear people would "know that you didn't belong?" There is an extremely high likelihood that you have also experienced imposter syndrome. Please check the survey at the end of this article to see that you're not alone. - -Imposter syndrome is a "[psychological term][3] referring to a pattern of behavior where people doubt their accomplishments and have a persistent, often internalized fear of being exposed as a fraud." It's not considered a disorder, but it's persistent and can keep you from trying new things, accepting praise, or enjoying success. It's also important to understand that imposter syndrome is indiscriminate to gender, race, or nationality. Anyone can be impacted. Fortunately, you can be prepared for when imposter syndrome rears its ugly head. - -How do you protect yourself from letting imposter syndrome limit you? Here are three techniques that you can start using right away: - -**1\. Feelings vs. facts**—It's important to understand that imposter syndrome is a feeling and doesn't represent a factual assessment of your value or acceptance. Instead of thinking, "I don't deserve to be here," say to yourself, "I'm here because I earned it," or "I trust the judgment of those who invited me here that I truly deserve to be here." Ask yourself if the negative thoughts are from facts or a story you are telling yourself. This simple shift in focus from feelings to facts can set you back on the right course. - -![3 panels, woman says "I don't deserve to be here." with red X on top, woman says "I should trust the judgment of people who invited me." with green check, woman says "I deserve to be here." with green check][4] - -**2\. "Outsider" does not equal "fraud"**—Simply because your peer group has changed does not mean that you do not belong. Inclusion in higher levels of an organization, accomplished industry peers, or a group of award recipients is almost always a result of meaningful contributions. That first day of school feeling never goes away, even if it's remote school. So, unless you are legitimately a party crasher, keep in mind that you have value to add to the group and share it, even if you are nervous at first. - -**3\. Faking it**—Unfortunately, it's not universally understood that people learn how to do the job AFTER they get the job. There are few better ways to set yourself up for continued success than first believing that additional success is possible. Just be mindful not to fall into the trap of the cognitive bias known as the Dunning-Kruger effect, which leads people to vastly overestimate their capabilities. "Fake it until you make it," but commit to continued learning. - -There are so many ways imposter syndrome can disrupt both our professional and personal lives, but with some awareness and preparation, you can avoid letting it limit your growth and success. These are just a few ways to address imposter syndrome. For more information, you can also visit . - -[In this survey][5], we'd like to ask you to provide some information based on your experiences, which we'll use to help further inform the community about imposter syndrome and how prevalent it is in our industry. - -![Green chalkboard image reading "Take the Survey!"][6] - -This post includes excerpted content from an upcoming community presentation titled "Imposter Syndrome First Aid Kit" by Josh Atwell and Amy Lewis. If you're interested in hearing the full presentation, you can check it out at Splunk .conf20 on October 20-21. Registration is available at . - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/9/imposter-syndrome - -作者:[Josh Atwell][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/joshatwell -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/brain_computer_solve_fix_tool.png?itok=okq8joti (Brain on a computer screen) -[2]: https://opensource.com/article/19/11/my-first-open-source-contribution-impostor-syndrome -[3]: https://www.psychologytoday.com/us/blog/real-women/201809/the-reality-imposter-syndrome -[4]: https://opensource.com/sites/default/files/uploads/impostor_syndrome_1.png (Person progresses through stages of impostor syndrome) -[5]: https://pollev.com/amylewis963?_ga=2.60457517.1623261502.1598557790-809388036.1598557790 -[6]: https://opensource.com/sites/default/files/uploads/impostor_syndrome_survey.png (Green chalkboard image reading "Take the Survey!") diff --git a/sources/tech/20200921 Solve a real-world problem using Java.md b/sources/tech/20200921 Solve a real-world problem using Java.md deleted file mode 100644 index 9ee7423818..0000000000 --- a/sources/tech/20200921 Solve a real-world problem using Java.md +++ /dev/null @@ -1,328 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Solve a real-world problem using Java) -[#]: via: (https://opensource.com/article/20/9/problem-solving-java) -[#]: author: (Chris Hermansen https://opensource.com/users/clhermansen) - -Solve a real-world problem using Java -====== -See how Java differs from Python and Groovy as it's used to solve a -charity's real-world problem. -![Coffee beans and a cup of coffee][1] - -As I wrote in the first two articles in this series, I enjoy solving small problems by writing small programs in different languages, so I can compare the different ways they approach the solution. The example I'm using in this series is dividing bulk supplies into hampers of similar value to distribute to struggling neighbors in your community, which you can [read about][2] in the first article in this series. - -In the first article, I solved this problem [using the Groovy programming language][2], which is like Python in many ways, but syntactically it's more like C and Java. In the second article, I [solved it in Python][3] with a very similar design and effort, which demonstrates the resemblance between the languages. - -Now I'll try it in [Java][4]. - -### The Java solution - -When working in Java, I find myself declaring utility classes to hold tuples of data (the new record feature is going to be great for that), rather than using the language support for maps offered in Groovy and Python. This is because Java encourages creating maps that map one specific type to another specific type, but in Groovy or Python, it's cool to have a map with mixed-type keys and mixed-type values. - -The first task is to define these utility classes, and the first is the `Unit` class: - - -``` -class Unit { -    private [String][5] item, brand; -    private int price; - -    public Unit([String][5] item, [String][5] brand, int price) { -        this.item = item; -        this.brand = brand; -        this.price = price; -    } -    public [String][5] getItem() { return this.item; } -    public [String][5] getBrand() { return this.brand; } -    public int getPrice() { return this.price; } - -    @Override -    public [String][5] toString() { return [String][5].format("item: %s brand: %s price: %d",item,brand,price); } -} -``` - -There's nothing too startling here. I effectively created a class whose instances are immutable since there are no setters for fields `item`, `brand`, or `price` and they are declared `private`. As a general rule, I don't see value in creating a mutable data structure unless I'm going to mutate it; and in this application, I don't see any value in mutating the `Unit` class. - -While more effort is required to create these utility classes, creating them encourages a bit more design effort than just using a map, which can be a good thing. In this case, I realized that a bulk package is composed of a number of individual units, so I created the `Pack` class: - - -``` -class Pack { -    private Unit unit; -    private int count; - -    public Pack([String][5] item, [String][5] brand, int unitCount, int packPrice) { -        this.unit = new Unit(item, brand, unitCount > 0 ? packPrice / unitCount : 0); -        this.count = unitCount; -    } - -    public [String][5] getItem() { return unit.getItem(); } -    public [String][5] getBrand() { return unit.getBrand(); } -    public int getUnitPrice() { return unit.getPrice(); } -    public int getUnitCount() { return count; } -    public List<Unit> unpack() { return [Collections][6].nCopies(count, unit); } - -    @Override -    public [String][5] toString() { return [String][5].format("item: %s brand: %s unitCount: %d unitPrice: %d",unit.getItem(),unit.getBrand(),count,unit.getPrice()); } -} -``` - -Similar to the `Unit` class, the `Pack` class is immutable. A couple of things worth mentioning here: - - 1. I could have passed a `Unit` instance into the `Pack` constructor. I chose not to because the bundled, physical nature of a bulk package encouraged me to think of the "unit-ness" as an internal thing not visible from the outside but that requires unpacking to expose the units. Is this an important decision in this case? Probably not, but to me, at least, it's always good to think through this kind of consideration. - 2. Which leads to the `unpack()` method. The `Pack` class creates the list of `Unit` instances only when you call this method—that is, the class is _lazy_. As a general design principle, I've found it's worthwhile to decide whether a class' behavior should be eager or lazy, and when it doesn't seem to matter, I go with lazy. Is this an important decision in this case? Maybe—this lazy design enables a new list of `Unit` instances to be generated on every call of `unpack()`, which could prove to be a good thing down the road. In any case, getting in the habit of always thinking about eager vs. lazy behavior is a good habit. - - - -The sharp-eyed reader will note that, unlike in the Groovy and Python examples where I was mostly focused on compact code and spent way less time thinking about design decisions, here, I separated the definition of a `Pack` from the number of `Pack` instances purchased. Again, from a design perspective, this seemed like a good idea as the `Pack` is conceptually quite independent of the number of `Pack` instances acquired. - -Given this, I need one more utility class: the `Bought` class: - - -``` -class Bought { -    private Pack pack; -    private int count; - -    public Bought(Pack pack, int packCount) { -        this.pack = pack; -        this.count = packCount; -    } - -    public [String][5] getItem() { return pack.getItem(); } -    public [String][5] getBrand() { return pack.getBrand(); } -    public int getUnitPrice() { return pack.getUnitPrice(); } -    public int getUnitCount() { return pack.getUnitCount() * count; } -    public List<Unit> unpack() { return [Collections][6].nCopies(count, pack.unpack()).stream().flatMap([List][7]::stream).collect(Collectors.toList()); } - -    @Override -    public [String][5] toString() { return [String][5].format("item: %s brand: %s bought: %d pack(s) totalUnitCount: %d unitPrice: %d",pack.getItem(),pack.getBrand(),count,pack.getUnitCount() * count,pack.getUnitPrice()); } -} -``` - -Notably: - - 1. I decided to pass a `Pack` into the constructor. Why? Because to my way of thinking, the physical structure of the purchased bulk packages is external, not internal, as in the case of the individual bulk packages. Once again, it may not be important in this application, but I believe it's always good to think about these things. If nothing else, note that I am not married to symmetry! - 2. Once again the `unpack()` method demonstrates the lazy design principle. This goes to more effort to generate a list of `Unit` instances (rather than a _list of lists_ of `Unit` instances, which would be easier but require flattening further out in the code). - - - -OK! Time to move on and solve the problem. First, declare the purchased packs: - - -``` -        var packs = new Bought[] { -            new Bought(new Pack("Rice","Best Family",10,5650),1), -            new Bought(new Pack("Spaghetti","Best Family",1,327),10), -            new Bought(new Pack("Sardines","Fresh Caught",3,2727),3), -            new Bought(new Pack("Chickpeas","Southern Style",2,2600),5), -            new Bought(new Pack("Lentils","Southern Style",2,2378),5), -            new Bought(new Pack("Vegetable oil","Crafco",12,10020),1), -            new Bought(new Pack("UHT milk","Atlantic",6,4560),2), -            new Bought(new Pack("Flour","Neighbor Mills",10,5200),1), -            new Bought(new Pack("Tomato sauce","Best Family",1,190),10), -            new Bought(new Pack("Sugar","Good Price",1,565),10), -            new Bought(new Pack("Tea","Superior",5,2720),2), -            new Bought(new Pack("Coffee","Colombia Select",2,4180),5), -            new Bought(new Pack("Tofu","Gourmet Choice",1,1580),10), -            new Bought(new Pack("Bleach","Blanchite",5,3550),2), -            new Bought(new Pack("Soap","Sunny Day",6,1794),2) -        }; -``` - -This is pretty nice from a readability perspective: there is one pack of Best Family Rice containing 10 units that cost 5,650 (using those crazy monetary units, like in the other examples). It's straightforward to see that in addition to the one bulk pack of 10 bags of rice, the organization acquired 10 bulk packs of one bag each of spaghetti. The utility classes are doing some work under the covers, but that's not important at this point because of the great design job! - -Note the `var` keyword is used here; it's one of the nice features in recent versions of Java that help make the language a bit less verbose (the principle is called _DRY_—don't repeat yourself) by letting the compiler infer the variable's data type from the right-side expression's type. This looks kind of similar to the Groovy `def` keyword, but since Groovy by default is dynamically typed and Java is statically typed, the typing information inferred in Java by `var` persists throughout the lifetime of that variable. - -Finally, it's worth mentioning that `packs` here is an array and not a `List` instance. If you were reading this data from a separate file, you would probably prefer to create it as a list. - -Next, unpack the bulk packages. Because the unpacking of `Pack` instances is delegated into lists of `Unit` instances, you can use that like this: - - -``` -        var units = Stream.of(packs) -            .flatMap(bought -> { -                return bought.unpack().stream(); }) -            .collect(Collectors.toList()); -``` - -This uses some of the nice functional programming features introduced in later Java versions. Convert the array `packs` declared previously to a Java stream, use `flatmap()` with a lambda to flatten the sublists of units generated by the `unpack()` method of the `Bought` class, and collect the resulting stream elements back into a list. - -As in the Groovy and Java solutions, the final step is repacking the units into the hampers for distribution. Here's the code—it's not much wordier than the Groovy version (tiresome semicolons aside) nor really all that different: - - -``` -        var valueIdeal = 5000; -        var valueMax = [Math][8].round(valueIdeal * 1.1); -        var rnd = new [Random][9](); -        var hamperNumber = 0;                         // [1] - -        while (units.size() > 0) {                    // [2] -            hamperNumber++; -            var hamper = new ArrayList<Unit>(); -            var value = 0;                            // [2.1] -            for (boolean canAdd = true; canAdd; ) {   // [2.2] -                var u = rnd.nextInt(units.size());            // [2.2.1] -                canAdd = false;                               // [2.2.2] -                for (int o = 0; o < units.size(); o++) {      // [2.2.3] -                    var uo = (u + o) % units.size(); -                    var unit = units.get(uo);                      // [2.2.3.1] -                    if (units.size() < 3 || -                            !hamper.contains(unit) && -                            (value + unit.getPrice()) < valueMax) { // [2.2.3.2] -                        hamper.add(unit); -                        value += unit.getPrice(); -                        units.remove(uo);                           // [2.2.3.3] -                        canAdd = units.size() > 0; -                        break;                                      // [2.2.3.4] -                    } -                } -            }                                                // [2.2.4] -            [System][10].out.println(); -            [System][10].out.printf("Hamper %d value %d:\n",hamperNumber,value); -            hamper.forEach(unit -> { -                [System][10].out.printf("%-25s%-25s%7d\n", unit.getItem(), unit.getBrand(), -                       unit.getPrice()); -            });                                                      // [2.3] -            [System][10].out.printf("Remaining units %d\n",units.size());  // [2.4] -``` - -Some clarification, with numbers in brackets in the comments above (e.g., _[1]_) corresponding to the clarifications below: - - * 1\. Set up the ideal and maximum values to be loaded into any given hamper, initialize Java's random number generator and the hamper number. - * 2\. This `while {}` loop will redistribute units into hampers as long as there are more available: - * 2.1 Increment the hamper number, get a new empty hamper (a list of `Unit` instances), and set its value to 0. - * 2.2 This `for {}` loop will add as many units to the hamper as possible: - * 2.2.1 Get a random number between zero and the number of remaining units minus 1. - * 2.2.2 Assume you can't find more units to add. - * 2.2.3 This `for {}` loop, starting at the randomly chosen index, will try to find a unit that can be added to the hamper. - * 2.2.3.1 Figure out which unit to look at. - * 2.2.3.2 Add this unit to the hamper if there are only a few left or if the value of the hamper isn't too high once the unit is added _and_ that unit isn't already in the hamper. - * 2.2.3.3 Add the unit to the hamper, increment the hamper value by the unit price, and remove the unit from the available units list. - * 2.2.3.4 As long as there are units left, you can add more, so break out of this loop to keep looking. - * 2.2.4 On exit from this `for {}` loop, if you inspected every remaining unit and could not find one to add to the hamper, the hamper is complete; otherwise, you found one and can continue looking for more. - * 2.3 Print out the contents of the hamper. - * 2.4 Print out the remaining units info. - - - -When you run this code, the output looks quite similar to the output from the Groovy and Python programs: - - -``` -Hamper 1 value 5465: -Tofu                     Gourmet Choice              1580 -Bleach                   Blanchite                    710 -Coffee                   Colombia Select             2090 -Flour                    Neighbor Mills               520 -Sugar                    Good Price                   565 -Remaining units 150 - -Hamper 2 value 5482: -Sardines                 Fresh Caught                 909 -Tomato sauce             Best Family                  190 -Vegetable oil            Crafco                       835 -UHT milk                 Atlantic                     760 -Chickpeas                Southern Style              1300 -Lentils                  Southern Style              1189 -Soap                     Sunny Day                    299 -Remaining units 143 - -Hamper 3 value 5353: -Soap                     Sunny Day                    299 -Rice                     Best Family                  565 -UHT milk                 Atlantic                     760 -Flour                    Neighbor Mills               520 -Vegetable oil            Crafco                       835 -Bleach                   Blanchite                    710 -Tomato sauce             Best Family                  190 -Sardines                 Fresh Caught                 909 -Sugar                    Good Price                   565 -Remaining units 134 - -… - -Hamper 23 value 5125: -Sardines                 Fresh Caught                 909 -Rice                     Best Family                  565 -Spaghetti                Best Family                  327 -Lentils                  Southern Style              1189 -Chickpeas                Southern Style              1300 -Vegetable oil            Crafco                       835 -Remaining units 4 - -Hamper 24 value 2466: -UHT milk                 Atlantic                     760 -Spaghetti                Best Family                  327 -Vegetable oil            Crafco                       835 -Tea                      Superior                     544 -Remaining units 0 -``` - -The last hamper is abbreviated in contents and value. - -### Closing thoughts - -The similarities in the "working code" with the Groovy original are obvious—the close relationship between Groovy and Java is evident. Groovy and Java diverged in a few ways in things that were added to Java after Groovy was released, such as the `var` vs. `def` keywords and the superficial similarities and differences between Groovy closures and Java lambdas. Moreover, the whole Java streams framework adds a great deal of power and expressiveness to the Java platform (full disclosure, in case it's not obvious—I am but a babe in the Java streams woods). - -Java's intent to use maps for mapping instances of a single type to instances of another single type pushes you to use utility classes, or tuples, instead of the more inherently flexible intents in Groovy maps (which are basically just `Map` plus a lot of syntactic sugar to vanish the kinds of casting and `instanceof` hassles that you would create in Java) or in Python. The bonus from this is the opportunity to apply some real design effort to these utility classes, which pays off at least insofar as it instills good habits in the programmer. - -Aside from the utility classes, there isn't a lot of additional ceremony nor boilerplate in the Java code compared to the Groovy code. Well, except that you need to add a bunch of imports and wrap the "working code" in a class definition, which might look like this: - - -``` -import java.lang.*; -import java.util.*; -import java.util.Collections.*; -import java.util.stream.*; -import java.util.stream.Collectors.*; -import java.util.Random.*; - -public class Distribute { - -    static public void main([String][5][] args) { -        // the working code shown above -    } -} -class Unit { … } -class Pack { … } -class Bought { … } -``` - -The same fiddly bits are necessary in Java as they are in Groovy and Python when it comes to grabbing stuff out of the list of `Unit` instances for the hampers, involving random numbers, loops through remaining units, etc. - -Another issue worth mentioning—this isn't a particularly efficient approach. Removing elements from `ArrayLists`, being careless about repeated expressions, and a few other things make this less suitable for a huge redistribution problem. I've been a bit more careful here to stick with integer data. But at least it's quite quick to execute. - -Yes, I'm still using the dreaded `while { … }` and `for { … }`. I still haven't thought of a way to use map and reduce style stream processing in conjunction with a random selection of units for repackaging. Can you? - -Stay tuned for the next articles in this series, with versions in [Julia][11] and [Go][12]. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/9/problem-solving-java - -作者:[Chris Hermansen][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/clhermansen -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/java-coffee-mug.jpg?itok=Bj6rQo8r (Coffee beans and a cup of coffee) -[2]: https://opensource.com/article/20/8/solving-problem-groovy -[3]: https://opensource.com/article/20/8/solving-problem-python -[4]: https://www.java.com/en/ -[5]: http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+string -[6]: http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+collections -[7]: http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+list -[8]: http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+math -[9]: http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+random -[10]: http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+system -[11]: https://julialang.org/ -[12]: https://golang.org/ diff --git a/sources/tech/20200921 Use this Python script to simulate Babbage-s Difference Engine.md b/sources/tech/20200921 Use this Python script to simulate Babbage-s Difference Engine.md deleted file mode 100644 index e6550c3b7d..0000000000 --- a/sources/tech/20200921 Use this Python script to simulate Babbage-s Difference Engine.md +++ /dev/null @@ -1,91 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Use this Python script to simulate Babbage's Difference Engine) -[#]: via: (https://opensource.com/article/20/9/babbages-python) -[#]: author: (Greg Pittman https://opensource.com/users/greg-p) - -Use this Python script to simulate Babbage's Difference Engine -====== -Nineteenth-century mathematician Charles Babbage's serial calculation -machine meets its match with Python code. -![old school calculator][1] - -[Charles Babbage][2] (1791–1871) was an avid mathematician with very wide interests. He is well-known for envisioning the idea of computers and single-handedly developed what he called a [Difference Engine][3] to make serial calculations. It was a mechanical machine with a series of axles and gears to make calculations, with the output being a printed table. I recently began reading his 1864 book, _[Passages from the Life of a Philosopher][4]_, where he explains how the Difference Engines came to be. - -One of the problems his Engine was designed to solve relates to the idea of children playing with marbles and arranging them in a progressive pyramidal shape, with one marble in the top row, two in the second, three in the third, and so on. For small pyramids, you can simply count the marbles to find how many there are. But Babbage wanted to create an automatic list or table with one column showing the number of rows and another column showing the total number of marbles. - -![Pyramids of marbles][5] - -(Greg Pittman, [CC BY-SA 4.0][6]) - -The differences he talks about are first, all the successive differences in the number of rows (equal to one in this example), and second, the difference between the number of marbles added from one row to the next (also one). As I understand it, the Difference Engine successively adds the number of marbles for each new row to the previous total, creating the table in the process. - -And so I began playing with marbles in my head, so to speak. I found myself awake in bed at 5am mentally fiddling with and counting marbles. One thing that struck me was that for six rows, the total was 21, and for seven, it was 28—both evenly divisible by seven. For eight or nine rows, the total was divisible by nine. As I went higher up the number of rows, this pattern recurred. All of this was in my head (meanwhile, I was wishing it would stop so that I could get back to sleep), so it wasn't very systematized. - -When I woke up, I decided to try to figure out why this was and whether I could predict which numbers would show this phenomenon. The answer surprised me: It turns out that _every_ odd number of rows will have a number of marbles evenly divisible by that number. - -But how could I prove this? Here is an example. For the pyramid with seven rows, look first at the pyramid with six rows, with six marbles across the bottom. Create some pairs of rows: the first and the sixth, the second and the fifth, the third and the fourth. For each of these three pairs, the sum is seven; thus, the total of the three sets of pairs is 21, and if you add seven for the next row, it would also remain evenly divisible by seven. - -![Selecting pairs of rows][7] - -(Greg Pittman, [CC BY-SA 4.0][6]) - -You can keep doing this with specific examples, but the goal is to understand this phenomenon generally. Imagine some random even number of rows, _N_. Create your pairs, then add 1 to _N_, 2 to _N_-1, 3 to _N_-2, and so on. In each case, the sum will be _N_+1. The number of these pairs will be _N_/2, so the total number of marbles will be _N_/2*(_N_+1), a number evenly divisible by _N_+1. Adding _N_+1 marbles for the next row is also evenly divisible by _N_+1. - -![Pairs of N rows][8] - -(Greg Pittman, [CC BY-SA 4.0][6]) - -For example, you can say that a pyramid with 128,948 rows will have a total of 8,313,857,826 marbles; a pyramid with 128,949 rows will have 8,313,986,775, and both these totals will be evenly divisible by 128,949. - -I don't know if Babbage considered this, but chances are, even if he did, he would say this just represents mathematical problems of multiplying and dividing six-digit numbers, and he wanted a machine to do that kind of thing. He did envision and begin work on an [Analytical Engine][9], which perhaps could have done this sort of operation. - -Nowadays, this is trivial work for computers, so here's a Python script to count your marbles before you lose them—in just 4 lines of code. - - -``` -#!/usr/bin/env python -# babbage.py -""" -Using Charles Babbage's conception of a marble-counting -operation for a regular pyramid of marbles,starting with -one at the top with each successive row having one more -marble than the row above it. - -Returns total number of marbles in a pyramid of any size. -""" - -MarbRows = input("Enter the number of rows of marbles:  ") -MarbRows = int(MarbRows) - -MarbNum = int((MarbRows)*(MarbRows+1)/2) -print ("The number of marbles is "+ str(MarbNum)) -``` - -And this is how Babbage's Difference Engine meets Python. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/9/babbages-python - -作者:[Greg Pittman][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/greg-p -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/math_money_financial_calculator_colors.jpg?itok=_yEVTST1 (old school calculator) -[2]: https://en.wikipedia.org/wiki/Charles_Babbage -[3]: https://en.wikipedia.org/wiki/Difference_engine -[4]: http://www.gutenberg.org/ebooks/57532 -[5]: https://opensource.com/sites/default/files/images/babbage_marblepyramid.png (Pyramids of marbles) -[6]: https://creativecommons.org/licenses/by-sa/4.0/ -[7]: https://opensource.com/sites/default/files/uploads/babbage_pyramidpairs_0.png (Selecting pairs of rows) -[8]: https://opensource.com/sites/default/files/uploads/babbage_pyramidnpairs.png (Pairs of N rows) -[9]: https://en.wikipedia.org/wiki/Analytical_Engine diff --git a/sources/tech/20200922 Run Linux apps on your Chromebook.md b/sources/tech/20200922 Run Linux apps on your Chromebook.md deleted file mode 100644 index 473d455b3e..0000000000 --- a/sources/tech/20200922 Run Linux apps on your Chromebook.md +++ /dev/null @@ -1,187 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Run Linux apps on your Chromebook) -[#]: via: (https://opensource.com/article/20/9/linux-chromebook) -[#]: author: (Don Watkins https://opensource.com/users/don-watkins) - -Run Linux apps on your Chromebook -====== -Run all the Linux apps you want using Crostini on your Chromebook. -![Person drinking a hot drink at the computer][1] - -Chromebooks have been a game-changer for PreK-12 school systems, enabling them to purchase low-cost laptop computers for students, teachers, and administrators to use. While [Chromebooks][2] have always been powered by a Linux-based operating system (Chrome OS), until recently, there was no way to run most Linux apps on one. But that changed when Google released [Crostini][3], a virtual machine that allows Chromebooks to run Linux (Beta). - -Most Chromebooks released after 2019 and some earlier models can run Crostini and Linux (Beta). Check this [list of supported devices][4] to see if your Chromebook is on it. Fortunately, my Acer Chromebook 15 with 2GB RAM and an Intel Celeron processor is supported. - -![Acer Chromebook specs][5] - -(Don Watkins, [CC BY-SA 4.0][6]) - -I recommend using a Chromebook with 4GB RAM and more disk space if you plan to install a lot of Linux applications. - -### Set up Linux (Beta) - -After you sign into your Chromebook, "mouse over" to the lower-right corner of the screen where the clock is displayed, and left-click there. A panel will open with options at the top (from left to right) to sign out, shut down, lock, and open Settings. Choose the **Settings** icon. - -![Chromebook Settings button][7] - -(Don Watkins, [CC BY-SA 4.0][6]) - -Look on the left side of the **Settings** panel, and you will see **Linux (Beta)** listed. - -![Chromebook Settings][8] - -(Don Watkins, [CC BY-SA 4.0][6]) - -Click on **Linux (Beta),** and the main panel will change to present an option to launch it. Click the **Turn on** button. - -![Turn on Linux \(Beta\)][9] - -(Don Watkins, [CC BY-SA 4.0][6]) - -It will start the process of setting up a Linux environment on your Chromebook. - -![Setting up Linux \(Beta\)][10] - -(Don Watkins, [CC BY-SA 4.0][6]) - -Next, you will be prompted to enter a **Username** and the size you want your Linux installation to be. - -![Setting up Linux \(Beta\)][11] - -(Don Watkins, [CC BY-SA 4.0][6]) - -It takes a few minutes to install Linux on your Chromebook. - -![Installing Linux \(Beta\)][12] - -(Don Watkins, [CC BY-SA 4.0][6]) - -After the installation completes, you can use Linux on your Chromebook. The menu bar on the bottom of your Chromebook's display has a shortcut to a **terminal**, a text-based interface you can use to interact with Linux. - -![Linux \(Beta\) terminal][13] - -(Don Watkins, [CC BY-SA 4.0][6]) - -You can use [common Linux commands][14] like `ls`, `lscpu`, and `top` to see more of your environment. You can install applications using `sudo apt install`. - -### Install your first Linux application - -Being able to install and run free and open source software on a Chromebook can be a real winner for financially constrained school districts. - -The first application I recommend installing is the [Mu editor][15] for Python. Install it by entering the following into your terminal: - - -``` -`$ sudo apt install mu-editor` -``` - -It takes a bit over five minutes to install, but in the end, you'll have access to a really good Python editor for students and anyone else who wants to learn Python. - -I've had great success using [Mu and Python as a learning tool][16]. For example, I have taught my students to write code for Python's turtle module and execute it to create graphics. I was disappointed that I wasn't able to use Mu with a [BBC:Microbit][17] open hardware board. Even though the Microbit connects to USB and there is USB support in the Chromebook's Linux virtual environment, I couldn't make it work. - -![Mu editor][18] - -(Don Watkins, [CC BY-SA 4.0][6]) - -Once you've installed an application, it will show up in a special **Linux Apps** menu, which you can see on the lower-right of this screenshot. - -![Linux Apps menu][19] - -(Don Watkins, [CC BY-SA 4.0][6]) - -### Install other applications - -You can install more than just a programming language and code editor. In fact, you can install most of your favorite open source applications. - -For example, you can install the LibreOffice suite with: - - -``` -`$ sudo apt install libreoffice` -``` - -The open source audio software [Audacity][20] is one of my other favorite classroom applications. My Chromebook's microphone works with Audacity, making it easy to create podcasts or edit free sounds from [Wikimedia Commons][21]. It's easy to install Audacity on a Chromebook—with the Crostini virtual environment running, open the terminal and enter: - - -``` -`$ sudo apt install audacity` -``` - -Then launch Audacity from the command line or look for it in the **Linux Apps** section of the Chromebook menu. - -![Audacity][22] - -(Don Watkins, [CC BY-SA 4.0][6]) - -I also easily installed [TuxMath][23] and [TuxType][24], a couple of great applications for education. I was even able to install and run the image editor [GIMP][25]. All the Linux applications come from Debian Linux repositories. - -![GIMP][26] - -(Don Watkins, [CC BY-SA 4.0][6]) - -### Share files - -There is a utility within Linux (Beta) to back up and restore your files. You can also share files between your Linux (Beta) virtual machine and your Chromebook by opening the **Files** app on the Chromebook and right-clicking on the folder you want to share. You can choose to share all of your Chromebook files or create a special folder for shared files. While you are in the Linux virtual machine, you can access this folder by browsing to `/mnt/chromeos`. - -![Sharing files][27] - -(Don Watkins, [CC BY-SA 4.0][6]) - -### Learn more - -The [documentation][28] for Linux (Beta) is very complete, so read it thoroughly to learn more about its capabilities. Some key takeaways from the documentation are: - - * Cameras are not yet supported. - * Android devices are supported over USB. - * Hardware acceleration is not yet supported. - * You can access the microphone. - - - -Are you using Linux applications on your Chromebook? Tell us all about it in the comments! - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/9/linux-chromebook - -作者:[Don Watkins][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/don-watkins -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/coffee_tea_laptop_computer_work_desk.png?itok=D5yMx_Dr (Person drinking a hot drink at the computer) -[2]: https://en.wikipedia.org/wiki/Chromebook -[3]: https://chromium.googlesource.com/chromiumos/docs/+/master/containers_and_vms.md -[4]: https://www.chromium.org/chromium-os/chrome-os-systems-supporting-linux -[5]: https://opensource.com/sites/default/files/uploads/chromebook-specs.png (Acer Chromebook specs) -[6]: https://creativecommons.org/licenses/by-sa/4.0/ -[7]: https://opensource.com/sites/default/files/uploads/chromebook-settings.png (Chromebook Settings button) -[8]: https://opensource.com/sites/default/files/uploads/chromebook-linux-beta.png (Chromebook Settings) -[9]: https://opensource.com/sites/default/files/uploads/chromebook-launch-linux-beta.png (Turn on Linux (Beta)) -[10]: https://opensource.com/sites/default/files/uploads/chromebook-setup-linux-beta_0.png (Setting up Linux (Beta)) -[11]: https://opensource.com/sites/default/files/uploads/chromebook-linux-beta-username.png (Setting up Linux (Beta)) -[12]: https://opensource.com/sites/default/files/uploads/chromebook-linux-beta-install.png (Installing Linux (Beta)) -[13]: https://opensource.com/sites/default/files/uploads/chromebook-linux-terminal.png (Linux (Beta) terminal) -[14]: https://opensource.com/downloads/linux-common-commands-cheat-sheet -[15]: https://codewith.mu -[16]: https://opensource.com/article/20/9/teaching-python-mu -[17]: https://opensource.com/article/19/8/getting-started-bbc-microbit -[18]: https://opensource.com/sites/default/files/uploads/chromebook-mu.png (Mu editor) -[19]: https://opensource.com/sites/default/files/uploads/chromebook-linux-apps.png (Linux Apps menu) -[20]: https://www.audacityteam.org/ -[21]: https://commons.wikimedia.org/wiki/Commons:Free_media_resources/Sound -[22]: https://opensource.com/sites/default/files/uploads/chromebook-audacity.png (Audacity) -[23]: https://sourceforge.net/projects/tuxmath/ -[24]: https://sourceforge.net/projects/tuxtype/ -[25]: https://www.gimp.org/ -[26]: https://opensource.com/sites/default/files/uploads/chromebook-gimp.png (GIMP) -[27]: https://opensource.com/sites/default/files/uploads/chromebook-linux-share-files.png (Sharing files) -[28]: https://support.google.com/chromebook/answer/9145439?p=chromebook_linuxapps&b=banon-signed-mpkeys&visit_id=637346541887671598-1548999339&rd=1 diff --git a/sources/tech/20200924 Manage knowledge with BlueSpice, an open source alternative to Confluence.md b/sources/tech/20200924 Manage knowledge with BlueSpice, an open source alternative to Confluence.md deleted file mode 100644 index 9c5657e4e2..0000000000 --- a/sources/tech/20200924 Manage knowledge with BlueSpice, an open source alternative to Confluence.md +++ /dev/null @@ -1,107 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Manage knowledge with BlueSpice, an open source alternative to Confluence) -[#]: via: (https://opensource.com/article/20/9/bluespice) -[#]: author: (Martin Loschwitz https://opensource.com/users/martinloschwitzorg) - -Manage knowledge with BlueSpice, an open source alternative to Confluence -====== -BlueSpice is based on Wikipedia's MediaWiki but its features go far -beyond its noble ancestor. -![Digital images of a computer desktop][1] - -Knowledge management is a key to success in modern enterprises—but it is not exactly easy to achieve. Keeping track of all relevant details across all employees is a huge challenge, especially in agile environments, which most companies say they are. - -Most companies resort to buying wiki-like solutions, such as Confluence from Atlassian, which exposes them to the lock-in effect of proprietary software. But many would do well to consider [BlueSpice][2], an open source alternative to Atlassian Confluence that has a noble ancestry: it's based on Wikipedia's [MediaWiki][3]. - -### Basic and advanced features - -![BlueSpice][4] - -(Markus Feilner, [CC BY-SA 4.0][5]) - -For a wiki-like software to become a full-featured knowledge management system in an enterprise environment, it needs a lot of features. The ability to create documents is only one of them; the knowledge in them must be structured in a way that makes it easy for users to find the information they are looking for. - -In addition, most companies have complex compliance rulesets that knowledge-management software must adhere to. Confluence has gained a lot of attention because it is particularly good on these items. But BlueSpice doesn't have anything to hide. - -### Structural differences - -A quick overview reveals that BlueSpice has a fundamentally different way of organizing itself internally than Confluence. Confluence's internal structure is based on Spaces—topic-specific, separate sub-units of a Confluence installation. Typically, individual teams in an organization get their own Spaces. - -![BlueSpice Namespaces][6] - -(Markus Feilner, [CC BY-SA 4.0][5]) - -Instead, BlueSpice follows MediaWiki's principle of Namespaces. A Namespace is specific for a certain kind of file, like images or audio files or blog posts, which are put into a distinct Namespace to separate them from the other content. BlueSpice also allows users to define content categories so that every page in the wiki can belong to multiple different categories. In stark contrast to Confluence, the typical data siloing that happens almost automatically in Confluence (due to its Spaces design) doesn't happen in BlueSpace. Small wiki installation users may not notice major differences. But in large environments, users will certainly notice a difference: Content is likely easier to find in BlueSpice than it would be in a wiki scattered into small spaces. - -[BlueSpice Farm][7] is a subscription-based upgrade to the Free version that offers a nice feature for people migrating away from Confluence to BlueSpice. The Farm version allows multiple BlueSpice wikis to be connected to each other, effectively making them work like Spaces in Confluence. This will dramatically ease the burden of getting used to a new approach. - -### Search engine - -![BlueSpice search][8] - -(Markus Feilner, [CC BY-SA 4.0][5]) - -BlueSpice's search function is powered by [ElasticSearch][9] in the background and, just like Confluence, it displays search results while the user is typing in the search term. ElasticSearch may impose some serious hardware requirements for the machine hosting the wiki, but the user benefits from having a truly open source search engine maintained by a vivid community. Also, just like in Confluence, users can narrow down their results while searching by specifying parameters such as a specific kind of result or author. - -### Compliance - -Confluence comes with a large set of compliance-related functionalities. Core features include connections to existing user directories, revision-proof content storage, and risk-assessment tools. BlueSpice mimics a lot of these features. The way certain features are implemented varies because of the different internal organizational structure BlueSpice uses. - -First things first: BlueSpice not only _supports_ connections to existing user directories, including Active Directory or LDAP, it actually _requires_ using groups from these directories. Once it's connected to a central user directory, all authentication and authorization details must come out of that directory. - -Regular Wikipedia users know about the ability to access every page's history. As a MediaWiki descendant, BlueSpice inherits that page-history feature. At any point in time, you can see the different revisions of a page and also identify the person who made each change to a page. Relevant pages can be monitored for changes, and reports can be generated on the changes over a specific period of time—a feature that helps keep auditors happy. - -### WYSIWYG editor - -![BlueSpice WYSIWYG editor][10] - -(Markus Feilner, [CC BY-SA 4.0][5]) - -Central knowledge-management systems are not used only by geeks who speak markup languages; even non-technical staff must be able to use the system in an easy and concise way. While BlueSpice supports the usual [Wikipedia markup][11] editor, it also offers a WYSIWYG-like experience called VisualEditor. Its buttons and formatting tools will remind many people of familiar interfaces from tools such as LibreOffice. - -### Extensions - -Confluence users love the ability to extend the tool with external plugins. BlueSpice offers a similar capability through access to MediaWiki extensions. While BlueSpice doesn't have its own extension store just yet, it can easily use roughly 150 MediaWiki extensions for graphical highlighting, gaming, analytical functions, and more. - -### Branding - -A lot of companies want their central knowledge-management system to resemble the company's branding since it is a central place for employees. Given that MediaWiki is considered to have a rather conservative look and feel, you might wonder about adapting BlueSpice to corporate identity and corporate design requirements. Like Confluence, BlueSpice can be almost completely adapted to a company's brand standards and design requirements. While both Confluence and BlueSpice maintain a basic page structure, you can adjust central design elements such as headers, fonts, and the like. When it's done right, a BlueSpice theme will hardly remind users of MediaWiki at all. - -### BlueSpice advantages - -There are some areas where BlueSpice is superior to Confluence. For instance, many organizations need revision-proof tracking of changes in their central knowledge system for compliance reasons. This feature is built into BlueSpice, while achieving similar functionality in Confluence requires an extension. BlueSpice also comes with MediaWiki's Semantics extension built-in, effectively allowing users to query wiki pages for certain keywords. And last but not least, BlueSpice's Book extension can natively integrate manuals, product documentation, or other book contents into its contents. - -### Open source license - -Confluence has earned its merits for helping many companies introduce a central knowledge store in the form of wiki software. For open source enthusiasts, the software's proprietary nature might raise a red flag. - -BlueSpice is a functional open source alternative to Confluence based on the well-proven MediaWiki software. It provides similar functionality while maintaining MediaWiki's open license. All features relevant for small and large enterprises are in BlueSpice. Organizations planning to introduce a centralized knowledge-management system might find BlueSpice to be a good alternative to its famous commercial competitor. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/9/bluespice - -作者:[Martin Loschwitz][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/martinloschwitzorg -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/computer_desk_home_laptop_browser.png?itok=Y3UVpY0l (Digital images of a computer desktop) -[2]: https://bluespice.com/products/bluespice-free -[3]: https://www.mediawiki.org/wiki/MediaWiki -[4]: https://opensource.com/sites/default/files/uploads/bluespice_math-formula.jpg (BlueSpice) -[5]: https://creativecommons.org/licenses/by-sa/4.0/ -[6]: https://opensource.com/sites/default/files/uploads/bluespice_organizationchart.jpg (BlueSpice Namespaces) -[7]: https://bluespice.com/products/bluespice-farm/ -[8]: https://opensource.com/sites/default/files/uploads/bluespice_search_fulltext.jpg (BlueSpice search) -[9]: https://www.elastic.co/elasticsearch/ -[10]: https://opensource.com/sites/default/files/uploads/bluespice_editor-2.jpg (BlueSpice WYSIWYG editor) -[11]: https://en.wikipedia.org/wiki/Help:Cheatsheet diff --git a/sources/tech/20200925 -email-protected-- Help the Fight Against COVID-19 With Your Linux System.md b/sources/tech/20200925 -email-protected-- Help the Fight Against COVID-19 With Your Linux System.md deleted file mode 100644 index 8a09f63907..0000000000 --- a/sources/tech/20200925 -email-protected-- Help the Fight Against COVID-19 With Your Linux System.md +++ /dev/null @@ -1,231 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Rosetta@home: Help the Fight Against COVID-19 With Your Linux System) -[#]: via: (https://itsfoss.com/boinc-setup/) -[#]: author: (Dimitrios Savvopoulos https://itsfoss.com/author/dimitrios/) - -Rosetta@home: Help the Fight Against COVID-19 With Your Linux System -====== - -Want to contribute to the research on coronavirus? You don’t necessarily have to be a scientist for this. You may contribute with part of your computer’s computing power thanks to Rosetta@home project. - -Sounds interesting? Let me share more details on it. - -### What is Rosetta@home? - -Rosetta@home is a [distributed computing][2] project for protein structure prediction, based at the Baker laboratory at the University of Washington and running on the Berkeley Open Infrastructure for Network Computing (BOINC) open source platform, which was originally developed to support the [Rosetta@home][3]. - -**Not enough computing power? Utilize the power of distributed computing** - -To predict and design the structures of naturally occurring proteins is very computationally intensive. To speed up the process, [Dr. David Becker][4] had filled the entire lab and the hallway with desktop computers. Then they started getting complaints of heating up the building, but still didn’t have enough computing power to accurately predict and design protein structures. - -**How does Rosetta@home work?** - -Rosetta@home uses idle computer processing power from volunteers’ computers to perform calculations on individual work units. When a requested task is being completed, the client sends the results to a central project server where they are validated and incorporated into project databases. - -![][5] - -As of 28th March 2020 the computing power of Rosetta@home has been increased up to 1.7 PetaFlops, due to the recently joined users looking to participate in the fight against the COVID-19 pandemic. Thanks to that, **On 26th June 2020, Rosetta@home researchers announced they had created antiviral proteins that neutralized SARS-CoV-2 in the lab.** - -Is BOINC platform safe? - -After few years of operation on millions of systems, there have been no security incidents reported due to BOINC. This fact doesn’t mean that there is no possibility of a security risks. - -BOINC uses a mechanism called **code signing**, based on _public-key cryptography_, that eliminates the vulnerability, as long as projects use proper practice. Each project has a code-signing key pair consisting of a public key and a private key which is used to create “signatures” for programs. The BOINC client will only run programs with valid signatures. - -Projects are instructed to keep the private key only on a computer that is permanently offline to create signatures. Therefore hackers cannot trick BOINC into running malware. - -Most BOINC projects follow these practices. If you’re concerned about security, you should attach to a project only if you know it follows the code-signing procedure correctly. If in doubt, you may ask project administrators to describe how they do code signing. - -### Contributing to Rosetta@home with BOINC platform - -![][6] - -If you are interested in contributing to the scientific research by donating some computing power, you’ll find rest of this article helpful. - -I’ll discuss the following: - - * Prerequisite for joining BOINC platform - * Using BOINC platform to donate computing power to a project of your choice via your desktop Linux - * Using Raspberry Pi to run BOINC all the time - - - -#### System Requirements of the BOINC platform - -The BOINC distributed computing platform with which you can access Rosetta@home is available on a 64bit operating system such as Windows, Linux, and macOS and FreeBSD. - -You will need a CPU of at least 500 MHz, 200 megabytes of free disk space, 512 megabytes of RAM, and Internet connectivity. - -**The more CPU cores your system has, the more RAM is required as a work unit will “feed” each core.** - -#### Create a user account on BOINC platform - -Before you configure the BOINC platform, [create an account][7] using your computer. If you will use a Raspberry Pi, you can join the “crunch-on-arm” team. - -**Please note that the same account can be used to multiple machines at a time. All of your machines will appear on your account.** - -#### **Install BOINC platform** on various Linux distributions - -BOINC application has the following element: - - * boinc-client (daemon that runs the platform) - * boinctui: terminal based interface for selecting projects and other settings - * boinc-manager: GUI-based interface for selecting projects and other settings - - - -If you are using a server, you should install boinctui. If you are using Linux desktop, you can opt for boinc-manager. - -I’ll stick with the GUI tool in this part of the tutorial. - -**On Debian/Ubuntu** - -BOINC tools are available in the universe repository in Ubuntu 20.04 so make sure that you have [universe repository enabled on your Ubuntu system][8]. - -Use the following commands to install it: - -``` -sudo apt install boinc-client boinc-manager -``` - -Install BOINC on Fedora - -Open a terminal and enter the following command: - -``` -sudo dnf install boinc-client boinc-manager -``` - -Install BOINC on RedHat/CentOS - -First, make sure that the EPEL repository is enabled, by running following command on a terminal: - -``` -sudo yum install epel-release -``` - -You can now install the necessary packages: - -``` -sudo yum install boinc-client boinc-manager -``` - -#### Open the BOINC manager and add a project - -After installing, open BOINC manager. You will be asked to add a project and to create an account or login to an existing. - -![][9] - -Add your credentials and click finish when prompted. - -![][10] - -After a few minutes, the status will change to running. - -![][11] - -You don’t need to worry if your system resources will be consumed when you want to use your computer. **By default, if the BOINC manager notices that the user needs more than the 25% of CPU resources, the BOINC computation will be suspended.** - -If you want the application to be suspended at a lower or higher CPU usage, you can change your profile settings on the website where you created your account. - -### Rosetta@home on a Raspberry Pi 4 - -An ideal device to run 24/7 the Rosetta@home application is a Raspberry Pi, which is powerful enough and with very low power consumption. - -To fight COVID-19 using a Raspberry Pi 4, you need a model with 2 GB RAM or more. My personal recommendation is the 4 GB RAM option, because with my 2 GB model one of the cores is idling as it is running out of memory. - -#### **Step 1: Install Ubuntu Server** (Recommended) - -You need to have some [operating system on your Raspberry Pi][12]. [Installing Ubuntu server on Raspberry Pi][13] is one of the most convenient choices. - -#### **Step 2: Install BOINC platform** - -To install the BOINC client and the command line management interface run the following command on server running on the Raspberry Pi. - -``` -sudo apt install boinc-client boinctui -``` - -**Additional steps for Raspberry Pi 2 GB model** - -Your account by default is set to utilize 90% of the memory when the user is idling. The Rosetta work units require 1.9gb of memory to run on the Quad core Raspberry Pi, so there is a possibility for the client not be able to start due to the initial reading. If the Raspberry Pi runs out of memory, it will suspend one of the 4 running tasks as mentioned earlier. To override the 1.9gb threshold add the following lines to the location below: - -``` -sudo nano /var/lib/boinc-client/global_prefs_override.xml -``` - -**Add now these lines** - -``` - - 100.000000 - 100.000000 - 100.000000 - -``` - -![][14] - -This setting will increase the default memory available to Rosetta to the maximum amount of memory on the board. - -#### Step 3: Add Rosetta@home project - -On your Raspberry Pi command line type ‘boinctui’ and click enter to load the terminal GUI.  - -``` -boinctui -``` - -Press **F9** on the keyboard, to bring down the menu choices. Use the arrow keys to go to Projects and press Enter. - -You may notice a few available projects to choose from but if you are interested to actively support the fight against COVID-19 choose Rosetta. You will be prompted to either create a user account or to use an existing account. - -Select “Existing User” and the enter the credentials you created on the website at the initial step.  As you can see, I have already selected the Rosetta project. - -![][15] - -It will take a moment to download the work units, and then automatically it will start crunching data on your Raspberry Pi 4! - -#### Conclusion - -_**If you want to stop using BOINC, simply delete the boinc packages you installed earlier. I believe you know how to use your distribution’s package manager for removing software.**_ - -One of the benefits of distributing computing is to allow user’s to donate their system resources for the common good. Despite the grief the pandemic has spread worldwide, it can make us also to realize the necessity of volunteering in one way or the other. - -If you ever wondered about a [good use of your Raspberry Pi][16], Rosetta@home can be included to the list. - -Let us know at the comments below if you started “cruching” and which platform you chose. Stay safe! - --------------------------------------------------------------------------------- - -via: https://itsfoss.com/boinc-setup/ - -作者:[Dimitrios Savvopoulos][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://itsfoss.com/author/dimitrios/ -[b]: https://github.com/lujun9972 -[1]: https://itsfoss.com/cdn-cgi/l/email-protection -[2]: https://www.computerhope.com/jargon/d/distribs.htm -[3]: https://en.wikipedia.org/wiki/SETI@home -[4]: https://www.ipd.uw.edu/people/ipd-faculty-staff/david-baker/ -[5]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/09/rosetta-sharing-example.jpg?resize=780%2C278&ssl=1 -[6]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/09/rosetta-home-linux.png?resize=800%2C450&ssl=1 -[7]: http://boinc.bakerlab.org -[8]: https://itsfoss.com/ubuntu-repositories/ -[9]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/09/boinc-manager.png?resize=800%2C600&ssl=1 -[10]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/09/boinc-credentials.png?resize=800%2C600&ssl=1 -[11]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/09/boinc-manager-running.png?resize=800%2C800&ssl=1 -[12]: https://itsfoss.com/raspberry-pi-os/ -[13]: https://itsfoss.com/install-ubuntu-server-raspberry-pi/ -[14]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/09/rosetta-settings-local-override.png?resize=800%2C600&ssl=1 -[15]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/09/rosetta-add-project.png?resize=800%2C600&ssl=1 -[16]: https://itsfoss.com/raspberry-pi-projects/ diff --git a/sources/tech/20200925 Code your first algorithm in Scratch.md b/sources/tech/20200925 Code your first algorithm in Scratch.md deleted file mode 100644 index b5960d0cbb..0000000000 --- a/sources/tech/20200925 Code your first algorithm in Scratch.md +++ /dev/null @@ -1,151 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Code your first algorithm in Scratch) -[#]: via: (https://opensource.com/article/20/9/scratch) -[#]: author: (Jess Weichler https://opensource.com/users/cyanide-cupcake) - -Code your first algorithm in Scratch -====== -Learn how to get started with Scratch in this article in a series about -teaching kids to code. -![The back of a kid head][1] - -With more kids learning from home this year, it's important to engage them with unique learning opportunities. The classroom looks very different than it did before, and it's going to continue to evolve. So should the lessons we teach. - -In the [first article][2] in this series, I shared how my students taught me to code. Over the next few weeks, I will be exploring how educators and parents can harness the power of coding to teach kids a wide variety of skills. - -"But I don't know anything about coding!" you may be shouting at your computer. That's one of the beauties of open source code: everyone is a learner, and everyone is a teacher. Whether you're new to coding or you've been doing it all your life, part of the process is making mistakes. It's all about problem-solving and learning how to find information. The greatest tool an educator has in a coding classroom is the phrase, "I don't know; let's find out together!" - -So, let's begin! - -### What is code? - -Code is how you get a computer to do what you want it to do. Laptops, smartphones, video-game consoles, and even washing machines use code to work. And despite advancements in machine learning and AI, somebody has to write that code. - -Coders (also known as programmers) are the people who write code. But what is code, really? What exactly are programmers writing when they create software or fine-tune hardware? - -Code is made up of _algorithms_: highly structured and ordered lists of instructions, much like a recipe. Because computers aren't actually smart, these instructions are written in _code_ that must be parsed and compiled and transformed into _machine language_. Only then can computers perform the actions that programmers dictate. The key is to learn the syntax of the code so you can write words in the required order so that computers can decipher and process them. - -### What is Scratch? - -[Scratch][3] is a great platform for kids learning to code. It is a visual programming language designed for ages 8 and up. It uses drag-and-drop blocks that snap together to create animations, quizzes, and video games. Traditional coding requires a lot of typing without making any spelling errors, and the visual nature of Scratch makes it easy for young writers to learn to code without getting bogged down with spelling errors. - -Scratch is not just about coding, though. It also encourages an open online community by empowering users to share and remix projects. There's also an offline version available for classrooms and households with limited internet connectivity. - -### Learn the lingo - -Even if a child has used Scratch before, this lesson is important for ensuring they understand coding terminology and logic. - -![Scratch interface][4] - -(Jess Weichler, [CC BY-SA 4.0][5]) - -Using Scratch, you can create video games using **code blocks** that snap together to form a script. A **script** is an ordered list of instructions, like a recipe. Another word for "script" is **algorithm**. - -A **sprite** is a character or object in the game. The **stage** is the background of the game. Scripts can be used to control sprites and the stage. - -Every script starts with a special code block called an **event hat**. These blocks have rounded tops. An event hat waits for something to happen before running all the code blocks underneath it. - -Scratch follows scripts exactly, so you must be specific when telling it what to do. - -### Get coding - -Try the following challenges to get started on your coding journey. - -#### Challenge #1: Create a simple algorithm to move a sprite right when you press the right arrow key. - -Did your algorithm work as you expected? Does your sprite move right when the right arrow is pressed? How did you do it? - -When coding, there are often multiple solutions to a problem. Here are two of the most common ways you may have coded the sprite to move when the right arrow is pressed: - -![Possibility One: When right arrow pressed, move 10 steps . Possibility Two: When right arrow pressed, change x by 10.][6] - -(Jess Weichler, [CC BY-SA 4.0][5]) - -Let's experiment. - - * What happens if you change the number? - * What happens when your sprite reaches the edge of the screen? - * What motion code block could prevent the sprite from disappearing when it reaches the edge? - - - -![Possibility One: When right arrow pressed, move 15 steps, if on edge, bounce. Possibility Two: When right arrow pressed, change x by 15, if on edge, bounce][7] - -(Jess Weichler, [CC BY-SA 4.0][5]) - -Now what happens? How can you solve it? - -To stop the sprite from flipping upside-down after hitting an edge: select the sprite and click **Direction**. Select the **Left/Right** icon or the **Do Not Rotate** icon. - -![Scratch code][8] - -(Jess Weichler, [CC BY-SA 4.0][5]) - -Errors in code, such as this, are called **bugs**. Bugs are a normal part of coding. - -Fixing code is called **debugging**. - -Test your game again. Do you notice any more bugs? - - * If your sprite is bouncing off the right side of the screen, you are ready for the next challenge. - * If, when your sprite touches the right side of the screen, it starts moving left when you press the right arrow, add one more code block to the algorithm. - - - -![Possibility One: When right arrow pressed, point in direction 90, move 15 steps, if on edge, bounce. Possibility Two: No change][9] - -(Jess Weichler, [CC BY-SA 4.0][5]) - -#### Challenge #2: Make the sprite move left when you press the left arrow. - -You have all the skills and knowledge you need to ace this challenge! How will you complete it? - -[Click here for my solution][10]. - -If you're using a screen reader, or you prefer text, select this spoiler text to reveal the answer: - -**Possibility One:** When right arrow pressed, point in direction 90, move 15 steps, if on edge, bounce -When left arrow pressed, point in direction -90, move 15 steps, if on edge, bounce - -**Possibility Two:** When right arrow pressed, change x by 15, if on edge, bounce -When left arrow pressed, change x by -15, if on edge, bounce - -When you're happy with what you've made, name and save your project. Do not select "save as" or "save a copy," as this will create a duplicate project. Just click **Save** or **Save Now**. - -Congratulations, you've created your first two algorithms! - -### Don't stop here - -Coding is all about experimenting and iterating until you get the desired result. This is one of many reasons I love it as a teaching tool. And don't stop with just this introductory lesson. - -Pose a problem and try to solve it with Scratch. For instance, can you make a game in which the Scratch cat finds an object and "eats" it? Look through the available blocks and formulate a plan, then construct a script. - -Most importantly, don't give up, and remember, there's no wrong answer! It's all about creativity, being inventive, and having fun. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/9/scratch - -作者:[Jess Weichler][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/cyanide-cupcake -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/idea_innovation_kid_education.png?itok=3lRp6gFa (The back of a kid head) -[2]: https://opensource.com/article/20/9/how-my-students-taught-me-code -[3]: https://scratch.mit.edu/ -[4]: https://opensource.com/sites/default/files/uploads/codekids2_1_interface.png (Scratch interface) -[5]: https://creativecommons.org/licenses/by-sa/4.0/ -[6]: https://opensource.com/sites/default/files/uploads/codekids2_2_code.png (Scratch code) -[7]: https://opensource.com/sites/default/files/uploads/codekids2_3_code.png (Scratch code) -[8]: https://opensource.com/sites/default/files/uploads/codekids2_4_code.png (Scratch code) -[9]: https://opensource.com/sites/default/files/uploads/codekids2_5_code.png (Scratch code) -[10]: https://opensource.com/sites/default/files/scratch3-left-right_answer.png diff --git a/sources/tech/20200926 Cisco turns out security patches 25 high-threat flaws for IOS, IOS XE.md b/sources/tech/20200926 Cisco turns out security patches 25 high-threat flaws for IOS, IOS XE.md deleted file mode 100644 index dc08d1ec01..0000000000 --- a/sources/tech/20200926 Cisco turns out security patches 25 high-threat flaws for IOS, IOS XE.md +++ /dev/null @@ -1,68 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Cisco turns out security patches 25 high-threat flaws for IOS, IOS XE) -[#]: via: (https://www.networkworld.com/article/3583654/cisco-turns-out-security-patches-25-high-threat-flaws-for-ios-ios-xe.html) -[#]: author: (Michael Cooney https://www.networkworld.com/author/Michael-Cooney/) - -Cisco turns out security patches 25 high-threat flaws for IOS, IOS XE -====== -Cisco this week posted 25 security advisories defining 34 vulnerabilities rated high that should be fixed right away -[Nathan Cowley / Ivanastar / Getty Images][1] - -If you are a security admin with lots of systems running Cisco IOS and IOS XE software today is decidedly not your day. - -Cisco this week posted 25 “High” rated security advisories that stem from 34 vulnerabilities the company suggests should be fixed as soon as possible. The vulnerabilities impact a wide-range of Cisco gear as IOS and IOS XE are the company’s most widely used operating systems. The warnings affect firewalls, wireless access points and switches. - -[Network pros react to new Cisco certification curriculum][2] - -For example, one of the highest rated threats--with an 8.6 out of 10 threat level, are [multiple vulnerabilities][3] in the Zone-Based Firewall feature of Cisco IOS XE Software that could let an remote attacker to cause the device to reload or stop forwarding traffic through the [firewall][4],resulting in a denial of service (DoS). - -Cisco stated that the vulnerabilities are due to incomplete handling of Layer 4 packets through the device. An attacker could exploit these vulnerabilities by sending a certain sequence of traffic patterns through the device.  - -Another 8.6-rated vulnerability involves the [Split DNS feature][5] of Cisco IOS Software and Cisco IOS XE Software could let an unauthenticated, remote attacker cause an affected device to reload, resulting in a DoS condition. - -“The vulnerability occurs because the regular expression (regex) engine that is used with the Split [DNS][6] feature of affected releases may time out when it processes the DNS name list configuration. An attacker could exploit this vulnerability by trying to resolve an address or hostname that the affected device handles,” Cisco stated. - -Still another 8.6-rated security threat involves a vulnerability in the [DHCP][7] message handler of Cisco IOS XE Software for Cisco cBR-8 Converged Broadband Routers.  The vulnerability is due to insufficient error handling when DHCP version 4 (DHCPv4) messages are parsed. An attacker could exploit this vulnerability by sending a malicious DHCPv4 message to or through a WAN interface of an affected device. A successful exploit could allow the attacker to cause a reload of the affected device, Cisco stated. - -Some of the other threat advisories include: - - * A vulnerability in the [WPA2 and WPA3 security implementation][8] of Cisco IOS XE Wireless Controller Software for the Cisco Catalyst 9000 Family could let an unauthenticated, adjacent attacker send a crafted authentication packet to an affected device. A successful exploit could cause it to reload, resulting in a DoS condition. The vulnerability is due to incorrect packet processing during the WPA2 and WPA3 authentication handshake when configured for dot1x or pre-shared key (PSK) authentication key management (AKM) with 802.11r BSS Fast Transition (FT) enabled, Cisco stated. - * A vulnerability in the [Umbrella Connector][9] component of Cisco IOS XE Software for Cisco Catalyst 9200 Series Switches could allow an unauthenticated, remote attacker to trigger a reload, resulting in a DOS condition on an affected device. The vulnerability is due to insufficient error handling when parsing DNS requests. An attacker could exploit this vulnerability by sending a series of malicious DNS requests to an Umbrella Connector client interface of an affected device. - * Multiple vulnerabilities in the [web management framework of Cisco IOS XE][10] Software could allow an authenticated, remote attacker with read-only privileges to elevate them to _Administrator_ on an affected device. For example, a vulnerability in the APIs of the web management framework of Cisco IOS XE Software could lead to such an attack. Another weakness in the authentication controls of the web management framework of Cisco IOS XE Software could allow an authenticated, remote attacker with read-only privileges to elevate privileges to _Administrator_ on an affected device. - - - -Workarounds are not available, but patches or software updates addressing all of the vulnerabilities are [available][11], Cisco stated. - -Join the Network World communities on [Facebook][12] and [LinkedIn][13] to comment on topics that are top of mind. - --------------------------------------------------------------------------------- - -via: https://www.networkworld.com/article/3583654/cisco-turns-out-security-patches-25-high-threat-flaws-for-ios-ios-xe.html - -作者:[Michael Cooney][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://www.networkworld.com/author/Michael-Cooney/ -[b]: https://github.com/lujun9972 -[1]: https://www.pexels.com/photo/man-in-blue-and-brown-plaid-dress-shirt-touching-his-hair-897817/ -[2]: https://www.networkworld.com/article/3446044/network-pros-react-to-new-cisco-certification-curriculum.html -[3]: https://tools.cisco.com/security/center/content/CiscoSecurityAdvisory/cisco-sa-zbfw-94ckG4G -[4]: https://www.networkworld.com/article/3230457/what-is-a-firewall-perimeter-stateful-inspection-next-generation.html -[5]: https://tools.cisco.com/security/center/content/CiscoSecurityAdvisory/cisco-sa-splitdns-SPWqpdGW -[6]: https://www.networkworld.com/article/3268449/what-is-dns-and-how-does-it-work.html -[7]: https://www.networkworld.com/article/3299438/dhcp-defined-and-how-it-works.html -[8]: https://tools.cisco.com/security/center/content/CiscoSecurityAdvisory/cisco-sa-wpa-dos-cXshjerc -[9]: https://tools.cisco.com/security/center/content/CiscoSecurityAdvisory/cisco-sa-iosxe-umbrella-dos-t2QMUX37 -[10]: https://tools.cisco.com/security/center/content/CiscoSecurityAdvisory/cisco-sa-ios-webui-priv-esc-K8zvEWM#d -[11]: https://tools.cisco.com/security/center/home.x -[12]: https://www.facebook.com/NetworkWorld/ -[13]: https://www.linkedin.com/company/network-world diff --git a/sources/tech/20200929 This Python script mimics Babbage-s Difference Engine.md b/sources/tech/20200929 This Python script mimics Babbage-s Difference Engine.md deleted file mode 100644 index e068b55acc..0000000000 --- a/sources/tech/20200929 This Python script mimics Babbage-s Difference Engine.md +++ /dev/null @@ -1,106 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (This Python script mimics Babbage's Difference Engine) -[#]: via: (https://opensource.com/article/20/10/babbages-python) -[#]: author: (Greg Pittman https://opensource.com/users/greg-p) - -This Python script mimics Babbage's Difference Engine -====== -Python once again takes on Charles Babbage's Difference Engine. -![Math formulas in green writing][1] - -In [_Use this Python script to simulate Babbage's Difference Engine_][2], Python offered an alternative solution to Babbage's problem of determining the number of marbles in a two-dimensional pyramid. Babbage's [Difference Engine][3] solved this using a table showing the number of marble rows and the total number of marbles. - -After some contemplation, [Charles Babbage][4]'s ghost replied, "This is all well and good, but here you only take the number of rows and give the number of marbles. With my table, I can also tell you how large a pyramid you might construct given a certain number of marbles; simply look it up in the table." - -Python had to agree that this was indeed the case, yet it knew that surely this must be solvable as well. With little delay, Python came back with another short script. The solution involves thinking through the math in reverse. - - -``` -`MarbNum = (N * (N + 1))/2` -``` - -Which I can begin to solve with: - - -``` -`N * (N + 1) = MarbNum * 2` -``` - -From which an approximate solution might be: - - -``` -`N = int(sqrt(MarbNum * 2))` -``` - -But the integer _N_ that solves this might be too large by one, so I need to test for this. In other words, the correct number of rows will either be _N_ or _N-1_. Here is the final script: - - -``` -#!/usr/bin/env python -# babbage2.py -""" -Using Charles Babbage's conception of a marble-counting operation for a regular -pyramid of marbles, starting with one at the top with each successive row having -one more marble than the row above it. -Will give you the total number of rows possible for a pyramid, given a total number -of marbles available. -As a bonus, you also learn how many are left over. -""" -import math - -MarbNum = input("Enter the number of marbles you have:  ") -MarbNum = int(MarbNum) - -firstguess = int(math.sqrt(MarbNum*2)) - -if (firstguess * (firstguess + 1) > MarbNum*2): -    correctNum = firstguess - 1 -else: -    correctNum = firstguess - -MarbRem = int(MarbNum - (correctNum * (correctNum + 1)/2)) -# some grammatical fixes -if MarbRem == 0: -    MarbRem = "no" -  -if MarbRem == 1: -    marbleword = "marble" -else: -    marbleword = "marbles" -    -print ("You can have",correctNum, "rows, with",MarbRem, marbleword, "remaining.") -``` - -The output will look something like this: - - -``` -Enter the number of marbles you have:  374865 -You can have 865 rows, with 320 marbles remaining. -``` - -And Mr. Babbage's ghost was impressed. "Ah, your Python Engine is impressive indeed! Surely it might rival my [Analytical Engine][5], had I had the time to complete that project." - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/10/babbages-python - -作者:[Greg Pittman][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/greg-p -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/edu_math_formulas.png?itok=B59mYTG3 (Math formulas in green writing) -[2]: https://opensource.com/article/20/9/babbages-python -[3]: https://en.wikipedia.org/wiki/Difference_engine -[4]: https://en.wikipedia.org/wiki/Charles_Babbage -[5]: https://en.wikipedia.org/wiki/Analytical_Engine diff --git a/sources/tech/20200929 Xen on Raspberry Pi 4 adventures.md b/sources/tech/20200929 Xen on Raspberry Pi 4 adventures.md deleted file mode 100644 index a21b4fca9c..0000000000 --- a/sources/tech/20200929 Xen on Raspberry Pi 4 adventures.md +++ /dev/null @@ -1,156 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Xen on Raspberry Pi 4 adventures) -[#]: via: (https://www.linux.com/featured/xen-on-raspberry-pi-4-adventures/) -[#]: author: (Linux.com Editorial Staff https://www.linux.com/author/linuxdotcom/) - -Xen on Raspberry Pi 4 adventures -====== - -Written by [Stefano Stabellini][1] and [Roman Shaposhnik][2] - -![][3] - -Raspberry Pi (RPi) has been a key enabling device for the Arm community for years, given the low price and widespread adoption. According to the RPi Foundation, over 35 million have been sold, with 44% of these sold into industry. We have always been eager to get the Xen hypervisor running on it, but technical differences between RPi and other Arm platforms made it impractical for the longest time. Specifically, a non-standard interrupt controller without virtualization support. - -Then the Raspberry Pi 4 came along, together with a regular GIC-400 interrupt controller that Xen supports out of the box. Finally, we could run Xen on an RPi device. Soon Roman Shaposhnik of Project EVE and a few other community members started asking about it on the **xen-devel** mailing list. _“It should be easy,”_ we answered. _“It might even work out of the box,”_ we wrote in our reply. We were utterly oblivious that we were about to embark on an adventure deep in the belly of the Xen memory allocator and Linux address translation layers. - -The first hurdle was the availability of low memory addresses. RPi4 has devices that can only access the first 1GB of RAM. The amount of memory below 1GB in **Dom0** was not enough. Julien Grall solved this problem with a simple one-line fix to increase the memory allocation below 1GB for **Dom0** on RPi4. The patch is now present in Xen 4.14. - -_“This lower-than-1GB limitation is uncommon, but now that it is fixed, it is just going to work.”_ We were wrong again. The Xen subsystem in Linux uses _virt_to_phys_ to convert virtual addresses to physical addresses, which works for most virtual addresses but not all. It turns out that the RPi4 Linux kernel would sometimes pass virtual addresses that cannot be translated to physical addresses using _virt_to_phys_, and doing so would result in serious errors. The fix was to use a different address translation function when appropriate. The patch is now present in Linux’s master branch. - -We felt confident that we finally reached the end of the line. _“Memory allocations – check. Memory translations — check. We are good to go!”_ No, not yet. It turns out that the most significant issue was yet to be discovered. The Linux kernel has always had the concept of physical addresses and DMA addresses, where DMA addresses are used to program devices and could be different from physical addresses. In practice, none of the x86, ARM, and ARM64 platforms where Xen could run had DMA addresses different from physical addresses. The Xen subsystem in Linux is exploiting the DMA/physical address duality for its own address translations. It uses it to convert physical addresses, as seen by the guest, to physical addresses, as seen by Xen. - -To our surprise and astonishment, the Raspberry Pi 4 was the very first platform to have physical addresses different from DMA addresses, causing the Xen subsystem in Linux to break. It wasn’t easy to narrow down the issue. Once we understood the problem, a dozen patches later, we had full support for handling DMA/physical address conversions in Linux. The Linux patches are in master and will be available in Linux 5.9. - -Solving the address translation issue was the end of our fun hacking adventure. With the Xen and Linux patches applied, Xen and Dom0 work flawlessly. Once Linux 5.9 is out, we will have Xen working on RPi4 out of the box. - -We will show you how to run Xen on RPi4, the real Xen hacker way, and as part of a downstream distribution for a much easier end-user experience. - -## **Hacking Xen on Raspberry Pi 4** - -If you intend to hack on Xen on ARM and would like to use the RPi4 to do it, here is what you need to do to get Xen up and running using UBoot and TFTP. I like to use TFTP because it makes it extremely fast to update any binary during development.  See [this tutorial][4] on how to set up and configure a TFTP server. You also need a UART connection to get early output from Xen and Linux; please refer to [this article][5]. - -Use the [rpi-imager][6] to format an SD card with the regular default Raspberry Pi OS. Mount the first SD card partition and edit **config.txt**. Make sure to add the following: - -``` -kernel=u-boot.bin - -enable_uart=1 - -arm_64bit=1 -``` - -Download a suitable UBoot binary for RPi4 (u-boot.bin) from any distro, for instance [OpenSUSE][7]. Download the JeOS image, then open it and save **u-boot.bin**: - -``` -xz -d openSUSE-Tumbleweed-ARM-JeOS-raspberrypi4.aarch64.raw.xz - -kpartx -a ./openSUSE-Tumbleweed-ARM-JeOS-raspberrypi4.aarch64.raw - -mount /dev/mapper/loop0p1 /mnt - -cp /mnt/u-boot.bin /tmp -``` - -Place u-boot.bin in the first SD card partition together with config.txt. Next time the system boots, you will get a UBoot prompt that allows you to load Xen, the Linux kernel for **Dom0**, the **Dom0 rootfs**, and the device tree from a TFTP server over the network. I automated the loading steps by placing a UBoot **boot.scr** script on the SD card: - -``` -setenv serverip 192.168.0.1 - -setenv ipaddr 192.168.0.2 - -tftpb 0xC00000 boot2.scr - -source 0xC00000 -``` - -Where: - -``` -- serverip is the IP of your TFTP server - -- ipaddr is the IP of the RPi4 -``` - -Use mkimage to generate boot.scr and place it next to config.txt and u-boot.bin: - -``` -mkimage -T script -A arm64 -C none -a 0x2400000 -e 0x2400000 -d boot.source boot.scr -``` - -Where: - -``` -- boot.source is the input - -- boot.scr is the output -``` - -UBoot will automatically execute the provided boot.scr, which sets up the network and fetches a second script (boot2.scr) from the TFTP server. boot2.scr should come with all the instructions to load Xen and the other required binaries. You can generate boot2.scr using [ImageBuilder][8]. - -Make sure to use Xen 4.14 or later. The Linux kernel should be master (or 5.9 when it is out, 5.4-rc4 works.) The Linux ARM64 default config works fine as kernel config. Any 64-bit rootfs should work for Dom0. Use the device tree that comes with upstream Linux for RPi4 (**arch/arm64/boot/dts/broadcom/bcm2711-rpi-4-b.dtb**). RPi4 has two UARTs; the default is **bcm2835-aux-uart** at address **0x7e215040**. It is specified as “serial1” in the device tree instead of serial0. You can tell Xen to use serial1 by specifying on the Xen command line: - -``` -console=dtuart dtuart=serial1 sync_console -``` - - The Xen command line is provided by the **boot2.scr** script generated by ImageBuilder as “**xen,xen-bootargs**“. After editing **boot2.source** you can regenerate **boot2.scr** with **mkimage**: - -``` -mkimage -A arm64 -T script -C none -a 0xC00000 -e 0xC00000 -d boot2.source boot2.scr -``` - -## **Xen on Raspberry Pi 4: an easy button** - -Getting your hands dirty by building and booting Xen on Raspberry Pi 4 from scratch can be not only deeply satisfying but can also give you a lot of insight into how everything fits together on ARM. Sometimes, however, you just want to get a quick taste for what it would feel to have Xen on this board. This is typically not a problem for Xen, since pretty much every Linux distribution provides Xen packages and having a fully functional Xen running on your system is a mere “apt” or “zypper” invocation away. However, given that Raspberry Pi 4 support is only a few months old, the integration work hasn’t been done yet. The only operating system with fully integrated and tested support for Xen on Raspberry Pi 4 is [LF Edge’s Project EVE][9]. - -Project EVE is a secure-by-design operating system that supports running Edge Containers on compute devices deployed in the field. These devices can be IoT gateways, Industrial PCs, or general-purpose ruggedized computers. All applications running on EVE are represented as Edge Containers and are subject to container orchestration policies driven by k3s. Edge containers themselves can encapsulate Virtual Machines, Containers, or Unikernels.  - -You can find more about EVE on the project’s website at and its GitHub repo . The latest instructions for creating a bootable media for Raspberry Pi 4 are also available at:  - - - -Because EVE publishes fully baked downloadable binaries, using it to give Xen on Raspberry Pi 4 a try is as simple as: - -``` -$ docker pull lfedge/eve:5.9.0-rpi-xen-arm64 # you can pick a different 5.x.y release if you like - -$ docker run lfedge/eve:5.9.0-rpi-xen-arm64 live > live.raw -``` - -This is followed by flashing the resulting **live.raw** binary onto an SD card using your favorite tool.  - -Once those steps are done, you can insert the card into your Raspberry Pi 4, connect the keyboard and the monitor and enjoy a minimalistic Linux distribution (based on Alpine Linux and Linuxkit) that is Project EVE running as **Dom0** under Xen. - -As far as Linux distributions go, EVE presents a somewhat novel design for an operating system, but at the same time, it is heavily inspired by ideas from Qubes OS, ChromeOS, Core OS, and Smart OS. If you want to take it beyond simple console tasks and explore how to run user domains on it, we recommend heading over to EVE’s sister project Eden: and following a short tutorial over there. - -If anything goes wrong, you can always find an active community of EVE and Eden users on LF Edge’s Slack channels starting with #eve over at — we’d love to hear your feedback. - -In the meantime – happy hacking! - --------------------------------------------------------------------------------- - -via: https://www.linux.com/featured/xen-on-raspberry-pi-4-adventures/ - -作者:[Linux.com Editorial Staff][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://www.linux.com/author/linuxdotcom/ -[b]: https://github.com/lujun9972 -[1]: https://twitter.com/stabellinist?lang=en -[2]: https://twitter.com/rhatr?lang=en -[3]: https://www.linux.com/wp-content/uploads/2020/09/xen_project_logo.jpg -[4]: https://help.ubuntu.com/community/TFTP -[5]: https://lancesimms.com/RaspberryPi/HackingRaspberryPi4WithYocto_Part1.html -[6]: https://www.raspberrypi.org/documentation/installation/installing-images/#:~:text=Using%20Raspberry%20Pi%20Imager,Pi%20Imager%20and%20install%20it -[7]: https://en.opensuse.org/HCL:Raspberry_Pi4 -[8]: https://wiki.xenproject.org/wiki/ImageBuilder -[9]: https://www.lfedge.org/projects/eve/ diff --git a/sources/tech/20201001 Akraino- An Open Source Project for the Edge.md b/sources/tech/20201001 Akraino- An Open Source Project for the Edge.md deleted file mode 100644 index 9fa671bed6..0000000000 --- a/sources/tech/20201001 Akraino- An Open Source Project for the Edge.md +++ /dev/null @@ -1,63 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Akraino: An Open Source Project for the Edge) -[#]: via: (https://www.linux.com/news/akraino-an-open-source-project-for-the-edge/) -[#]: author: (Swapnil Bhartiya https://www.linux.com/author/swapnil/) - -Akraino: An Open Source Project for the Edge -====== - -Akraino is an open-source project designed for the Edge community to easily integrate open source components into their stack. It’s a set of open infrastructures and application blueprints spanning a broad variety of use cases, including 5G, AI, Edge IaaS/PaaS, IoT, for both provider and enterprise Edge domains. We sat down with Tina Tsou, TSC Co-Chair of the Akraino project to learn more about it and its community. - -Here is a lightly edited transcript of the interview: - -Swapnil Bhartiya: Today, we have with us Tina Tsou, TSC Co-Chair of the Akraino project. Tell us a bit about the Akraino project. - -Tina Tsou: Yeah, I think Akraino is an Edge Stack project under Linux Foundation Edge. Before Akraino, the developers had to go to the upstream community to download the upstream software components and integrate in-store to test. With the blueprint ideas and concept, the developers can directly do the use-case base to blueprint, do all the integration, and [have it] ready for the end-to-end deployment for Edge. - -Swapnil Bhartiya: The blueprints are the critical piece of it. What are these blueprints and how do they integrate with the whole framework? - -Tina Tsou: Based on the certain use case, we do the community CI/CD ( continuous integration and continuous deployment). We also have proven security requirements. We do the community lab and we also do the life cycle management. And then we do the production quality, which is deployment-ready. - -Swapnil Bhartiya: Can you explain what the Edge computing framework looks like? - -Tina Tsou: We have four segments: Cloud, Telco, IoT, and Enterprise. When we do the framework, it’s like we have a framework of the Edge compute in general, but for each segment, they are slightly different. You will see in the lower level, you have the network, you have the gateway, you have the switches. In the upper of it, you have all kinds of FPGA and then the data plan. Then, you have the controllers and orchestration, like the Kubernetes stuff and all kinds of applications running on bare metal, virtual machines or the containers. By the way, we also have the orchestration on the site. - -Swapnil Bhartiya: And how many blueprints are there? Can you talk about it more specifically? -Tina Tsou: I think we have around 20-ish blueprints, but they are converged into blueprint families. We have a blueprint family for telco appliances, including Radio Edge Cloud, and SEBA that has enabled broadband access. We also have a blueprint for Network Cloud. We have a blueprint for Integrated Edge Cloud. We have a blueprint for Edge Lite IoT. So, in this case, the different blueprints in the same blueprint family can share the same software framework, which saves a lot of time. That means we can deploy it at a large scale. - -Swapnil Bhartiya: The software components, which you already talked about in each blueprint, are they all in the Edge project or there are some components from external projects as well? - -Tina Tsou: We have the philosophy of upstream first. If we can find it from the upstream community, we just directly take it from the upstream community and install and integrate it. If we find something that we need, we go to the upstream community to see whether it can be changed or updated there. - -Swapnil Bhartiya: How challenging or easy it is to integrate these components together, to build the stack? - -Tina Tsou: It depends on which group and family we are talking about. I think most of them at the middle level of middle are not too easy, not too complex. But the reference has to create the installation, like the YAML files configuration and for builds on ISO images, some parts may be more complex and some parts will be easy to download and integrate. - -Swapnil Bhartiya: We have talked about the project. I want to talk about the community. So first of all, tell us what is the role of TSC? - -Tina Tsou: We have a whole bunch of documentation on how TSA runs if you want to read. I think the role for TSC is more tactical steering. We have a chair and co-chair, and there are like 6-7 subcommittees for specific topics like security, technical community, CI and documentation process. - -Swapnil Bhartiya: What kind of community is there around the Akraino project? - -Tina Tsou: I think we have a pretty diverse community. We have the end-users like the telcos and the hyperscalers, the internet companies, and also enterprise companies. Then we have the OEM/ODM vendors, the chip makers or the SoC makers. Then have the IP companies and even some universities. - -Swapnil Bhartiya: Tina, thank you so much for taking the time today to explain the Akraino project and also about the blueprints, the community, and the roadmap for the project. I look forward to seeing you again to get more updates about the project. - -Tina Tsou: Thank you for your time. I appreciate it. --------------------------------------------------------------------------------- - -via: https://www.linux.com/news/akraino-an-open-source-project-for-the-edge/ - -作者:[Swapnil Bhartiya][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://www.linux.com/author/swapnil/ -[b]: https://github.com/lujun9972 diff --git a/sources/tech/20201001 Bringing COBOL to the Modern World.md b/sources/tech/20201001 Bringing COBOL to the Modern World.md deleted file mode 100644 index 2eeb097f65..0000000000 --- a/sources/tech/20201001 Bringing COBOL to the Modern World.md +++ /dev/null @@ -1,101 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Bringing COBOL to the Modern World) -[#]: via: (https://www.linux.com/news/bringing-cobol-to-the-modern-world/) -[#]: author: (Swapnil Bhartiya https://www.linux.com/author/swapnil/) - -Bringing COBOL to the Modern World -====== - -COBOL is powering most of the critical infrastructure that involves any kind of monetary transaction. In this special interview conducted during the recent Open Mainframe Summit, we talked about the relevance of COBOL today and the role of the new COBOL working group that was announced at the summit. Joining us were Cameron Seay, Adjunct Professor at East Carolina University and Derek Lisinski of the Application Modernizing Group at Micro Focus. Micro Focus recently joined the Open Mainframe Project and is now also involved with the working group. - -Here is an edited version of the discussion: - -Swapnil Bhartiya: First of all, Cam and Derek, welcome to the show. If you look at COBOL, it’s very old technology. Who is still using COBOL today? Cam, I would like to hear your insight first. - -Cameron Seay: Every large commercial bank I know of uses COBOL. Every large insurance company, every large federal agency, every large retailer uses COBOL to some degree, and it processes a large percentage of the world’s financial transactions. For example, if you go to Walmart and you make a sale, that transaction is probably recorded using a COBOL program. So, it’s used a lot, a large percentage of the global business is still done in COBOL. - -Swapnil Bhartiya: Micro Focus is I think one of the few companies that offer support around COBOL. Derek, please tell people the importance of COBOL in today’s modern world. - -Derek Lisinski: Well, if we go back in time, there weren’t that many choices on the market. If you wanted robust technology to build your business systems, COBOL was one of the very few choices and so it’s surprising when there are so many choices around today and yet, many of the world’s largest industries, largest organizations still rely on COBOL. If COBOL wasn’t being used, so many of those systems that people trust and rely on — whether you’re moving money around, whether you’re running someone’s payroll, whether you’re getting insurance quotation, shipping a parcel, booking a holiday. All of these things are happening with COVID at the backend and the value you’re getting from that is not just that it’s carried on, but it runs with the same results again and again and again, without fail. - -The importance of COBOL is not just its pervasiveness, which I think is significant and perhaps not that well understood, but also it’s reliability. And because it’s welded very closely to the mainframe environments and to CICS and some other core elements of the mainframe and other platforms as well. It uses and trusts a lot of technology that is unrivaled in terms of its reliability, scalability and its performance. That’s why it remains so important to the global economy and to so many industries. It does what it needs to do, which is business processing, so fantastically well. - -Swapnil Bhartiya: Excellent, thanks for talking about that. Now, you guys recently joined the project and the foundation as well, so talk about why you joined the Open Mainframe Project and what are the projects that you will be involved with, of course. I know you’re involved with the working group, but talk about your involvement with the project. - -Derek Lisinski: Well, our initial interest with the Open Mainframe Project goes back a couple of years. We’re longtime proponents of the mainframe platform, of course, here at Micro Focus. We’ve had a range of technologies that run on z/OS. But our interest in the wider mainframe community—and that would be the Open Mainframe Project—probably comes as a result of the time we’ve spent with the SHARE community and other IBM-sponsored communities, where the discussion was about the best way to embrace this trusted technology in the digital era. This is becoming a very topical conversation and that’s also true for COBOL, which I’m sure we’ll come back to. - -Our interest in the OMP has been going on for the last couple of years and we were finally able to reach an agreement between both organizations to join the group this year, specifically because of a number of initiatives that we have going on at Micro Focus and that a number of our customers have talked to us about specifically in the area of mainframe DevOps. As vital as the mainframe platform is, there’s a growing desire to use it to deliver greater and greater value to the business, which typically means trying to accelerate delivery cycles and get more done. - -Of course, now the mainframe is so inextricably connected with other parts of the IT ecosystem that those points of connection and the number of moving parts have to be handled, integrated with, and managed as part of a delivery process. It’s an important part of our customers’ roadmap and, therefore, our roadmap to ensure that they get the very best of technology in the mainframe world. Whether it’s tried-and-trusted technology, whether it’s new emerging vendor technology, or whether in many cases, it becomes open source technology. We wanted to play our part in those kinds of projects and a number of initiatives around. - -Swapnil Bhartiya: Is there an increase in interest in COBOL that we are seeing there now that there is a dedicated working group? And if you can also talk a bit about what will be the role of this group. - -Cameron Seay: If your question was, is there an increased interest in working in COBOL because of the working group, the working group actually came as a result of a renewed interest in the written new discovery in COBOL. The governor of New Jersey made a comment that their unemployment was not able to be processed because of COBOL’s obsolescence, or inefficiency, or inadequacy to some degree. And that sparked quite a furor in the mainframe world because it wasn’t COBOL at all. COBOL had nothing to do with the inability of New Jersey to deliver the unemployment checks. Further, we’re aware that New Jersey is just typical of every state. Every state that I know of—there may be some exceptions I’m not aware of, I know it’s certainly true for California and New York—is dependent upon COBOL to process their day-to-day business applications. - -So, then Derek and some other people inside the OMP got together and started having some conversations, myself included, and said “We maybe need to form a COBOL working group to renew this interest in COBOL and establish the facts around COBOL.” So that’s kind of what the working group is trying to do, and we’re trying to increase that familiarity, visibility and interest in COBOL. - -Swapnil Bhartiya: Derek, I want to bring the same question to you also. Is there any particular reason that we are seeing an increase in interest in COBOL and what is that reason? - -Derek Lisinski: Yeah, that’s a great question and I think there are a few reasons. First of all, I think a really important milestone for COBOL was actually last year when it turned 60 years old. I think one of your earlier questions is related to COBOL’s age being 60. Of course, COBOL isn’t a 60-year-old language but the idea is 60 years old, for sure. If you drive a 2020 motor car, you’re driving a 2020 motor car, you’re not driving a hundred-year-old idea. No one thinks a modern telephone is an old idea, either. It’s not old technology, sorry. -The idea might’ve been from a long time ago, but the technology has advanced, and the same thing is true in code. But when we celebrated COBOL’s 60th anniversary last year—a few of the vendors did and a number of organizations did, too—there was an outpouring of interest in the technology. A lot of times, COBOL just quietly goes about its business of running the world’s economy without any fuss. Like I said, it’s very, very reliable and it never really breaks. So, it was never anything to talk about. People were sort of pleasantly surprised, I think, to learn of its age, to learn of the age of the idea. Now, of course, Micro Focus and IBM and some of the other vendors continue to update and adapt COBOL so that it continues to evolve and be relevant today. - -It’s actually a 2020 technology rather than a 1960 one, but that was the first one. Secondly, the pandemic caused a lot of businesses to have to change how they process core systems and how they interact with their customers. That put extra strain on certain organizations or certain government agencies and, in a couple of cases, COBOL was incorrectly made the scapegoat for some of the challenges that those organizations face, whether it was a skills issue or whether it was a technology issue. Under the cover, COBOL was working just fine. So the interest has been positive regarding the anniversary, but I think the reports have been inaccurate and perhaps a little unkind about COBOL. Those were the two reasons they came together. - -I remember when I first spoke to Cam and to some of the other people on the working group, you said it was a very good idea once and for all that we told the truth about COBOL, that the industry finally understood how viable it is, how valuable it is, based on the facts behind COBOL’s usage. So one of the things we’re going to do is try to quantify and qualify as best we can, how widely COBOL is used, what do you use it for, who is using, and then present a more factual story about the technology so people can make a more informed decision about technical strategy. Rather than base it on hearsay or some reputation about something being a bit rusty and out-of-date, which is probably the reputation that’s being espoused by someone who would have you replace it with something else, and their motivation might be for different reasons. There’s nothing wrong with COBOL and it’s very, very viable and our job I think really is to tell that truth and make sure people understand it, - -Swapnil Bhartiya: What other projects, efforts, or initiatives are going on there at the Linux Foundation or Open Mainframe Project around COBOL? Can you talk about that? - -Cameron Seay: Well, certainly. There is currently a course being developed by folks in the community who have developed an online course in COBOL. It’s the rudiments of it. It’s for novices, but it’s great for a continuing education program. So, that’s one of the things going on around COBOL. Another thing is there’s a lot going on in mainframe development in the OMP now. There’s an application framework that has been developed called Zoe that will allow you to develop applications for z/OS. It’s interesting that the focus of the Open Mainframe Project when it first began was Linux on the mainframe, but actually the first real project that came out of it was a z/OS-based product, Zoe, and so we’re interested in that, too. Those are just a couple of peripheral projects that the COBOL working group is going to work with. - -There are other things we want to do from a curriculum standpoint down the road, but fundamentally, we just want to be a fact-finding, fact-gathering operation first, and Derek Lisinski has been taking leadership and putting together a substantial reference list so that we can get the facts about COBOL. Then, we’re going to do other things, but that we want to get that right first. - -Swapnil Bhartiya: So there are as you mentioned a couple of projects. Is there any overlap between these projects or how different they are? Do they all serve a different purpose? It looks like when you’re explaining the goal and role of the working group, it sounds like it’s also the training or education group with the same kind of activities. Let me rephrase it properly: what are some of the pressing needs you see for the COBOL community, how are these efforts/groups are trying to help them, and how are they not overlapping or stepping on each other’s toes? - -Cameron Seay: That’s an ongoing thing. Susharshna and I really work hard to make sure that we’re not working at either across purposes or there’s duplication of effort. We’re kind of clear about our roles. For the world at large, for the public at large, the working group—and Derek may have a different view on this because we all don’t think alike, we all don’t see this thing exactly the same—but I see it as information first. We want people to get accurate current information about COBOL. - -Then, we want to provide some vehicle that COBOL can be reintroduced back into the general academic curriculum because it used to be. I studied COBOL at a four-year university. Most people did when they took programming in the ’80s and the ’90s, they took COBOL, but that’s not true anymore. Our COBOL course at East Carolina this semester is the only COBOL course in the entire USC system. That’s got to change. So information, exposure, accurate information exposure, and some kind of return to the general curriculum, those are the three things that we we can provide to the community at large. - -Swapnil Bhartiya: If you look at Micro Focus, you are working in the industry, you are actually solving the problem for your customers. What role do these groups or other efforts that are going on there play for the whole ecosystem? - -Derek Lisinski: Well, I think if we go back to Cam’s answer, I think he’s absolutely right that the industry, if you project forward another generation in 25 years’ time who are going to be managing these core business systems that currently still need to run the world’s largest organizations. I know we’re in a digital era and I know that things are changing at an unprecedented pace, but most of the world’s largest organizations, successful organizations still want to be in those positions in generations to come. So who is it? Who are those practitioners that are coming through the education system right now, who are going to be leaders in those organizations’ IT departments in the future? - -And there is a concern not just for COBOL, but actually, many IT skills across the board. Is there going to be enough talent to actually run the organizations of the future? And that’s true, it’s a true question mark about COBOL. So Micro Focus, which has its own academic initiative and its own training program as does IBM as do many of the other vendors, we all applaud the work of all community groups. The OMP is obviously a fabulous example because it is genuinely an open group. Genuinely, it’s a meritocracy of people with good ideas coming together to try to do the right thing. We applaud the efforts to ensure that there continues to be enough supply of talented IT professionals in the future to meet the growing and growing demand. IT is not going away. It’s going to become strategically more and more important to these organizations. - -Our part to play in Micro Focus is really to work shoulder-to-shoulder with organizations like the OMP because between us, we will create enough groundswell of training and opportunity for that next generation. Many people will tell you there just isn’t enough of that training going on and there aren’t enough of those opportunities available, even though one survey that Micro Focus ran last year on the back of the COBOL’s 60th anniversary suggests that around 92% of all application owners of COBOL systems confirmed that those applications remain strategic to their organization. So, if the applications are not going anywhere, who’s going to be looking after them in the next generation? And that’s the real challenge that I think the industry faces as a whole, which is why Micro Focus is so committed to get behind the wheel of making sure that we can make a difference. - -Swapnil Bhartiya: We discussed that the interest in COBOL is increasing as COBOL is playing a very critical role in the modern economy. What kind of future do you see for COBOL and where do you see it going? I mean, it’s been around for 60 years, so it knows how to survive through times. Still, where do you see it go? Cam, I would love to start with you. - -Cameron Seay: Yeah, absolutely. We are trying to estimate how much COBOL is actually in use. That estimate is running into hundreds of billions of lines of code. I know that, for example, Bank of America admits to at least 50 million lines of COBOL code. That’s a lot of COBOL, and you’re not going to replace it over time, there’s no reason to. So the solution to this problem, and this is what we’re going to do, is we’re going to figure out a way to teach people COBOL. It’s not a complex language to learn. Any organization that sees lack of COBOL skills as an impediment and justification to move to another platform is [employing] a ridiculous solution, that solution is not feasible. If they try to do that, they’re going to fail because there’s too much risk and, most of all, too much expense. - -So, we’re going to figure out a way to begin to teach people COBOL again. I do it, a COBOL class at East Carolina. That is a solution to this problem because the code’s not going anywhere nor is there a reason for it to go anywhere, it works! It’s a simple language, it’s as fast as it needs to be, it’s as secure as it needs to be, and no one that I’ve talked to, computer scientists all over the world, no one can give me any application, that any language is going to work better than COBOL. There may be some that work as good or nearly as good, but you’re going to have to migrate them, but there’s nothing, there’s no improvement that you can make on these applications from a performance standpoint and from a security standpoint. The applications are going to stay where they are, and we’re just going to have to teach people COBOL. That’s the solution, that’s what’s going to happen. How and when, I don’t know, but that’s what’s going to happen. - -Swapnil Bhartiya: If you look at the crisis that we were going through, almost everything, every business is moving online to the cloud. All those transactions that people are already doing in person are all moving online, so it has become critical. From your perspective, what kind of future do you see? - -Derek Lisinski: Well, that’s a great question because the world is a very, very different place to how architecture was designed however long ago. Companies of today are not using that architecture. So there is some question mark there about what’s COBOL’s future. I agree with Cam. Anyone that has COBOL is not necessarily going to be able to throw that away anytime soon because, frankly, it might be difficult. It might be easy, but that’s not really the question, is it? Is it a good business decision? The answer is it’s a terrible business decision to throw it away. - -In addition to that, I would contend that there are a number of modern-day digital use cases where actually the usage of COBOL is going to increase rather than decrease. We see this all the time with our larger organizations who are using it for pretty much the whole of the backend of their core business. So, whether it’s a banking organization or an insurer or a logistics company, what they’re trying to do obviously is find new and exciting business opportunities. - -But, upon which they will be basing their core business systems that already run most of the business today, and then trying to use that to adapt, to enhance, to innovate. There are insurers who are selling the insurance quotation system to other smaller insurances as a service. Now, of course, their insurance quotation system is probably the version that isn’t quite as quick as the one that runs on their mainframe, but they’re making that available as a service to other organizations. Banking organizations are doing much the same thing with a range of banking services, maybe payment systems. These are all services that can be provided to other organizations. - -The same is true in the ISB market where really, really robust COBOL-based financial services, packages, ERP systems, which are COBOL based, and they have been made available as cloud-based as-a-service packages or upon other platforms to meet new market needs. The thing about COBOL that few people understand is not only is it easy to learn, but it’s easy to move to somewhere else. So, if your client is now running Linux and it says, “Well, now I want it to run these core COBOL business systems there, too.” Well, maybe they’ve taken a move to AIX to a Power system, but the same COBOL system can be reused, replicated as necessary, which is a little known secret about the language. - -This goes back to the original design, of course. Back in the day, there was no such thing as the “standard platform” in 1960. There wasn’t a single platform that you could reasonably rely on that would give you a decent answer, not very quickly anyway. So, in order for us to know that COBOL works, we have to have the same results compiled about running on different machines. It needs to be the same result running at the same speed, and from that point, that’s when the portability of the system came to life. That’s what they set out to do, built that way by design. - -Swapnil Bhartiya: Cam, Derek, thank you so much for taking the time out today to talk about COBOL, how important it is in today’s world. I’m pretty sure that when we spend our whole day, some of the activities that we have done online touch COBOL or are powered by COBOL. --------------------------------------------------------------------------------- - -via: https://www.linux.com/news/bringing-cobol-to-the-modern-world/ - -作者:[Swapnil Bhartiya][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://www.linux.com/author/swapnil/ -[b]: https://github.com/lujun9972 diff --git a/sources/tech/20201006 5 Scratch code blocks to teach kids how to program a video game.md b/sources/tech/20201006 5 Scratch code blocks to teach kids how to program a video game.md deleted file mode 100644 index e8c825d5e7..0000000000 --- a/sources/tech/20201006 5 Scratch code blocks to teach kids how to program a video game.md +++ /dev/null @@ -1,165 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (5 Scratch code blocks to teach kids how to program a video game) -[#]: via: (https://opensource.com/article/20/10/advanced-scratch) -[#]: author: (Jess Weichler https://opensource.com/users/cyanide-cupcake) - -5 Scratch code blocks to teach kids how to program a video game -====== -Advance your Scratch skills with loops, conditional statements, -collision detection, and more in this article in a series about teaching -kids to code. -![Binary code on a computer screen][1] - -In the second article in this series, you [created your first few video game scripts in Scratch][2]. This article explores ways to expand programming's possibilities to create more advanced code. - -There are multiple ways to introduce these skills to kids, such as: - - 1. Introduce a task or challenge that requires children to use the skill. Use inquiry to help them find the solution, then reinforce their discoveries with a formal explanation. - 2. Encourage free experimentation by having children come up with their own projects. As they work through their code, go over skills as needed. - 3. Introduce the skill, then have children experiment with it. - - - -No matter which one you choose, always remember that the most important part of learning coding is making mistakes. Even skilled programmers don't get it right every time or know every possible line of code. It works best when educators, pupils, and peers are all learning to code together as a team. - -There are [10 categories][3] of code blocks in Scratch; here is how to use some of the most common. - -### Loops - -_This is the code that doesn't end; yes, it goes on and on, my friend!_ **Forever loops** and **repeat blocks** in [Scratch][4] are what you need to repeat lines of code automatically. Any code blocks placed inside a loop block continue to run until the game is stopped or, if you're using a repeat block, the number is reached. - -![Loops in Scratch][5] - -(Jess Weichler, [CC BY-SA 4.0][6]) - -### Conditional statements - -**Conditional statements** run only if certain conditions are met. "If you're cold, then put on a sweater" is a real-world example of a conditional statement: you put a sweater on only if you determine that it's cold. - -There are four conditional statement code blocks in Scratch: - - * if ... then  - * if ... then ... else  - * wait until...  - * repeat until...  - - - -Any code blocks placed inside a conditional statement run only if the condition is met. - -![Conditional statement blocks in Scratch][7] - -(Jess Weichler, [CC BY-SA 4.0][6]) - -Notice the diamond shapes in each conditional statement code block; can you find any code blocks that might fit inside? - -Diamond-shaped code blocks can be used to complete any of the four conditional-statement blocks. You can find diamond-shaped blocks in the [Sensing][8] and [Operators][9] block categories. - -![Diamond-shaped blocks in Scratch][10] - -(Jess Weichler, [CC BY-SA 4.0][6]) - -### Collision-detection loop - -Sometimes you may want to check to see if your sprite is touching another sprite or a specific color. To do so, use a [**collision-detection loop**][11]. - -A collision-detection loop combines loops and conditional statements to constantly check whether the sprite is touching another sprite (for example, a coin sprite). - -![Collision-detection script in Scratch][12] - -(Jess Weichler, [CC BY-SA 4.0][6]) - -Inside the inner `if ... then` block, place the action you want to happen when the condition is met. - -This type of algorithm is a **collision-detection script**. Collision-detection scripts sense when two sprites or objects are touching. A basic collision-detection script uses four main code blocks: - - * Event hat - * Forever loop - * If … then - * Touching - - - -You can place more code blocks inside the `if ... then` block. These blocks will run only if the active sprite is touching the sprite listed in the `touching` block. - -Can you figure out how to make an object "hide" when it collides with another sprite? This is a common technique to indicate that, for instance, a sprite has eaten some food or has picked up an item. - -### Variables and math - -A **variable** is a placeholder for a value, usually a number, that you don't know yet. In math, using a variable might look something like this: `x+12=15`. - -![Variables in Scratch][13] - -(Jess Weichler, [CC BY-SA 4.0][6]) - -If that doesn't make sense to you, that's okay. I didn't understand variables until I started coding as an adult. - -Here is one example of how you might use a variable in code: - -![Variables in Scratch][14] - -(Jess Weichler, [CC BY-SA 4.0][6]) - -### Coordinates - -Scratch uses a coordinate graph to measure the screen. The exact middle of the screen has a value of 0,0. The length of the screen (X-axis) is -240 to 240, the height (Y-axis) is -180 to 180. - -The X and Y **coordinates** control where each sprite is on the screen, and you can code a sprite's X and Y coordinates to set a specific place using **[motion blocks][15]**. - -![Coordinates in Scratch][16] - -(Jess Weichler, [CC BY-SA 4.0][6]) - -### Put it all together - -Think about the basics of any game; what are some elements you usually need? - -Here are some examples: - - * A goal - * A way to win - * A way to lose - * An obstacle - * A scoring system - - - -With the techniques above, you have everything you need to create a playable game with these elements and more. - -There are still heaps of code blocks in Scratch that I haven't mentioned. Keep exploring the possibilities. If you don't know what a code block does, put it in a script to see what happens! - -Coming up with an idea for a game can be difficult. The great thing about the open source community, Scratchers included, is that we love to build upon one another's work. With that in mind, in the next article, I'll look at some of my favorite user-made projects for inspiration. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/10/advanced-scratch - -作者:[Jess Weichler][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/cyanide-cupcake -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/binary_code_computer_screen.png?itok=7IzHK1nn (Binary code on a computer screen) -[2]: https://opensource.com/article/20/9/scratch -[3]: https://en.scratch-wiki.info/wiki/Categories -[4]: https://scratch.mit.edu/ -[5]: https://opensource.com/sites/default/files/uploads/codekids3_1.png (Loops in Scratch) -[6]: https://creativecommons.org/licenses/by-sa/4.0/ -[7]: https://opensource.com/sites/default/files/uploads/codekids3_2.png (Conditional statement blocks in Scratch) -[8]: https://en.scratch-wiki.info/wiki/Blocks#Sensing_blocks -[9]: https://en.scratch-wiki.info/wiki/Blocks#Operators_blocks -[10]: https://opensource.com/sites/default/files/uploads/codekids3_3.png (Diamond-shaped blocks in Scratch) -[11]: https://en.scratch-wiki.info/wiki/Making_Sprites_Detect_and_Sense_Other_Sprites -[12]: https://opensource.com/sites/default/files/uploads/codekids3_4.png (Collision-detection script in Scratch) -[13]: https://opensource.com/sites/default/files/uploads/codekids3_5.png (Variables in Scratch) -[14]: https://opensource.com/sites/default/files/uploads/codekids3_6.png (Variables in Scratch) -[15]: https://en.scratch-wiki.info/wiki/Motion_Blocks -[16]: https://opensource.com/sites/default/files/uploads/codekids3_7.png (Coordinates in Scratch) diff --git a/sources/tech/20201007 Design and document APIs using an open source cross-platform tool.md b/sources/tech/20201007 Design and document APIs using an open source cross-platform tool.md deleted file mode 100644 index 196df6ac22..0000000000 --- a/sources/tech/20201007 Design and document APIs using an open source cross-platform tool.md +++ /dev/null @@ -1,199 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Design and document APIs using an open source cross-platform tool) -[#]: via: (https://opensource.com/article/20/10/spec-first-development-apis) -[#]: author: (Greg Schier https://opensource.com/users/gregschier) - -Design and document APIs using an open source cross-platform tool -====== -Insomnia Designer makes spec-first development more accessible by -providing collaborative tools to organize, maintain, and validate API -specs. -![Computer laptop in space][1] - -In the world of software-as-a-service (SaaS) and service-based architectures, it's not uncommon for companies to maintain dozens or even hundreds of APIs, often spanning multiple teams, programming languages, and environments. This variability makes it extremely difficult to see what's happening at a high level to prevent changes from having negative impacts. - -It's estimated that 40% of large enterprises struggle with challenges to secure, scale, or ensure performance for APIs. Because of this, more and more companies are choosing to adopt a "spec-first development" approach by defining and documenting APIs in an external format like [OpenAPI][2]. Storing these documents together in a central location makes it much easier to design, discuss, and approve changes _before_ implementation. - -In this tutorial, you'll use the recently released [Insomnia Designer][3] to document an API, explore it, and propose a change using a spec-first approach. Designer is a cross-platform, open source REST client that builds on top of Insomnia Core—a popular app for interacting with HTTP and GraphQL APIs—aiming to make spec-first development more accessible by providing collaborative tools to organize, maintain, and validate API specs. In essence, Core is best for exploring and debugging APIs while Designer is best for designing and documenting them. - -In this how-to, you'll use the [Open Library API][4] as a base to have working examples to play with. You'll create a minimal OpenAPI spec to document the APIs, use Insomnia Designer to test and verify that what you've done is correct, and then make some design changes to the API using a spec-first approach. - -### The spec-first workflow - -Before you begin, you should understand the steps necessary to adopt a spec-first workflow. In spec-first development, a specification can be in one of two states: - - * **Published spec:** A specification that describes a currently published API exactly - * **Proposal spec:** A draft specification that contains changes that need to be implemented - - - -From this information, you can define a workflow for making changes to an API: - - 1. Start with the published specification for the API - 2. Make changes to the specification to add or modify behavior - 3. Review the proposal spec to ensure the design is sufficient - 4. Implement changes in code to match the proposal - 5. Publish the proposal spec along with the API - - - -Now that you understand the workflow for what you are trying to accomplish, open Insomnia Designer and start trying it out. - -### Define the initial specification - -Since you don't yet have a published specification for the Open Library API, you need to define one. - -Start by creating a new blank document from the **Create** menu, give it a name, then click to the document to enter **Design View**. From here, you can start editing your spec. - -![Create a new document][5] - -(Greg Schier, [CC BY-SA 4.0][6]) - -The OpenAPI spec is most commonly written in [YAML][7] format and requires four top-level blocks to get started: `openapi`, `info`, `servers`, and `paths`. The following example defines each of these blocks with helpful comments to describe the purpose of each. Also, the `paths` block defines a route for `GET /recentchanges.json`: - - -``` -# Specify that your document is the OpenAPI 3 format -openapi: 3.0.0 - -# Define high-level metadata for the API -info: -  version: 1.0.0 -  title: Open Library API -  description: Open Library has a RESTful API -  -# Specify the base URL the API can be accessed from -servers: -  - url: - -# Define operations for the API. This will be where most -# of the work is done. The first route you'll be defining -# is `GET /recentchanges.json` -paths: -  /recentchanges.json: -    get: -      summary: Recent Changes -``` - -OpenAPI provides much more than what's visible here, such as the ability to define authentication, response formats, reusable components, and more. - -After copying the specification above into Insomnia Designer, you'll see three columns: - - 1. **Navigation sidebar (left):** Nested menu to make navigating larger documents easier - 2. **Spec editor (middle):** Text editor for editing the YAML document - 3. **Documentation preview:** Generated documentation to preview the specification - - - -![Insomnia Designer UI with three columns][8] - -(Greg Schier, [CC BY-SA 4.0][6]) - -Feel free to modify different parts of the specification to see what happens. As a safeguard, Insomnia Designer alerts you when you've done something wrong. For example, if you accidentally delete the colon on line 18, an error panel will display below the editor. - -![Insomnia Designer UI error message][9] - -(Greg Schier, [CC BY-SA 4.0][6]) - -Now that you have defined a specification, you can verify that your definition is correct by switching to **Debug** mode and sending a real request to the API. In Debug mode, you can see a single route was generated for the `GET /recentchanges.json` endpoint. Click the **Send** button beside the URL to execute the request and render the response in the right panel. - -![Checking response in Insomnia Designer][10] - -(Greg Schier, [CC BY-SA 4.0][6]) - -There you have it! You've successfully verified that the API specification you created matches the production API. Now you can move to the next step in the spec-first development workflow and propose a change. - -### Create a proposal specification - -According to the workflow outlined above, changes made to your API should first be defined in the specification. This has a number of benefits: - - * Specifications can be checked into a central source-code repository - * Changes are easy to review and approve - * APIs are defined in a single, consistent format - * Unnecessary code changes are avoided - - - -Go ahead and propose a change to your API. While in Debug mode, I noticed the API returned hundreds of results. To improve performance and usability, it would be useful to limit the number of results returned to a specific amount. A common way of doing this is to accept a `limit` parameter in the query section of the URL, so go ahead and modify your specification to add a `limit` parameter. - -In OpenAPI, you can define this by adding a `parameters` block to the route**:** - - -``` -# ... -paths: -  /recentchanges.json: -    get: -      summary: Recent Changes -      -      # Add parameter to limit the number of results -      parameters: -        - name: limit -          in: query -          description: Limit number of results -          required: true -          schema: -            type: integer -            example: 1 -``` - -You can verify you defined it correctly by expanding the route within the preview and inspecting the parameters. - -![Verifying spec definition in Insomnia][11] - -(Greg Schier, [CC BY-SA 4.0][6]) - -### Review and implement the proposal - -Now that you have created a proposal spec, you can have your team review and approve the changes. Insomnia Designer provides the ability to [sync API specifications to source control][12], allowing teams to review and approve changes to API specs the same way they do with source code. - -For example, you might commit and push your proposed spec to a new branch in GitHub and create a pull request to await approval. - -Because this is a tutorial on spec-first development, you won't implement the proposal yourself. The parameter you added is already supported by the API, however, so for the purpose of this article, use your imagination and pretend that your team has implemented the change. - -### Verify the updated specification - -Once the proposal has been implemented and deployed, you can switch to Debug mode, which will regenerate the requests based on your changes, and again verify that the spec matches the production API. To ensure the new query param is being sent, click the **Query** tab within Debug mode and observe that the `limit` parameter is set to your example value of `1`. - -Once you send the request, you can verify that it returns only a single result. Change the `limit` to a different value or disable the query parameter (using the checkbox) to further verify things work as expected. - -![Verifying things work as expected in Insomnia Designer][13] - -(Greg Schier, [CC BY-SA 4.0][6]) - -### The power of spec-first development - -This tutorial walked through a simplified example of spec-first development. In it, you created an OpenAPI specification, verified the specification matched the implementation, and simulated what it's like to propose a behavior change. - -For a single API as simple as this demo, it may be difficult to see the full benefit of spec-first development. However, imagine being a product owner in a large organization managing hundreds of production APIs. Having well-documented specifications, accessible from a central location like Insomnia Designer, allows anyone within the organization to quickly get up to speed on any API. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/10/spec-first-development-apis - -作者:[Greg Schier][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/gregschier -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/computer_space_graphic_cosmic.png?itok=wu493YbB (Computer laptop in space) -[2]: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md -[3]: https://insomnia.rest/products/designer -[4]: https://openlibrary.org/developers/api -[5]: https://opensource.com/sites/default/files/uploads/insomnia_newdocument.png (Create a new document) -[6]: https://creativecommons.org/licenses/by-sa/4.0/ -[7]: https://yaml.org/ -[8]: https://opensource.com/sites/default/files/uploads/insomnia_columns.png (Insomnia Designer UI with three columns) -[9]: https://opensource.com/sites/default/files/uploads/insomnia_error.png (Insomnia Designer UI error message) -[10]: https://opensource.com/sites/default/files/uploads/insomnia_response.png (Checking response in Insomnia Designer) -[11]: https://opensource.com/sites/default/files/uploads/insomnia_verifydefinition.png (Verifying spec definition in Insomnia) -[12]: https://support.insomnia.rest/article/96-git-sync -[13]: https://opensource.com/sites/default/files/uploads/insomnia_limit.png (Verifying things work as expected in Insomnia Designer) diff --git a/sources/tech/20201009 5 ways organizations can lean into failure and transform it into success.md b/sources/tech/20201009 5 ways organizations can lean into failure and transform it into success.md deleted file mode 100644 index 5a05391cd3..0000000000 --- a/sources/tech/20201009 5 ways organizations can lean into failure and transform it into success.md +++ /dev/null @@ -1,106 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (5 ways organizations can lean into failure and transform it into success) -[#]: via: (https://opensource.com/article/20/10/organizations-can-lean-failure) -[#]: author: (Dawn Parzych https://opensource.com/users/dawnparzych) - -5 ways organizations can lean into failure and transform it into success -====== -Removing the fear of failure fosters innovation and open-mindedness, -turning mistakes into opportunities for growth and improvement. -![failure sign at a party, celebrating failure][1] - -> "If failure is not an option, then neither is success."—Seth Godin - -Success is something we all strive toward, but the road to success has twists and turns, which are also known as our failures. But instead of giving up when things don't go my way, I have learned to look at failures as learning opportunities. In fact, I now proudly admit that I'm a failure: - - * I failed my driving test the first time I took it. - * I have not gotten every job I've ever applied or interviewed for. - * Most of the articles I've written have not gone viral. - - - -As software engineers, our industry may be competitive, but we need to remove the stigma associated with failing. One way of doing that is to talk about our failures. The more we hear and talk about failures, the more acceptable it becomes. We need to think about failures as learning opportunities, not a time to shame and ridicule others (or ourselves). - -When we have failed, or think we have made a mistake, most of us get that pit in the bottom of our stomach, and the negative self-talk can kick in almost instantly. This reaction occurs because there are often consequences for mistakes, which can impact us personally as well as the organizations we work for. - -Let's consider a hypothetical example: A software engineer submits a pull request for a new feature. It gets merged and released to production. Something goes wrong, and the application begins throwing errors. Customers can't log in. Sadly this isn't the first time this has happened. Some customers are fed up with the application breaking and have canceled their contracts. The CTO is furious. They want to know who is responsible for this feature being released. The team is understaffed because several team members have left the company, and those that remain are [burned out][2]. The incident takes way longer than usual to be resolved, and everyone is grumpy at the end. - -This worst-case scenario doesn't mean we should always play it safe and not take risks. We need to balance the risks with the rewards when making technical decisions at work and with the open source projects we work on. I like to visualize success and failure as two opposite banks of a river, connected by a bridge. That bridge is built out of knowledge, learning, and understanding. Failure is when we grow, but only if we're learning from those failures and have a good mixture of success sprinkled in. - -### What is needed to accept failure? - -Embracing failure from a personal and organizational point of view doesn't happen overnight. It takes both time and the right culture. Start with one of the five areas outlined below. - -#### Have a growth mindset - -In the book _Growth_, Carol Dweck describes two types of mindsets: growth and fixed. A person with a fixed mindset believes in innate capabilities—you're either born with it, or you're not. Failure represents a limit on one's abilities. - -A person with a growth mindset believes that individual effort and attitude determine one's abilities and that they can learn and improve as long as they put in the effort. Failure represents an opportunity to grow. - -To encourage growth means to encourage failure. But saying "it's OK to fail" is not the same as creating a culture where it honestly is OK to fail. That requires psychological safety and a blameless culture. - -#### Create a blameless culture - -A blameless culture focuses on _where_ a system or a process failed, not on _who_ is responsible. If you spend time after an incident looking for and attributing root cause to human error, you are assigning blame. Instead, look for how things can be improved. What broke? How did it break? How can you prevent it in the future? - -![Image of swampy area with overlaid quote reading "If a junior engineer asks where outages come from, I think a cute thing to tell them is 'The server is crying.' And if they ask why the server is crying, another cute thing to tell them is 'probably becaus][3] - -Published with permission from Joshua Zimmerman (@TheJewberwocky) - -#### Foster psychological safety - -A blameless culture cannot exist without psychological safety. Psychological safety is the ability to show up to work without fear; you feel included in the whole, that it is safe to learn, safe to contribute, and safe to challenge the status quo without fear of consequences. Employees need to feel empowered to speak up if they see processes that need to be improved if they are concerned with security or lack of security procedures in place. They need to feel they won't be blamed for taking a risk where the end result wasn't quite what was expected. - -One way to create a blameless culture and provide psychological safety is to eliminate the word "why" from your vocabulary. Why is used quite frequently—there are problem-solving techniques called ["The "5 Whys."][4] The problem with "why" is it is subtly coded instead as "explain yourself." Having to answer "why" questions put people on the defensive, and they spend time focusing on what the "right" answer is instead of answering honestly. Instead, switch to using "what" or "how" questions. "How" and "what" questions promote concrete action. - -Consider the difference in these questions: - - * Why did last night's release cause a series of exceptions? -vs. - * How were the exceptions triggered? - - - -> "Recently, I was asked if I was going to fire an employee who made a mistake that cost the company $600,000. 'No,' I replied, 'I just spent $600,000 training him. Why would I want somebody else to hire his experience?'"— Thomas J. Watson, Chairman & CEO of IBM, 1914-1956 - -#### Remember the importance of play - -The final aspect of embracing failure is to make time to play. Play shapes our brains and fosters empathy. From a young age, we learn to play games, play on a sports team, play on our own, etc. Chances are you didn't always play on an undefeated sports team or win every single game you've ever played, but practice helped you get better over time no matter what. These experiences teach us to be comfortable with failure and to take it in stride with growth and improvement. - -#### Experimentation leads to learning - -Now that you're ready to embrace failure in your DevOps or engineering practices, where do you start? One of the first processes to look at is the build process. As you most likely know, builds can sometimes result in failures. Changing your build process to include [progressive delivery][5] techniques helps you release features in a controlled manner as opposed to a big bang. Using ring deployments or a canary launch, you can see how a feature performs for a small group of users. If there is a failure, the blast radius has been minimized. - -Another process that can help you learn about your applications and systems is experimentation. Experiments provide a number of learning opportunities, and they don't always go as expected. Some failures can turn into wild successes; for example—[Post-it Notes][6]. Experiments allow us to test a hypothesis and learn new things. Experimenting with software can look like running an A/B test to see which look and feel leads to greater engagement or collecting page load time metrics to see if adding pagination to search results negatively impacts performance. - -A popular type of experimentation is to run a chaos day or game day. With a game day, you purposely cause a system or application to fail. This combines the notion of play, failure, and learning. During this controlled experiment, you learn how your system behaves during failure scenarios. The knowledge gained during game days can be used to put safety measures in place or define processes for what to do when a specific failure occurs. - -### Lean into failure - -Failure can be scary; it is seen as a negative and something we want to avoid. I call on you to change your perspective on this. If you're not failing, you're not learning. - -I challenge you to normalize failure and help reduce the stigma by sharing a failure of yours. Share your failures in the comments below or tag me on social media. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/10/organizations-can-lean-failure - -作者:[Dawn Parzych][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/dawnparzych -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/fail_failure_celebrate.png?itok=LbvDAEZF (failure sign at a party, celebrating failure) -[2]: https://opensource.com/article/19/11/burnout-open-source-communities -[3]: https://opensource.com/sites/default/files/uploads/quote-failure-opensource_0.png -[4]: https://en.wikipedia.org/wiki/Five_whys -[5]: https://launchdarkly.com/blog/all-the-canaries-lived-its-time-to-adopt-progressive-delivery/ -[6]: https://www.ideatovalue.com/insp/nickskillicorn/2017/04/true-story-post-notes-almost-failed/ diff --git a/sources/tech/20201009 My open source video game for Open Jam.md b/sources/tech/20201009 My open source video game for Open Jam.md deleted file mode 100644 index e4929f98ab..0000000000 --- a/sources/tech/20201009 My open source video game for Open Jam.md +++ /dev/null @@ -1,235 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (My open source video game for Open Jam) -[#]: via: (https://opensource.com/article/20/10/open-source-game) -[#]: author: (Klaatu https://opensource.com/users/klaatu) - -My open source video game for Open Jam -====== -Step through a game programmed for Open Jam 2020 to get tips for your -own design. -![Gaming with penguin pawns][1] - -This year, I joined in on the [Open Jam][2], a "game jam" in which programmers around the world dedicate a weekend to create open source games. The jam is essentially an excuse to spend a weekend coding, and the majority of the games that come out of the challenge are small distractions rather than something you're likely to play for hours on end. But they're fun, diverse, and open source, and that's a pretty good feature list for a game. - -The game I submitted is [Unveil][3], a calming puzzle game in which the player must first discover the goal, and then work to achieve it with the greatest number of points. Because part of the game is the discovery process, I won't reveal any more about the gameplay than that. - -![Unveil game][4] - -(Klaatu, [CC BY-SA 4.0][5]) - -The whole game is only 338 lines, written in [Python][6] using the [Pygame][6] module. It's, of course, open source, and part of it may serve as a good introduction to a few programming concepts that used to confound me (two-dimensional arrays being the most significant). For simple game design, a two-dimensional array is very useful because so many enduring games are built on them. You can probably think of several, although if you don't know what a two-dimensional array is, you may not realize it. - -### Arrays in gaming - -An array is a collection of data. An array can be listed across a page or an X-axis (in mathematical terms). For instance: - - -``` -`artichoke, lettuce, carrot, aubergine, potato` -``` - -An array may also be represented as a list or a Y-axis: - - -``` -artichoke -lettuce -carrot -aubergine -potato -``` - -This is a one-dimensional array. A two-dimensional array extends on both the X-axis and Y-axis. - -Here's a common two-dimensional array seen in the world of board games: - -![Chess][7] - -(Klaatu, [CC BY-SA 4.0][5]) - -Yes, two-dimensional arrays are used as the board for chess, draughts, noughts and crosses (also called tic-tac-toe), [RPG battle maps][8], [minesweeper][9], Carcassonne, Forbidden Island, and in slightly modified forms, games like Monopoly and even [Ur][10] (literally the oldest game we know of). - -If you can comfortably create a two-dimensional array, you have a great start at programming any number of games. - -### Creating tiles in Pygame - -If you're not familiar with Python, you should take some time to review this [Python (and Pygame) introductory series][11]. If you feel confident enough to translate code to other libraries, though, there's nothing specific to Pygame in the "important" parts of this code (the array constructor), so you can use any library or language. - -For simplicity, I'll call the individual squares in the game board array _tiles_. To construct a two-dimensional array, or game board as the case may be, you must have tiles. In object-oriented programming, you consider each component as a unique object based upon a template (or _class_, in programming terminology). So, before creating the game board, you must first create the infrastructure for the board's building blocks: tiles. - -First, set up a simple Pygame project, creating a display (your window into the game world), a group to represent the game board, and a few standard variables: - - -``` -import pygame - -pygame.init() -game_world = pygame.display.set_mode((960, 720)) -game_board = pygame.sprite.Group() - -running = True -black = (0, 0, 0) -white = (255, 255, 255) -red = (245, 22, 22) -world_x = 960 -world_y = 720 -``` - -Next, create a `Tile` class to establish the template from which each tile gets cast. The first function initializes a new tile when one is created and gives it the necessary basic fields: width, height, an image (actually, I just filled it with the color white), and whether or not it's active. In this case, I use `is_pressed`, as if the tile is a button, because that's what it'll look like when the code is finished: when the user clicks a tile, it changes color as if it were a button being lit up. For other purposes, this state needn't be visible. In chess, for example, you might instead have a field to represent whether a tile is occupied and, if so, by what kind of chess piece. - - -``` -class Tile(pygame.sprite.Sprite): -    def __init__(self, x, y, w, h, c): -        pygame.sprite.Sprite.__init__(self) -        self.image = pygame.Surface((w, h)) -        self.image.fill(c) -        self.rect = self.image.get_rect() -        self.rect.x = x -        self.rect.y = y -        self.is_pressed = False -``` - -The second function is an update function. Specifically, it checks whether a tile has been clicked by the user. This requires mouse coordinates, which you'll get later in the code during the event loop. - -For this demonstration, I'll make this function fill the tile with the color red when it's in the `is_pressed` state and back to white otherwise: - - -``` -    def was_clicked(self, mouse): -        if self.rect.collidepoint(mouse) and not self.is_pressed: -            self.image.fill(red) -            self.is_pressed = True -        elif self.rect.collidepoint(mouse) and self.is_pressed: -            self.image.fill(white) -            self.is_pressed = False -        else: -            return False -``` - -### Main loop - -This demo's main loop is simple. It checks for two kinds of input: a quit signal and a mouse down (click) event. When it detects a mouse click, it calls the `was_clicked` function to react (filling it with red or white, depending on its current state). - -Finally, the screen fills with black, the game board state is updated, and the screen is redrawn: - - -``` -""" -holding place for game board construction -""" - -while running: -    for event in pygame.event.get(): -        if event.type == pygame.QUIT: -            running = False - -        elif event.type == pygame.MOUSEBUTTONDOWN: -            for hitbox in game_board: -                hitbox.was_clicked(event.pos) - -    game_world.fill(black) -    game_board.update() -    game_board.draw(game_world) -    pygame.display.update() - -pygame.quit() -``` - -### Board construction - -To build a two-dimensional array, you must first decide how many tiles you want in both directions. I'll use eight for this example because that's how a chessboard is constructed, but you could use fewer or more. You could even accept arguments at launch to define the array's size depending on options, such as `--row` and `--column:` - - -``` -rows = 8 -columns = 8 -``` - -Because you don't know the size of the board, you must calculate the width of the rows and columns based on the size of your display. I also include one pixel of padding between each tile, because, without a gap, it looks like one big block of color: - - -``` -column_width = world_x / columns -row_height = world_y / rows -pad = 1 -``` - -Laying out tiles across the display is simple. Of course, this isn't the goal, as it only draws along the X-axis, but it's a good start: - - -``` -j = 0 - -while j < rows: -    tile = Tile(j * column_width, row_height, column_width - pad, row_height - pad, white) -    game_board.add(tile) -    j += 1 -``` - -The idea is that the variable `j` starts at 0, so the first tile is placed from 0 to `column_width`, less the value of the padding. Then the variable `j` is incremented to 1, so the next tile is placed at 1 times the value of `column_width`, and so on. - -You can run that code to see the partial success it renders. What this solution obviously lacks is any awareness of further rows. - -Use a second counter variable to track rows: - - -``` -j = 0 -k = 0 - -while j < rows: -    while k < columns: -        tile = Tile(k * column_width, j * row_height, column_width - pad, row_height - pad, white) -        game_board.add(tile) -        k += 1 -    j += 1 -    k = 0 -``` - -In this code block, which achieves the desired result, each tile is positioned in a space determined by the current value of either `j` or `k`. - -The `k` variable is incremented within its loop so that each tile is progressively placed along the X-axis. - -The `j` variable is incremented outside the nested loop so that everything gets moved down one row. - -The `k` variable is then set to 0 so that when the inner loop starts again, everything is shunted back to the far left of the screen. - -![2D array][12] - -(Klaatu, [CC BY-SA 4.0][5]) - -### Easy arrays - -Creating a grid can seem mathematically and syntactically intensive, but with this example plus a little bit of thought about what result you want, you can generate them at will. The only thing left for you to do now is to create a game around it. That's what I did, and you're welcome to play it by downloading it from its home on [Itch.io][3] or from its source repository on [git.nixnet.xyz][13]. Enjoy! - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/10/open-source-game - -作者:[Klaatu][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/klaatu -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/gaming_grid_penguin.png?itok=7Fv83mHR (Gaming with penguin pawns) -[2]: http://openjam.io -[3]: https://notklaatu.itch.io/unveil -[4]: https://opensource.com/sites/default/files/uploads/unveil-2.jpg (Unveil game) -[5]: https://creativecommons.org/licenses/by-sa/4.0/ -[6]: https://www.python.org/ -[7]: https://opensource.com/sites/default/files/uploads/chess.jpg (Chess) -[8]: https://opensource.com/article/18/5/maptool -[9]: https://opensource.com/article/19/9/advanced-bash-building-minesweeper -[10]: https://otagomuseum.nz/athome/the-royal-game-of-ur -[11]: https://opensource.com/article/17/10/python-101 -[12]: https://opensource.com/sites/default/files/uploads/2darray.jpg (2D array) -[13]: https://git.nixnet.xyz/klaatu/unveil diff --git a/sources/tech/20201010 Robust and Race-free Server Logging using Named Pipes.md b/sources/tech/20201010 Robust and Race-free Server Logging using Named Pipes.md deleted file mode 100644 index f969bbac18..0000000000 --- a/sources/tech/20201010 Robust and Race-free Server Logging using Named Pipes.md +++ /dev/null @@ -1,114 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Robust and Race-free Server Logging using Named Pipes) -[#]: via: (https://theartofmachinery.com/2020/10/10/logging_with_named_pipes.html) -[#]: author: (Simon Arneaud https://theartofmachinery.com) - -Robust and Race-free Server Logging using Named Pipes -====== - -If you do any server administration work, you’ll have worked with log files. And if your servers need to be reliable, you’ll know that log files are common source of problems, especially when you need to rotate or ship them (which is practically always). In particular, moving files around causes race conditions. - -Thankfully, there are better ways. With named pipes, you can have a simple and robust logging framework, with no race conditions, and without patching your servers to support some network logging protocol. - -### The problems with rotating log files - -First, let’s talk about the problems. Race conditions are generally a problem with popular file-based logging setups, whether you’re rotating logs into archival storage, or shipping them to a remote log processing stack, or whatever. To keep things concrete, though, let me talk about [logrotate][1], just because it’s a popular tool. - -Say you have a log file at `/var/log/foo`. It gets pretty big, and you want to process the logs periodically and start with a new, empty file. So you (or your distro maintainers) set up logrotate with various rules about when to rotate the file. - -By default, logrotate will rename the file (to something like `/var/log/foo.1`) and create a new `/var/log/foo` to write to. That (mostly) works for software that runs intermittently (such as a package manager that does software updates). But it won’t do any good if the log file is generated by a long-running server. The server only uses the filename when it opens the file; after that it just keeps writing to its open file descriptor. That means it will keep writing to the old file (now named `/var/log/foo.1`), and the new `/var/log/foo` file will stay empty. - -To handle this use-case, logrotate supports another mode: `copytruncate`. In this mode, instead of renaming, logrotate will copy the contents of `/var/log/foo` to an archival file, and then truncate the original file to zero length. As long as the server has the log file open in append mode, it will automatically write new logs to the start of the file, without needing to detect the truncation and do a file seek (the kernel handles that). - -That `copytruncate` mode creates a race condition, though. Any log lines that are written after the copy but before the truncation will get destroyed. Actually, you tend to get the same race condition even with the default move-and-create mode. That’s because there’s not much point just splitting up the logs into multiple files. Most systems are configured to do something like compress the old log file, but ultimately you need to delete the old, uncompressed data, which creates the same race as truncating. (In practice, this race isn’t so likely for occasional log writers, like package managers, and the `delay` flag to logrotate makes it rarer, albeit by making the log handling a bit more complicated.) - -Some servers, like [Nginx][2], support a modification of the default logrotate mode: - - 1. Rename the old file - 2. Create the new file - 3. (New step) notify the server that it needs to reopen its log file. - - - -This works (as long as the logs processor doesn’t delete the old file before the server has finished reopening), but it requires special support from the server, and you’re out of luck with most software. There’s a lot of software out there, and log file handling just isn’t interesting enough to get high on the to-do list. This approach also only works for long-running servers. - -I think this is a good point to stop and take a step back. Having multiple processes juggle log files around on disk without any synchronisation is just an inherently painful way to do things. It causes bugs and makes logging stacks complicated ([here’s just one of many examples][3]). One alternative is to use some network protocol like MQTT or networked syslog, but, realistically, most servers won’t support the one you want. And they shouldn’t have to — log files are a great interface for log writers. - -That’s okay because *nix “everything is a file” lets us easily get a file interface on the writer side, with a streaming interface on the reader side. - -### Named pipes 101 - -Maybe you’ve seen pipes in pipelines like this: - -``` -$ sort user_log.txt | uniq -``` - -The pipe connecting `sort` and `uniq` is a temporary, anonymous communication channel that `sort` writes to and `uniq` reads from. Named pipes are less common, but they’re also communication channels. The only difference is that they persist on the filesystem as if they were files. - -Open up a terminal and `cd` into some temporary working directory. The following creates a named pipe and uses `cat` to open a writer: - -``` -$ mkfifo p -$ # This cat command will sit waiting for input -$ cat > p -``` - -Leave that `cat` command waiting, and open up another terminal in the same directory. In this terminal, start your reader: - -``` -$ # This will sit waiting for data to come over the pipe -$ cat p -``` - -Now as you type things into the writer end, you’ll see them appear in the reader end. `cat` will use line buffering in interactive mode, so data will get transferred every time you start a new line. - -`cat` doesn’t have to know anything about pipes for this to work — the pipe acts like a file as long as you just naïvely read or write to it. But if you check, you’ll see the data isn’t stored anywhere. You can pump gigabytes through a pipe without filling up any disk space. Once the data has been read once, it’s lost. (You can have multiple readers, but only one will receive any buffer-load of data.) - -Another thing that makes pipes useful for communication is their buffering and blocking. You can start writing before any readers open the pipe, and data gets temporarily buffered inside the kernel until a reader comes along. If the reader starts first, its read will block, waiting for data from the writer. (The writer will also block if the pipe buffer gets full.) If you try the two-terminal experiment again with a regular file, you’ll see that the reader `cat` will eagerly read all the data it can and then exit. - -### An annoying problem and a simple solution - -Maybe you’re seeing how named pipes can help with logging: Servers can write to log “files” that are actually named pipes, and a logging stack can read log data directly from the named pipe without letting a single line fall onto the floor. You do whatever you want with the logs, without any racey juggling of files on disk. - -There’s one annoying problem: the writer doesn’t need a reader to start writing, but if a reader opens the pipe and then closes it, the writer gets a `SIGPIPE` (“broken pipe”), which will kill it by default. (Try killing the reader `cat` while typing things into the writer to see what I mean.) Similarly, a reader can read without a writer, but if a writer opens the pipe and then closes it, that will be treated like an end of file. Although the named pipe persists on disk, it isn’t a stable communication channel if log writers and log readers can restart (as they will on a real server). - -There’s a solution that’s a bit weird but very simple. Multiple processes can open the pipe for reading and writing, and the pipe will only close when _all_ readers or _all_ writers close it. All we need for a stable logging pipe is a daemon that holds the named pipe open for both reading and writing, without doing any actual reading or writing. I set this up on my personal server last year, and I wrote [a tiny, zero-config program to act as my pipe-holding daemon][4]. It just opens every file in its current working directory for both reading and writing. I run it from a directory that has symbolic links to every named pipe in my logging stack. The program runs in a loop that ends in a `wait()` for a `SIGHUP`. If I ever update the symlinks in the directory, I give the daemon a `kill -HUP` and it reopens them all. Sure, it could do its own directory watching, but the `SIGHUP` approach is simple and predictable, and the whole thing works reliably. Thanks to the pipe buffer, log writers and log readers can be shut down and restarted independently, any time, without breakage. - -My server uses the [s6 supervision suite][5] to manage daemons, so I have s6-log reading from each logging pipe. The bottom part of the [s6-log documentation page][6] has some good insights into the problems with popular logging systems, and good ideas about better ways to do things. - -### Imagine: a world without log rotation - -Strictly speaking, named pipes aren’t necessary for race-free logs processing. The s6 suite encourages writing logs to some file descriptor (like standard error), and letting the supervision suite make sure those file descriptors point to something useful. However, the named pipe approach adds a few benefits: - - * It doesn’t require any co-ordination between writer and reader - * It integrates nicely with the software we have today - * It gives things meaningful names (rather than `/dev/fd/4`) - - - -I’ve worked with companies that spend about as much on their logging stacks as on their serving infrastructure, and, no, “we do logs processing” isn’t in their business models. Of course, log rotation and log shipping aren’t the only problems to blame, but it feels so wrong that we’ve made logs so complicated. If you work on any logging system, consider if you really need to juggle log files around. You could be helping to make the world a better place. - --------------------------------------------------------------------------------- - -via: https://theartofmachinery.com/2020/10/10/logging_with_named_pipes.html - -作者:[Simon Arneaud][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://theartofmachinery.com -[b]: https://github.com/lujun9972 -[1]: https://github.com/logrotate/logrotate -[2]: https://www.nginx.com/resources/wiki/start/topics/examples/logrotation/ -[3]: https://community.splunk.com/t5/Getting-Data-In/Why-copytruncate-logrotate-does-not-play-well-with-splunk/td-p/196112 -[4]: https://gitlab.com/sarneaud/fileopenerd -[5]: http://www.skarnet.org/software/s6/index.html -[6]: http://www.skarnet.org/software/s6/s6-log.html diff --git a/sources/tech/20201012 Build a Kubernetes Minecraft server with Ansible-s Helm modules.md b/sources/tech/20201012 Build a Kubernetes Minecraft server with Ansible-s Helm modules.md deleted file mode 100644 index 08dd088007..0000000000 --- a/sources/tech/20201012 Build a Kubernetes Minecraft server with Ansible-s Helm modules.md +++ /dev/null @@ -1,172 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Build a Kubernetes Minecraft server with Ansible's Helm modules) -[#]: via: (https://opensource.com/article/20/10/kubernetes-minecraft-ansible) -[#]: author: (Jeff Geerling https://opensource.com/users/geerlingguy) - -Build a Kubernetes Minecraft server with Ansible's Helm modules -====== -Deploy a Minecraft server into a Kubernetes cluster with Ansible's new -collections. -![Ship captain sailing the Kubernetes seas][1] - -One of the best outcomes of Ansible's [move towards content collections][2] is it spreads the thousands of modules in [Ansible][3]'s "core" repository into many more independent repositories. This means movement on issues and modules that had long been delayed (often due to the [sheer volume of issues and pull requests][4] in the repo) can progress more rapidly. - -Obviously, not all modules will get the same love and appreciation as others—that's the way open source works: more popular things flourish, as others may languish a bit—but one bright example of the positive impact has been the [Kubernetes][5] collection's ability to incorporate some long-awaited [Helm][6] modules. - -Thanks especially to the work of [LucasBoisserie][7], three new Helm modules were merged into the Kubernetes collection: - - * helm - * helm_info - * helm_repository - - - -Ansible has long had a [helm module][8], but it was fairly broken for a long time, only worked with older versions of Helm, and was slated for deprecation in Ansible 2.14. That version of the module will still work the same in the regular community distribution of Ansible, as it's now been moved to the [community.general][9] collection. - -But if you want to use these new modules to automate your Helm deployments using the Kubernetes container orchestration system, you can do it with the [community.kubernetes][10] collection. - -### What is Helm? - -Helm says it is "the best way to find, share, and use software built for Kubernetes." - -There are currently dozens of ways to deploy software into Kubernetes and [OpenShift][11] clusters (you can even do it using Ansible natively with the [k8s module][12]), but Helm is often the easiest onramp to Kubernetes deployments, especially when you're starting out on your Kubernetes journey. - -The way Helm works is that people maintain "charts," which are templates describing "how to deploy application XYZ" into Kubernetes. Charts can have "values" that override the default settings for a deployment's chart. - -There are thousands of [charts on Helm Hub][13] you can use to install popular software. If your software is not included, you can build and host your own Helm chart repositories. - -### What is Minecraft? - -For a certain generation (or their parents), this question doesn't need an answer: [Minecraft][14] is the [best-selling video game of all time][15], and it appeals to an extremely wide audience because there are so many different ways you can play it. - -I remember spending an hour here or there during my post-college years tending to a farm that I built in my little virtual Minecraft world. Minecraft can now run on almost any computing device with a screen, and networked play has become very popular. To support this, the Minecraft team maintains a [Minecraft server][16] application you can run to play networked games with your friends. - -### Where does Ansible fit in? - -I like to think of Ansible as the "glue" that holds automation together. I previously wrote about [how Ansible is useful in a cloud-native environment][17], so I won't rehash why I use Ansible to manage my Kubernetes infrastructure. - -In this article, I'll show you how to write a short Ansible playbook to manage the setup of Helm's Minecraft chart in a cluster. In a real-world infrastructure, this playbook would be one small part of a set of plays that: - - * Build or configure a Kubernetes cluster - * Deploy monitoring tools into the cluster - * Deploy applications into the cluster - - - -Before you can write the playbook, you have to install Ansible's official [Kubernetes collection][10]. You can do this either by requiring it in a **requirements.yml** file (which could be used by Ansible Tower to install the collection automatically) or by manually installing it: - - -``` -`ansible-galaxy collection install community.kubernetes` -``` - -Once you have the collection, it's time to write the playbook. To make it easy for you to view the code or download the file, I've posted my **[minecraft.yml][18] **playbook as a Gist on GitHub. - -The playbook uses many of the Kubernetes collection's modules: - - 1. The `k8s` module creates a namespace, `minecraft`. - 2. The `helm_repository` module adds the `itzg` Helm repository, which contains the Minecraft Helm chart. - 3. The `helm` module deploys the chart and creates the Minecraft server instance. - 4. The `k8s_info` module retrieves the NodePort where Minecraft is running so that you can connect to it from Minecraft. - - - -The playbook assumes you have a running Kubernetes or OpenShift cluster and a kubeconfig file that points to that cluster already. If not, create a Minikube cluster on your workstation: - - 1. Make sure you have [Minikube][19] installed. - 2. Run `minikube start`, and wait for the cluster to be created. - - - -Make sure you have [Ansible][20] and [Helm][21] installed, then run the playbook: - - -``` -`ansible-playbook minecraft.yml` -``` - -After a few minutes, the Minecraft server will generate a spawn area and be ready for connections! The playbook should provide the Minecraft NodePort at the end of its output (e.g., Minecraft NodePort: 32393). - -Get the IP address of your Minikube cluster with `minikube ip`, add the NodePort to it (in my case, 192.168.64.19:32393), then open up Minecraft and connect to it: - - 1. Click **Multiplayer**. - 2. Click **Direct Connection**. - 3. Enter the server address (the Minikube IP and Minecraft NodePort). - 4. Click **Join Server**. - - - -And voila! You should be able to play around in the little virtual Minecraft world that's running on your very own Kubernetes cluster. - -![Minecraft gameplay][22] - -(Jeff Geerling, [CC BY-SA 4.0][23]) - -View the server logs with: - - -``` -`kubectl logs -f -n minecraft -l app=minecraft-minecraft;` -``` - -In the logs, you can see that I was successful in finding many ways to die inside my little Minecraft world! - -![Minecraft server logs][24] - -(Jeff Geerling, [CC BY-SA 4.0][23]) - -### Take a step beyond - -There are dozens of ways to deploy applications like a Minecraft server into a Kubernetes cluster. Luckily for us, Ansible already supports most of those options through its Kubernetes collection! And if you want to take a step beyond simple deployments and chart updates, you can use Ansible to build a [Kubernetes operator][25] with the Operator SDK—in fact, someone already made a [community operator][26] built with Ansible that runs a Minecraft server! - -I was inspired to write this after using Ansible to manage a seven-node Kubernetes cluster built with Raspberry Pis. You can learn more about that in the [Turing Pi Cluster][27] GitHub repository. - -* * * - -If you want to learn more about Ansible, make sure to register for [AnsibleFest][28], a virtual experience on October 13-14. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/10/kubernetes-minecraft-ansible - -作者:[Jeff Geerling][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/geerlingguy -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/ship_captain_devops_kubernetes_steer.png?itok=LAHfIpek (Ship captain sailing the Kubernetes seas) -[2]: https://github.com/ansible-collections/overview -[3]: https://www.ansible.com/ -[4]: https://emeraldreverie.org/2020/03/02/collections-the-backlog-view/ -[5]: https://kubernetes.io/ -[6]: https://helm.sh/ -[7]: https://github.com/LucasBoisserie -[8]: https://docs.ansible.com/ansible/2.9/modules/helm_module.html -[9]: https://github.com/ansible-collections/community.general/blob/master/plugins/modules/cloud/misc/helm.py -[10]: https://github.com/ansible-collections/community.kubernetes -[11]: https://www.openshift.com/ -[12]: https://docs.ansible.com/ansible/latest/collections/community/kubernetes/k8s_module.html#ansible-collections-community-kubernetes-k8s-module -[13]: https://hub.helm.sh/ -[14]: https://www.minecraft.net/ -[15]: https://en.wikipedia.org/wiki/List_of_best-selling_video_games#List -[16]: https://www.minecraft.net/en-us/download/server/ -[17]: https://www.ansible.com/blog/how-useful-is-ansible-in-a-cloud-native-kubernetes-environment -[18]: https://gist.github.com/geerlingguy/2f4b0c06b4b696c8983b82dda655adf3 -[19]: https://kubernetes.io/docs/tasks/tools/install-minikube/ -[20]: https://docs.ansible.com/ansible/latest/installation_guide/intro_installation.html -[21]: https://helm.sh/docs/intro/install/ -[22]: https://opensource.com/sites/default/files/uploads/minecraft.png (Minecraft gameplay) -[23]: https://creativecommons.org/licenses/by-sa/4.0/ -[24]: https://opensource.com/sites/default/files/uploads/serverlogs.png (Minecraft server logs) -[25]: https://www.redhat.com/en/topics/containers/what-is-a-kubernetes-operator -[26]: https://github.com/fabianvf/game-server-operator -[27]: https://github.com/geerlingguy/turing-pi-cluster -[28]: https://www.ansible.com/ansiblefest diff --git a/sources/tech/20201012 Create an Ansible module for integrating your Google Calendar.md b/sources/tech/20201012 Create an Ansible module for integrating your Google Calendar.md deleted file mode 100644 index 3f7585f5be..0000000000 --- a/sources/tech/20201012 Create an Ansible module for integrating your Google Calendar.md +++ /dev/null @@ -1,186 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Create an Ansible module for integrating your Google Calendar) -[#]: via: (https://opensource.com/article/20/10/ansible-module-go) -[#]: author: (Nicolas Leiva https://opensource.com/users/nicolas-leiva) - -Create an Ansible module for integrating your Google Calendar -====== -Learn how to write an Ansible module in Go to integrate Google Calendar -into your automation workflow. -![Business woman on laptop sitting in front of window][1] - -In a [previous article][2], I explored how [Ansible][3] can integrate with Google Calendar for change management, but I didn't get into the details of the [Ansible module][4] that was built for this purpose. In this article, I will cover the nuts and bolts of it. - -While most [Ansible modules][5]** **are written in [Python][6] (see [this example][7]), that's not the only option you have. You can use other programming languages if you prefer. And if you like [Go][8], this post is for you! - -![Gopher illustration][9] - -([Maria Letta's Free Gophers Pack][10], [Free Gophers License v1.0][11], modified with permission) - -If you are new to Go, check out these [pointers to get started][12]. - -## Ansible and Go - -There are at least four different ways that you can run a Go program from Ansible: - - 1. Install Go and run your Go code with the `go run` command from Ansible. - 2. Cross-compile your Go code for different platforms before execution. Then call the proper binary from Ansible, based on the facts you collect from the host. - 3. Run your Go code or compiled binary from a container with the `containers.podman` [collection][13]. Something along the lines of: [code] - name: Run Go container -  podman_container: -    name: go_test_container -    image: golang -    command: go version -    rm: true -    log_options: "path={{ log_file }}" -``` - 4. Create an [RPM][14] package of your Go code with something like [NFPM][15], and install it in the system of the target host. You can then call it with the Ansible modules [shell][16] or [command][17]. - - - -Running an RPM package or container is not Go-specific (cases 3 and 4), so I will focus on the first two options. - -## Google Calendar API - -You will need to interact with the [Google Calendar API][18], which provides code examples for different programming languages. The one for Go will be the base for your Ansible module. - -The tricky part is [enabling the Calendar API][19] and downloading the credentials you generate in the [Google API Console][20] (`Credentials` > `+ CREATE CREDENTIALS` > `OAuth client ID` > `Desktop App`). - -![Downloading credentials from Google API Console][21] - -(Nicolas Leiva, [CC BY-SA 4.0][22]) - -The arrow shows where to download your OAuth 2.0 client credentials (JSON file) once you create them in [API Credentials][23]. - -## Calling the module from Ansible - -The `calendar` module takes the `time` to validate as an argument. The example below provides the current time. You can typically get this from [Ansible facts][24] (`ansible_date_time`). The JSON output of the module is registered in a variable named `output` to be used in a subsequent task: -``` - - -\- name: Check if timeslot is taken -  calendar: -    time: "{{ ansible_date_time.iso8601 }}" -  register: output - -``` -You might wonder where the `calendar` module code lives and how Ansible executes it. Please bear with me for a moment; I'll get to this after I cover other pieces of the puzzle. - -## Employ the time logic - -With the Calendar API nuances out of the way, you can proceed to interact with the API and build a Go function to capture the module logic. The `time` is taken from the input arguments—in the playbook above—as the initial time (`min`) of the time window to validate (I arbitrarily chose a one-hour duration): -``` - - -func isItBusy(min string) (bool, error) { -        ... -        // max -> min.Add(1 * time.Hour) -        max, err := maxTime(min) -        // ... -        srv, err := calendar.New(client) -        // ... -        freebusyRequest := calendar.FreeBusyRequest{ -                TimeMin: min, -                TimeMax: max, -                Items:   []*calendar.FreeBusyRequestItem{&cal}, -        } -        // ... -        freebusyRequestResponse, err := freebusyRequestCall.Do() -        // ... -        if len(freebusyRequestResponse.Calendars[name].Busy) == 0 { -                return false, nil -        } -        return true, nil -} - -``` -It [sends a `FreeBusyRequest`][25] to Google Calendar with the time window's initial and finish time (`min` and `max`). It also creates a calendar [client][26] (`srv`) to authenticate the account correctly using the JSON file with the OAuth 2.0 client credentials. In return, you get a list of events during this time window. - -If you get zero events, the function returns `busy=false`. However, if there is at least one event during this time window, it means `busy=true`. You can check out the [full code][27] in my GitHub repository. - -## Process the input and creating a response - -Now, how does the Go code read the inputs arguments from Ansible and, in turn, generate a response that Ansible can process? The answer to this depends on whether you are running the [Go CLI][28] (command-line interface) or just executing a pre-compiled Go program binary (i.e., options 1 and 2 above). - -Both options have their pros and cons. If you use the Go CLI, you can pass the arguments the way you prefer. However, to make it consistent with how it works for binaries you run from Ansible, both alternatives will read a JSON file in the examples presented here. - -### Reading the arguments - -As shown in the Go code snippet below, an input file is processed, and Ansible provides a path to it when it calls a binary. - -The content of the file is unmarshaled into an instance (`moduleArg`) of a previously defined struct (`ModuleArgs`). This is how you tell the Go code which data you expect to receive. This method enables you to gain access to the `time` specified in the playbook via `moduleArg.time`, which is then passed to the time logic function (`isItBusy`) for processing: -``` - - -// ModuleArgs are the module inputs -type ModuleArgs struct { -        Time string -} - -func main() { -        ... -        argsFile := os.Args[1] -        text, err := ioutil.ReadFile(argsFile) -        ... -        var moduleArgs ModuleArgs -        err = json.Unmarshal(text, &moduleArgs) -        ... -        busy, err := isItBusy(moduleArg.time) -        ... -} - -``` -### Generating a response - -The values to return are assigned to an instance of a `Response` object. Ansible will need this response includes a couple of boolean flags (`Changed` and `Failed`). You can add any other field you need; in this case, a `Busy` boolean value is carried to signal the response of the time logic function. - -The response is marshaled into a message that you print out and Ansible can read: -``` - - -// Response are the values returned from the module -type Response struct { -        Msg     string `json:"msg"` -        Busy    bool   `json:"busy"` -        Changed bool   `json:"changed"` -        Failed  bool   `json:"failed"` -} - -func returnResponse(r Response) { -  ... -        response, err = json.Marshal(r) -        ... -        fmt.Println(string(response)) -        ... -} - -``` -You can check out the [full code][29] on GitHub. - -## Execute a binary or Go code on the fly? - -One of the cool things about Go is that you can cross-compile a Go program to run on different target operating systems and architectures. The binary files you compile can be executed in the target host without installing Go or any dependency. - -This flexibility plays nicely with Ansible, which provides the target host details (`ansible_system` and `ansible_architecture`) via Ansible facts. In this example, the target architecture is fixed when compiling (`x86_64`), but binaries for macOS, Linux, and Windows are generated (via `make compile`). This produces the three files that are included in the [`library` folder][30] of the `go_role` role with the form of: `calendar_$system`: -``` - - -⇨  tree roles/go_role/ -roles/go_role/ -├── library -│   ├── calendar_darwin -│   ├── calendar_linux -│   ├── calendar_windows -│   └── go_run -└── tasks -    ├── Darwin.yml -    ├── Go.yml -    ├── Linux.yml -    ├── main.yml -    └── Win32NT.yml - -``` -The [`go_role` role][31] that packages the `calendar` \ No newline at end of file diff --git a/sources/tech/20201013 What measured boot and trusted boot means for Linux.md b/sources/tech/20201013 What measured boot and trusted boot means for Linux.md deleted file mode 100644 index a50e57bb25..0000000000 --- a/sources/tech/20201013 What measured boot and trusted boot means for Linux.md +++ /dev/null @@ -1,70 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (What measured boot and trusted boot means for Linux) -[#]: via: (https://opensource.com/article/20/10/measured-trusted-boot) -[#]: author: (Mike Bursell https://opensource.com/users/mikecamel) - -What measured boot and trusted boot means for Linux -====== -When a trusted boot process is performed, the process not only measures -each value but also performs a check against a known (and expected!) -good value at the same time. -![Brain on a computer screen][1] - -Sometimes I'm looking around for a subject to write about, and realise that there's one that I assume that I've covered, but, on searching, discover that I haven't. One of those topics is measured boot and trusted boot—sometimes misleadingly referred to as "secure boot." There are specific procedures that use these terms with capital letters (e.g., Secure Boot), which I'm going to try to avoid discussing in this article. I'm more interested in the generic processes—and a major potential downfall—than in trying to go into the ins and outs of specifics. What follows is a (heavily edited) excerpt from my forthcoming book on trust in computing and the cloud for [Wiley][2]. - -In order to understand what measured boot and trusted boot aim to achieve, look at the Linux virtualisation stack: the components you run if you want to use virtual machines (VMs) on a Linux machine. This description is arguably over-simplified, but (as I noted above) I'm not interested in the specifics but in what I'm trying to achieve. I'll concentrate on the bottom four layers (at a rather simple level of abstraction): CPU/management engine; BIOS/EFI; firmware; and hypervisor, but I'll also consider a layer _just_ above the CPU/management engine, which interposes a Trusted Platform Module (TPM) and some instructions for how to perform one of the two processes (_measured boot_ and _trusted boot_). Once the system starts to boot, the TPM is triggered and starts its work. Alternative roots of trust, such as hardware security modules (HSMs), might also be used, but I will use TPMs, the most common example in this context, in my example. - -In both cases (trusted boot and the measured boot), the basic flow starts with the TPM performing a measurement of the BIOS/EFI layer. This measurement involves checking the binary instructions to be carried out by this layer and creating a cryptographic hash of the binary image. The hash that's produced is then stored in one of several Platform Configuration Register (PCR) "slots" in the TPM. These can be thought of as pieces of memory that can be read later on - either by the TPM for its purposes or by entities external to the TPM - but that cannot be changed once they have been written. These pieces of memory are integrity protected from the time of their initially being written. This provides assurances that once a value is written to a PCR by the TPM, it can be considered constant for the lifetime of the system until power off or reboot. - -After measuring the BIOS/EFI layer, the next layer (firmware) is measured. In this case, the resulting hash is combined with the previous hash (which was stored in the PCR slot) and then also stored in a PCR slot. The process continues until all the layers involved in the process have been measured and the hashes' results have been stored. There are (sometimes quite complex) processes to set up the original TPM values (I've skipped some of the more low-level steps in the process for simplicity) and to allow (hopefully authorised) changes to the layers for upgrading or security patching, for example. This "measured boot" process allows for entities to query the TPM after the process has completed and to check whether the values in the PCR slots correspond to the expected values, pre-calculated with "known good" versions of the various layers—that is, pre-checked versions whose provenance and integrity have already been established. - -Various protocols exist to allow parties _external_ to the system to check the values (e.g., via a network connection) that the TPM attests to be correct: the process of receiving and checking such values from an external system is known as "remote attestation." - -This process—measured boot—allows you to find out whether the underpinnings of your system—the lowest layers—are what you think they are. But what if they're not? Measured boot (unsurprisingly, given the name) measures but doesn't perform any other actions. - -The alternative, "trusted boot," goes a step further. When a trusted boot process is performed, the process not only measures each value but also performs a check against a known (and expected!) good value at the same time. If the check fails, then the process will halt, and the booting of the system will fail. This may sound like a rather extreme approach to take on a system, but sometimes it is absolutely the right one. Where the system under consideration may have been compromised—which is one likely inference you can make from the failure of a trusted boot process—it is better for it to not be available at all than to be running based on flawed expectations. - -This is all very well if I am the owner of the system being measured, have checked all of the various components being measured (and the measurements), and am happy that what's being booted is what I want.[1][3] But what if I'm using a system on the cloud, for instance, or any system owned and managed by someone else? In that case, I'm trusting the cloud provider (or owner/manager) with two things: - - 1. Doing all the measuring correctly and reporting correct results to me - 2. Building something I should trust in the first place - - - -This is the problem with the nomenclature "trusted boot" and, even worse, "secure boot." Both imply that an absolute, objective property of a system has been established—it is "trusted" or "secure"—when this is clearly not the case. Obviously, it would be unfair to expect the designers of such processes to name them after the failure states—"untrusted boot" or "insecure boot"—but, unless I can be very certain that I trust the owner of the system to do step two entirely correctly (and in my best interests as the user of the system, rather than theirs as the owner), then I can make no stronger assertions. - -There is an enormous temptation to take a system that has gone through a trusted boot process and label it a "trusted system" when _the very best_ assertion you can make is that the particular layers measured in the measured and/or trusted boot process have been asserted to be those the process expects to be present. Such a process says nothing at all about the fitness of the layers to provide assurances of behaviour nor about the correctness (or fitness to provide assurances of behaviour) of any subsequent layers on top of those. - -It's important to note that designers of TPMs are quite clear what is being asserted and that assertions about trust should be made carefully and sparingly. Unluckily, however, the complexities of systems, the general low level of understanding of trust, and the complexities of context and transitive trust make it very easy for systems designers and implementors to do the wrong thing and assume that any system that has successfully performed a trusted boot process can be considered "trusted." It is also extremely important to remember that TPMs, as hardware roots of trust, offer one of the best mechanisms available for establishing a chain of trust in systems that you may be designing or implementing, and I plan to write an article about them soon. - -* * * - - 1. Although this turns out to be _much_ harder to do than you might expect! - - - -* * * - -_This article was originally published on [Alice, Eve, and Bob][4] and is reprinted with the author's permission._ - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/10/measured-trusted-boot - -作者:[Mike Bursell][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/mikecamel -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/brain_computer_solve_fix_tool.png?itok=okq8joti (Brain on a computer screen) -[2]: https://wiley.com/ -[3]: tmp.HkXCfJwlpF#1 -[4]: https://aliceevebob.com/2020/09/08/measured-and-trusted-boot/ diff --git a/sources/tech/20201014 Web of Trust, Part 1- Concept.md b/sources/tech/20201014 Web of Trust, Part 1- Concept.md deleted file mode 100644 index b9eedecb3e..0000000000 --- a/sources/tech/20201014 Web of Trust, Part 1- Concept.md +++ /dev/null @@ -1,86 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Web of Trust, Part 1: Concept) -[#]: via: (https://fedoramagazine.org/web-of-trust-part-1-concept/) -[#]: author: (Kevin "Eonfge" Degeling https://fedoramagazine.org/author/eonfge/) - -Web of Trust, Part 1: Concept -====== - -![][1] - -Every day we rely on technologies who nobody can fully understand. Since well before the industrial revolution, complex and challenging tasks required an approach that broke out the different parts into smaller scale tasks. Each resulting in specialized knowledge used in some parts of our lives, leaving other parts to trust in skills that others had learned. This shared knowledge approach also applies to software. Even the most avid readers of this magazine, will likely not compile and validate every piece of code they run. This is simply because the world of computers is itself also too big for one person to grasp. - -Still, even though it is nearly impossible to understand everything that happens within your PC when you are using it, that does not leave you blind and unprotected. FLOSS software shares trust, giving protection to all users, even if individual users can’t grasp all parts in the system. This multi-part article will discuss how this ‘Web of Trust’ works and how you can get involved. - -But first we’ll have to take a step back and discuss the basic concepts, before we can delve into the details and the web. Also, a note before we start, security is not just about viruses and malware. Security also includes your privacy, your economic stability and your technological independence. - -### One-Way System - -By their design, computers can only work and function in the most rudimentary ways of logic: _True_ or _false_. _And_ or _Or._ This (boolean logic) is not readily accessible to humans, therefore we must do something special. We write applications in a code that we can (reasonably) comprehend (human readable). Once completed, we turn this human readable code into a code that the computer can comprehend (machine code). - -The step of conversion is called compilation and/or building, and it’s a one-way process. Compiled code (machine code) is not really understandable by humans, and it takes special tools to study in detail. You can understand small chunks, but on the whole, an entire application becomes a black box. - -This subtle difference shifts power. Power, in this case being the influence of one person over another person. The person who has written the human-readable version of the application and then releases it as compiled code to use by others, knows all about what the code does, while the end user knows a very limited scope. When using (software) in compiled form, it is impossible to know for certain what an application is intended to do, unless the original human readable code can be viewed. - -### **The Nature of Power** - -Spearheaded by Richard Stallman, this shift of power became a point of concern. This discussion started in the 1980s, for this was the time that computers left the world of academia and research, and entered the world of commerce and consumers. Suddenly, that power became a source of control and exploitation. - -One way to combat this imbalance of power, was with the concept of FLOSS software. FLOSS Software is built on [4-Freedoms][2], which gives you a wide array of other ‘affiliated’ rights and guarantees. In essence, FLOSS software uses copyright-licensing as a form of moral contract, that forces software developers not to leverage the one-way power against their users. The principle way of doing this, is with the the GNU General Public Licenses, which Richard Stallman created and has since been promoting. - -One of those guarantees, is that you can see the code that should be running on your device. When you get a device using FLOSS software, then the manufacturer should provide you the code that the device is using, as well as all instructions that you need to compile that code yourself. Then you can replace the code on the device with the version you can compile yourself. Even better, if you compare the version you have with the version on the device, you can see if the device manufacturer tried to cheat you or other customers. - -This is where the web of Trust comes back into the picture. The Web of Trust implies that even if the vast majority of people can’t validate the workings of a device, that others can do so on their behalf. Journalists, security analysts and hobbyists, can do the work that others might be unable to do. And if they find something, they have the power to share their findings. - -### Security by B**lind** **Trust** - -This is of course, if the application and all components underneath it, are FLOSS. Proprietary software, or even software which is merely Open Source, has compiled versions that nobody can recreate and validate. Thus, you can never truly know if that software is secure. It might have a backdoor, it might sell your personal data, or it might be pushing a closed ecosystem to create a vendor-lock. With closed-source software, your security is as good as the company making the software is trustworthy. - -For companies and developers, this actually creates another snare. While you might still care about your users and their security, you’re a liability: If a criminal can get to your official builds or supply-chain, then there is no way for anybody to discover that afterwards. An increasing number of attacks do not target users directly, but instead try to get in, by exploiting the trust the companies/developers have carefully grown. - -You should also not underestimate pressure from outside: Governments can ask you to ignore a vulnerability, or they might even demand cooperation. Investment firms or shareholders, may also insist that you create a vendor-lock for future use. The blind trust that you demand of your users, can be used against you. - -### Security by a Web of Trust - -If you are a user, FLOSS software is good because others can warn you when they find suspicious elements. You can use any FLOSS device with minimal economic risk, and there are many FLOSS developers who care for your privacy. Even if the details are beyond you, there are rules in place to facilitate trust. - -If you are a tinkerer, FLOSS is good because with a little extra work, you can check the promises of others. You can warn people when something goes wrong, and you can validate the warnings of others. You’re also able to check individual parts in a larger picture. The libraries used by FLOSS applications, are also open for review: It’s “Trust all the way down”. - -For companies and developers, FLOSS is also a great reassurance that your trust can’t be easily subverted. If malicious actors wish to attack your users, then any irregularity can quickly be spotted. Last but not least, since you also stand to defend your customers economic well-being and privacy, you can use that as an important selling point to customers who care about their own security. - -### Fedora’s case - -Fedora embraces the concept of FLOSS and it stands strong to defend it. There are comprehensive [legal guidelines][3], and Fedora’s principles are directly referencing the 4-Freedoms: [Freedom, Friends, Features, and First][4] - -![][5] - -To this end, entire systems have been set up to facilitate this kind of security. Fedora works completely in the open, and any user can check the official servers. [Koji][6] is the name of the Fedora Buildsystem, and you can see every application and it’s build logs there. For added security, there is also [Bohdi][7], which orchestrates the deployment of an application. Multiple people must approve it, before the application can become available. - -This creates the Web of Trust on which you can rely. Every package in the repository goes through the same process, and at every point somebody can intervene. There are also escalation systems in place to report issues, so that issues can quickly be tackled when they occur. Individual contributors also know that they can be reviewed at every time, which itself is already enough of a precaution to dissuade mischievous thoughts. - -You don’t have to trust Fedora (implicitly), you can get something better; trust in users like you. - --------------------------------------------------------------------------------- - -via: https://fedoramagazine.org/web-of-trust-part-1-concept/ - -作者:[Kevin "Eonfge" Degeling][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://fedoramagazine.org/author/eonfge/ -[b]: https://github.com/lujun9972 -[1]: https://fedoramagazine.org/wp-content/uploads/2020/09/weboftrust1-816x345.jpg -[2]: https://fsfe.org/freesoftware/freesoftware.en.html -[3]: https://fedoraproject.org/wiki/Licensing:Main?rd=Licensing -[4]: https://docs.fedoraproject.org/en-US/project/ -[5]: https://fedoramagazine.org/wp-content/uploads/2020/09/foundations_expand_1_freedom.png -[6]: https://koji.fedoraproject.org/koji/index -[7]: https://bodhi.fedoraproject.org/ diff --git a/sources/tech/20201019 Web of Trust, Part 2- Tutorial.md b/sources/tech/20201019 Web of Trust, Part 2- Tutorial.md deleted file mode 100644 index b5e17fc7cc..0000000000 --- a/sources/tech/20201019 Web of Trust, Part 2- Tutorial.md +++ /dev/null @@ -1,198 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Web of Trust, Part 2: Tutorial) -[#]: via: (https://fedoramagazine.org/web-of-trust-part-2-tutorial/) -[#]: author: (Kevin "Eonfge" Degeling https://fedoramagazine.org/author/eonfge/) - -Web of Trust, Part 2: Tutorial -====== - -![][1] - -["The spider web"][2] by [bluesbby][3] is licensed under [CC BY 2.0][4][][4] - -The [previous article][5] looked at how the Web of Trust works in concept, and how the Web of Trust is implemented at Fedora. In this article, you’ll learn how to do it yourself. The power of this system lies in everybody being able to validate the actions of others—if you know how to validate somebody’s work, you’re contributing to the strength of our shared security. - -### Choosing a project - -[Remmina][6] is a remote desktop client written in GTK+. It aims to be useful for system administrators and travelers who need to work with lots of remote computers in front of either large monitors or tiny netbooks. In the current age, where many people must work remotely or at least manage remote servers, the security of a program like Remmina is critical. Even if you do not use it yourself, you can contribute to the Web of Trust by checking it for others. - -The question is: how do you know that a given version of Remmina is good, and that the original developer—or distribution server—has not been compromised? - -For this tutorial, you’ll use [Flatpak][7] and the [Flathub][8] repository. Flatpak is intentionally well-suited for making verifiable rebuilds, which is one of the tenets of the Web of Trust. It’s easier to work with since it doesn’t require users to download independent development packages. Flatpak also uses techniques to prevent in‑flight tampering, using hashes to validate its read‑only state. As far as the Web of Trust is concerned, Flatpak is the future. - -For this guide, you use Remmina, but this guide generally applies to every application you use. It’s also not exclusive to Flatpak, and the general steps also apply to Fedora’s repositories. In fact, if you’re currently reading this article on Debian or Arch, you can still follow the instructions. If you want to follow along using traditional RPM repositories, make sure to check out [this article][9]. - -### Installing and checking - -To install Remmina, use the Software Center or run the following from a terminal: - -``` -flatpak install flathub org.remmina.Remmina -y -``` - -After installation, you’ll find the files in: - -``` -/var/lib/flatpak/app/org.remmina.Remmina/current/active/files/ -``` - -Open a terminal here and find the following directories using _ls -la_: - -``` -total 44 -drwxr-xr-x. 2 root root 4096 Jan 1 1970 bin -drwxr-xr-x. 3 root root 4096 Jan 1 1970 etc -drwxr-xr-x. 8 root root 4096 Jan 1 1970 lib -drwxr-xr-x. 2 root root 4096 Jan 1 1970 libexec --rw-r--r--. 2 root root 18644 Aug 25 14:37 manifest.json -drwxr-xr-x. 2 root root 4096 Jan 1 1970 sbin -drwxr-xr-x. 15 root root 4096 Jan 1 1970 share -``` - -#### Getting the hashes - -In the _bin_ directory you will find the main binaries of the application, and in _lib_ you find all dependencies that Remmina uses. Now calculate a hash for _./bin/remmina_: - -``` -sha256sum ./bin/* -``` - -This will give you a list of numbers: checksums. Copy them to a temporary file, as this is the current version of Remmina that Flathub is distributing. These numbers have something special: only an exact copy of Remmina can give you the same numbers. Any change in the code—no matter how minor—will produce different numbers. - -Like Fedora’s Koji and Bodhi build and update services, Flathub has all its build servers in plain view. In the case of Flathub, look at [Buildbot][10] to see who is responsible for the official binaries of a package. Here you will find all of the logs, including all the failed builds and their paper trail. - -![][11] - -#### Getting the source - -The main Flathub project is hosted on GitHub, where the exact compile instructions (“manifest” in Flatpak terms) are visible for all to see. Open a new terminal in your Home folder. Clone the instructions, and possible submodules, using one command: - -``` -git clone --recurse-submodules https://github.com/flathub/org.remmina.Remmina -``` - -#### Developer tools - -Start off by installing the Flatpak Builder: - -``` -sudo dnf install flatpak-builder -``` - -After that, you’ll need to get the right SDK to rebuild Remmina. In the manifest, you’ll find the current SDK is. - -``` -"runtime": "org.gnome.Platform", - "runtime-version": "3.38", - "sdk": "org.gnome.Sdk", - "command": "remmina", -``` - -This indicates that you need the GNOME SDK, which you can install with: - -``` -flatpak install org.gnome.Sdk//3.38 -``` - -This provides the latest versions of the Free Desktop and GNOME SDK. There are also additional SDK’s for additional options, but those are beyond the scope of this tutorial. - -#### Generating your **own hashes** - -Now that everything is set up, compile your version of Remmina by running: - -``` -flatpak-builder build-dir org.remmina.Remmina.json --force-clean -``` - -After this, your terminal will print a lot of text, your fans will start spinning, and you’re compiling Remmina. If things do not go so smoothly, refer to the [Flatpak Documentation][12]; troubleshooting is beyond the scope of this tutorial. - -Once complete, you should have the directory ._/build-dir/files/_, which should contain the same layout as above. Now the moment of truth: it’s time to generate the hashes for the built project: - -``` -sha256sum ./bin/* -``` - -![][13] - -You should get exactly the same numbers. This proves that the version on Flathub is indeed the version that the Remmina developers and maintainers intended for you to run. This is great, because this shows that Flathub has not been compromised. The web of trust is strong, and you just made it a bit better. - -### Going deeper - -But what about the _./lib/_ directory? And what version of Remmina did you actually compile? This is where the Web of Trust starts to branch. First, you can also double-check the hashes of the _./lib/_ directory. Repeat the _sha256sum_ command using a different directory. - -But what version of Remmina did you compile? Well, that’s in the Manifest. In the text file you’ll find (usually at the bottom) the git repository and branch that you just used. At the time of this writing, that is: - -``` -"type": "git", -"url": "https://gitlab.com/Remmina/Remmina.git", -"tag": "v1.4.8", -"commit": "7ebc497062de66881b71bbe7f54dabfda0129ac2" -``` - -Here, you can decide to look at the Remmina code itself: - -``` -git clone --recurse-submodules https://gitlab.com/Remmina/Remmina.git -cd ./Remmina -git checkout tags/v1.4.8 -``` - -The last two commands are important, since they ensure that you are looking at the right version of Remmina. Make sure you use the corresponding tag of the Manifest file. you can see everything that you just built. - -### What if…? - -The question on some minds is: what if the hashes don’t match? Quoting a famous novel: “Don’t Panic.” There are multiple legitimate reasons as to why the hashes do not match. - -It might be that you are not looking at the same version. If you followed this guide to a T, it should give matching results, but minor errors will cause vastly different results. Repeat the process, and ask for help if you’re unsure if you’re making errors. Perhaps Remmina is in the process of updating. - -But if that still doesn’t justify the mismatch in hashes, go to the [maintainers of Remmina][14] on Flathub and open an issue. Assume good intentions, but you might be onto something that isn’t totally right. - -The most obvious upstream issue is that Remmina does not properly support reproducible builds yet. The code of Remmina needs to be written in such a way that repeating the same action twice, gives the same result. For developers, there is an [entire guide][15] on how to do that. If this is the case, there should be an issue on the upstream bug-tracker, and if it is not there, make sure that you create one by explaining your steps and the impact. - -If all else fails, and you’ve informed upstream about the discrepancies and they to don’t know what is happening, then it’s time to send an email to the Administrators of Flathub and the developer in question. - -### Conclusion - -At this point, you’ve gone through the entire process of validating a single piece of a bigger picture. Here, you can branch off in different directions: - - * Try another Flatpak application you like or use regularly - * Try the RPM version of Remmina - * Do a deep dive into the C code of Remmina - * Relax for a day, knowing that the Web of Trust is a collective effort - - - -In the grand scheme of things, we can all carry a small part of responsibility in the Web of Trust. By taking free/libre open source software (FLOSS) concepts and applying them in the real world, you can protect yourself and others. Last but not least, by understanding how the Web of Trust works you can see how FLOSS software provides unique protections. - --------------------------------------------------------------------------------- - -via: https://fedoramagazine.org/web-of-trust-part-2-tutorial/ - -作者:[Kevin "Eonfge" Degeling][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://fedoramagazine.org/author/eonfge/ -[b]: https://github.com/lujun9972 -[1]: https://fedoramagazine.org/wp-content/uploads/2020/09/weboftrust2-816x345.jpg -[2]: https://www.flickr.com/photos/17367470@N05/21329974875 -[3]: https://www.flickr.com/photos/17367470@N05 -[4]: https://creativecommons.org/licenses/by/2.0/?ref=ccsearch&atype=html -[5]: https://fedoramagazine.org/web-of-trust-part-1-concept/ -[6]: https://remmina.org/ -[7]: https://flatpak.org/ -[8]: https://flathub.org/home -[9]: https://fedoramagazine.org/how-rpm-packages-are-made-the-source-rpm/ -[10]: https://flathub.org/builds/#/ -[11]: https://fedoramagazine.org/wp-content/uploads/2020/09/Screenshot_2020-09-24-Flathub-builds-1024x434.png -[12]: https://docs.flatpak.org/en/latest/building.html -[13]: https://fedoramagazine.org/wp-content/uploads/2020/09/Screenshot-from-2020-09-22-21-49-47.png -[14]: https://github.com/flathub/org.remmina.Remmina -[15]: https://reproducible-builds.org/ diff --git a/sources/tech/20201021 Incremental backup with Butterfly Backup.md b/sources/tech/20201021 Incremental backup with Butterfly Backup.md deleted file mode 100644 index 5c2b99d950..0000000000 --- a/sources/tech/20201021 Incremental backup with Butterfly Backup.md +++ /dev/null @@ -1,290 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Incremental backup with Butterfly Backup) -[#]: via: (https://fedoramagazine.org/butterfly-backup/) -[#]: author: (Matteo Guadrini https://fedoramagazine.org/author/matteoguadrini/) - -Incremental backup with Butterfly Backup -====== - -![][1] - -### Introduction - -This article explains how to make incremental or differential backups, with a catalog available to restore (or export) at the point you want, with [Butterfly Backup][2]. - -#### Requirements - -Butterfly Backup is a simple wrapper of rsync written in python; the first requirement is **[python3.3][3]** or higher (plus module [cryptography][4] for _init_ action). Other requirements are **[openssh][5]** and **[rsync][6]** (version 2.5 or higher). Ok, let’s go! - -[Editors note: rsync version 3.2.3 is already installed on Fedora 33 systems] - -``` -$ sudo dnf install python3 openssh rsync git -$ sudo pip3 install cryptography -``` - -### Installation - -After that, installing Butterfly Backup is very simple by using the following commands to clone the repository locally, and set up Butterfly Backup for use: - -``` -$ git clone https://github.com/MatteoGuadrini/Butterfly-Backup.git -$ cd Butterfly-Backup -$ sudo python3 setup.py -$ bb --help -$ man bb -``` - -To upgrade, you would use the same commands too. - -### Example - -Butterfly Backup is a server to client tool and is installed on a server (or workstation). The restore process restores the files into the specified client. This process shares some of the options available to the backup process. - -Backups are organized accord to precise catalog; this is an example: - -``` -$ tree destination/of/backup -. -├── destination -│ ├── hostname or ip of the PC under backup -│ │ ├── timestamp folder -│ │ │ ├── backup folders -│ │ │ ├── backup.log -│ │ │ └── restore.log -│ │ ├─── general.log -│ │ └─── symlink of last backup -│ -├── export.log -├── backup.list -└── .catalog.cfg -``` - -Butterfly Backup has six main operations, referred to as **actions**, you can get information about them with the _–help_ command. - -``` -$ bb --help -usage: bb [-h] [--verbose] [--log] [--dry-run] [--version] - {config,backup,restore,archive,list,export} ... - -Butterfly Backup - -optional arguments: - -h, --help show this help message and exit - --verbose, -v Enable verbosity - --log, -l Create a log - --dry-run, -N Dry run mode - --version, -V Print version - -action: - Valid action - - {config,backup,restore,archive,list,export} - Available actions - config Configuration options - backup Backup options - restore Restore options - archive Archive options - list List options - export Export options -``` - -#### Configuration - -Configuration mode is straight forward; If you’re already familiar with the exchange keys and OpenSSH, you probably won’t need it. First, you must create a configuration (rsa keys), for instance: - -``` -$ bb config --new -SUCCESS: New configuration successfully created! -``` - -After creating the configuration, the keys will be installed (copied) on the hosts you want to backup: - -``` -$ bb config --deploy host1 -Copying configuration to host1; write the password: -/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/arthur/.ssh/id_rsa.pub" -/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed -/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys -arthur@host1's password: - -Number of key(s) added: 1 - -Now try logging into the machine, with: "ssh 'arthur@host1'" -and check to make sure that only the key(s) you wanted were added. - -SUCCESS: Configuration copied successfully on host1! -``` - -#### Backup - -There are two backup modes: _single_ and _bulk_. -The most relevant features of the two backup modes are the parallelism and retention of old backups. See the two parameters _–parallel_ and _–retention_ in the [documentation][7]. - -##### Single backup - -The backup of a single machine consists in taking the files and folders indicated in the command line, and putting them into the cataloging structure indicated above. In other words, copy all file and folders of a machine into a path. - -This is an examples: - -``` -$ bb backup --computer host1 --destination /mnt/backup --data User Config --type Unix -Start backup on host1 -SUCCESS: Command rsync -ah --no-links arthur@host1:/home :/etc /mnt/backup/host1/2020_09_19__10_28 -``` - -##### Bulk backup - -Above all, bulk mode backups share the same options as single mode, with the difference that they accept a file containing a list of hostnames or ips. In this mode backups will performed in parallel (by default 5 machines at a time). Above all, if you want to run fewer or more machines in parallel, specify the _–parallel_ parameter. - -Incremental of the previous backup, for instance: - -``` -$ cat /home/arthur/pclist.txt -host1 -host2 -host3 -$ bb backup --list /home/arthur/pclist.txt --destination /mnt/backup --data User Config --type Unix -ERROR: The port 22 on host2 is closed! -ERROR: The port 22 on host3 is closed! -Start backup on host1 -SUCCESS: Command rsync -ahu --no-links --link-dest=/mnt/backup/host1/2020_09_19__10_28 arthur@host1:/home :/etc /mnt/backup/host1/2020_09_19__10_50 -``` - -There are four backup modes, which you specify with the _–mode_ flag: **Full** (backup all files) , **Mirror** (backup all files in mirror mode), **Differential** (is based on the latest _Full_ backup) and **Incremental** (is based on the latest backup). -The default mode is _Incremental_; _Full_ mode is set by default when the flag is not specified. - -#### Listing catalog - -The first time you run backup commands, the catalog is created. The catalog is used for future backups and all the restores that are made through Butterfly Backup. To query this catalog use the list command. -First, let’s query the catalog in our example: - -``` -$ bb list --catalog /mnt/backup - -BUTTERFLY BACKUP CATALOG - -Backup id: aba860b0-9944-11e8-a93f-005056a664e0 -Hostname or ip: host1 -Timestamp: 2020-09-19 10:28:12 - -Backup id: dd6de2f2-9a1e-11e8-82b0-005056a664e0 -Hostname or ip: host1 -Timestamp: 2020-09-19 10:50:59 -``` - -Press _q_ for exit and select a backup-id: - -``` -$ bb list --catalog /mnt/backup --backup-id dd6de2f2-9a1e-11e8-82b0-005056a664e0 -Backup id: dd6de2f2-9a1e-11e8-82b0-005056a664e0 -Hostname or ip: host1 -Type: Incremental -Timestamp: 2020-09-19 10:50:59 -Start: 2020-09-19 10:50:59 -Finish: 2020-09-19 11:43:51 -OS: Unix -ExitCode: 0 -Path: /mnt/backup/host1/2020_09_19__10_50 -List: backup.log -etc -home -``` - -To export the catalog list use it with an external tool like _cat_, include the _–_–_log_ flag: - -``` -$ bb list --catalog /mnt/backup --log -$ cat /mnt/backup/backup.list -``` - -#### Restore - -The restore process is the exact opposite of the backup process. It takes the files from a specific backup and push it to the destination computer. -This command perform a restore on the same machine of the backup, for instance: - -``` -$ bb restore --catalog /mnt/backup --backup-id dd6de2f2-9a1e-11e8-82b0-005056a664e0 --computer host1 --log -Want to do restore path /mnt/backup/host1/2020_09_19__10_50/etc? To continue [Y/N]? y -Want to do restore path /mnt/backup/host1/2020_09_19__10_50/home? To continue [Y/N]? y -SUCCESS: Command rsync -ahu -vP --log-file=/mnt/backup/host1/2020_09_19__10_50/restore.log /mnt/backup/host1/2020_09_19__10_50/etc arthur@host1:/restore_2020_09_19__10_50 -SUCCESS: Command rsync -ahu -vP --log-file=/mnt/backup/host1/2020_09_19__10_50/restore.log /mnt/backup/host1/2020_09_19__10_50/home/* arthur@host1:/home -``` - -> Without specifying the “_type_” flag that indicates the operating system on which the data are being retrieved, Butterfly Backup will select it directly from the catalog via the backup-id. - -#### Archive old backup - -Archive operations are used to store backups by saving disk space. - -``` -$ bb archive --catalog /mnt/backup/ --days 1 --destination /mnt/archive/ --verbose --log -INFO: Check archive this backup f65e5afe-9734-11e8-b0bb-005056a664e0. Folder /mnt/backup/host1/2020_09_18__17_50 -INFO: Check archive this backup 4f2b5f6e-9939-11e8-9ab6-005056a664e0. Folder /mnt/backup/host1/2020_09_15__07_26 -SUCCESS: Delete /mnt/backup/host1/2020_09_15__07_26 successfully. -SUCCESS: Archive /mnt/backup/host1/2020_09_15__07_26 successfully. -$ ls /mnt/archive -host1 -$ ls /mnt/archive/host1 -2020_09_15__07_26.zip -``` - -After that, look in the catalog and see that the backup was actually archived: - -``` -$ bb list --catalog /mnt/backup/ -i 4f2b5f6e-9939-11e8-9ab6-005056a664e0 -Backup id: 4f2b5f6e-9939-11e8-9ab6-005056a664e0 -Hostname or ip: host1 -Type: Incremental -Timestamp: 2020-09-15 07:26:46 -Start: 2020-09-15 07:26:46 -Finish: 2020-09-15 08:43:45 -OS: Unix -ExitCode: 0 -Path: /mnt/backup/host1/2020_09_15__07_26 -Archived: True -``` - -### Conclusion - -Butterfly Backup was born from a very complex need; this tool provides superpowers to rsync, automates the backup and restore process. In addition, the catalog allows you to have a system similar to a “time machine”. - -In conclusion, Butterfly Backup is a lightweight, versatile, simple and scriptable backup tool. - -One more thing; Easter egg: _**bb** -Vv_ - -Thank you for reading my post. - -Full documentation: [https://butterfly-backup.readthedocs.io/][7] -Github: - -* * * - -_Photo by [Manu M][8] on [Unsplash][9]_. - --------------------------------------------------------------------------------- - -via: https://fedoramagazine.org/butterfly-backup/ - -作者:[Matteo Guadrini][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://fedoramagazine.org/author/matteoguadrini/ -[b]: https://github.com/lujun9972 -[1]: https://fedoramagazine.org/wp-content/uploads/2020/09/butterfly-backup-816x345.jpg -[2]: https://matteoguadrini.github.io/Butterfly-Backup/ -[3]: https://fedoramagazine.org/help-port-python-packages-python-3/ -[4]: https://cryptography.io/en/latest/ -[5]: https://fedoramagazine.org/open-source-ssh-clients/ -[6]: https://fedoramagazine.org/scp-users-migration-guide-to-rsync/ -[7]: https://butterfly-backup.readthedocs.io/en/latest/ -[8]: https://unsplash.com/@leocub?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText -[9]: https://unsplash.com/s/photos/butterfly?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText diff --git a/sources/tech/20201023 New open source project crowdsources internet security.md b/sources/tech/20201023 New open source project crowdsources internet security.md deleted file mode 100644 index ae1fad82ff..0000000000 --- a/sources/tech/20201023 New open source project crowdsources internet security.md +++ /dev/null @@ -1,89 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (New open source project crowdsources internet security) -[#]: via: (https://opensource.com/article/20/10/crowdsec) -[#]: author: (Philippe Humeau https://opensource.com/users/philippe-humeau) - -New open source project crowdsources internet security -====== -CrowdSec aims to leverage the power of the crowd to create a very -accurate IP reputation database -![Lots of people in a crowd.][1] - -[CrowdSec][2] is a new security project designed to protect servers, services, containers, or virtual machines exposed on the internet with a server-side agent. It was inspired by [Fail2Ban][3] and aims to be a modernized, collaborative version of that intrusion-prevention framework. - -CrowdSec is free and open source (under an MIT License), with the source code available on [GitHub][4]. It is currently is available for Linux, with ports to macOS and Windows on the roadmap. - -### How CrowdSec works - -CrowdSec is written in Golang and was designed to run on modern, complex architectures such as clouds, lambdas, and containers. To achieve this, it's "decoupled," meaning you can "detect here" (e.g., in your database logs) and "remedy there" (e.g., in your firewall or rproxy). - -The tool uses [leaky buckets][5] internally to allow for tight event control. Scenarios are written in YAML to make them as simple and readable as possible without sacrificing granularity. The inference engine lets you get insights from chain buckets or meta-buckets, meaning if several buckets (e.g., web scan, port scan, and login attempt failed) overflow into a "meta-bucket," you can trigger a "targeted attack" remediation. - -Aggressive Internet Protocols (IPs) are dealt with using bouncers. The [CrowdSec Hub][6] offers ready-to-use data connectors, bouncers (e.g., Nginx, PHP, Cloudflare, Netfilter), and scenarios to deter various attack classes. Bouncers can remedy threats in various ways. - -It works on bouncers such as Captcha, limiting applicative rights, multi-factor authentication, throttling queries, or activating Cloudflare attack mode just when needed. You can get a sense of what's happening locally (and where it's occurring) with a lightweight visualization interface and strong [Prometheus][7] observability. - -![CrowdSec's operation][8] - -(CrowdSec, [CC BY-SA 4.0][9]) - -### Crowdsourcing security - -While the software currently looks like a spruced up Fail2Ban, the goal is to leverage the power of the crowd to create a very accurate IP reputation database. When CrowdSec bounces a specific IP, the triggered scenario and the timestamp are sent to our API to be checked and integrated into the global consensus of bad IPs. - -While we are already redistributing a blocklist to our community (you can see it by entering `cscli ban list --api` on the command line), we plan to really improve this part as soon as we have dealt with other prerequisite code lines. The network already has sightings of 100,000+ IPs (refreshed daily) and is able to redistribute ~10% (10,000) of those to our community members. The project has also been designed to be [GDPR][10] compliant and privacy respectful, both in technical and legal terms. - -Our vision is that once the CrowdSec community is large enough, we will all generate, in real time, the most accurate IP reputation database available. This global reputation engine, coupled with local behavior assessment and remediation, should allow many businesses to achieve tighter security at a very low cost. - -### Case studies - -Here are two examples of what CrowdSec does. - -> A company protecting its customers from DDoS attacks set up a DDoS mitigation strategy relying on Fail2Ban. When one of its customers was attacked by a 7,000-machine botnet, CrowdSec was able to ingest all the logs and successfully banned more than 95% of the botnet, efficiently mitigating the attack, in less than five minutes. For the sake of comparison, Fail2Ban would have needed to process several thousand logs per minute, which is quite challenging and would have taken nearly 50 minutes to deal with this attack. - -> An e-commerce business was going through a massive credit card stuffing attack. The attacker was spamming the payment gateway, testing thousands of different credit card details using a sole IP address. Instead of having to amend all of its apps to try to detect the attack, by installing CrowdSec, the company could scan all the logs and block the intrusion within minutes. - -### Business model - -A common stress in open source projects is setting up a viable monetization model. So, in full transparency, we'll offer premium subscriptions to businesses that want to leverage the IP reputation database without contributing to it or sharing their banned IP data. This will allow anyone to query the IP reputation database upon receiving the first packet from an unknown IP before accepting it. - -### Getting started and getting involved - -CrowdSec's setup is quick and easy (taking just five minutes, tops). It's heavily assisted by a wizard to allow as many people and organizations as possible to use it. The project is production-grade and already runs in many places, including hosting companies, although it's still in beta. - -Currently, our community members come from 28 countries across five different continents. We are looking for more users, contributors, and ambassadors to take the project to the next level. - -![User map][11] - -We would love to hear your feedback and engage in further discussions, so please don't hesitate to comment, reach out through our [website][2], [GitHub][4], or [Discourse][12], or give us a shout on [Gitter][13]. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/10/crowdsec - -作者:[Philippe Humeau][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/philippe-humeau -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/BUSINESS_community_1.png?itok=rT7EdN2m (Lots of people in a crowd.) -[2]: https://crowdsec.net/ -[3]: https://www.fail2ban.org/ -[4]: https://github.com/CrowdSecurity/crowdsec -[5]: https://en.wikipedia.org/wiki/Leaky_bucket -[6]: https://hub.crowdsec.net/ -[7]: https://opensource.com/article/19/11/introduction-monitoring-prometheus -[8]: https://opensource.com/sites/default/files/uploads/crowdsec_operation.jpg (CrowdSec's operation) -[9]: https://creativecommons.org/licenses/by-sa/4.0/ -[10]: https://en.wikipedia.org/wiki/General_Data_Protection_Regulation -[11]: https://opensource.com/sites/default/files/cs_user_map.png (User map) -[12]: https://discourse.crowdsec.net/ -[13]: https://gitter.im/crowdsec-project/community diff --git a/sources/tech/20201026 Manage content using Pulp Debian.md b/sources/tech/20201026 Manage content using Pulp Debian.md deleted file mode 100644 index 3000b0f2f8..0000000000 --- a/sources/tech/20201026 Manage content using Pulp Debian.md +++ /dev/null @@ -1,173 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Manage content using Pulp Debian) -[#]: via: (https://opensource.com/article/20/10/pulp-debian) -[#]: author: (Maximilian Kolb https://opensource.com/users/kolb) - -Manage content using Pulp Debian -====== -Mirror, sync, upload, and publish Debian software packages with the -pulp_deb plugin. -![Gift box opens with colors coming out][1] - -Pulp is an open source repository management tool that helps you fetch, mirror, upload, and publish content within your organization. It can be used to [manage various types of content][2] such as software packages (from RPM packages to Ruby gems), as well as Ansible collections, container images, and even arbitrary files. - -A typical workflow starts with fetching software packages from an existing repository (for example, ) or adding packages manually (for private packages built within your organization). Then Pulp helps you make arbitrary collections of software packages that are consumable by clients. With it, you: - - * Gain control over what content is available for consumers - * Can use version control - * Reduce bandwidth and storage needs by providing a local, deduplicated source - - - -If you're new to Pulp, read Melanie Corr's introductory article on [how to manage your software repositories with Pulp][3]. - -### Manage Debian packages with Pulp - -Pulp relies on plugins to adequately handle different types of content. For example, the [Pulp RPM][4] plugin enables you to manage .rpm packages. With the [Pulp Debian][5] plugin, you can mirror, sync, upload, and publish .deb packages within APT repositories. The pulp_deb plugin is essential if you want to manage and provide consumable software packages for Linux distributions such as Debian and Ubuntu, and it's free and open source software provided and maintained by the Pulp community. - -With the Pulp Debian plugin, you can manage Debian content by synchronizing remote repositories, providing an interface to upload your own content, and publishing content to repositories. - -Pulp supports several different [Debian content types][6], including packages, package indices, Release Files, and more. "Content type" refers to either a specific artifact or metadata. For example, a content unit of type `package` refers to a .deb package. - -Synchronizing a remote repository is one of Pulp Debian plugin's main features, and it's one of the ways to obtain content. The synchronization process uses a [remote][7] definition that contains a URL, [distribution][8], components, and architectures: - - * The **URL** is the path to the remote APT repository. - * The **distribution** is the path between the `dists/` directory of the APT repository and the relevant `Release` file. This is usually (but not always) the codename or suite of the Debian-based Linux distribution (`buster` for Debian 10, `stretch` for Debian 9, `focal` for Ubuntu 20.04, and so on). Running `lsb_release -cs` on any Debian or Ubuntu host shows the distribution's codename. - * **Components** describe arbitrary subsets of repositories (`main`, `contrib`, or `non-free` for Debian, or `main`, `restricted`, `universe`, and `multiverse` for Ubuntu). You can use this to filter and categorize packages within an APT repository. - * The **architecture** refers to the processor architecture a software package can run on, most commonly `i386`, `amd64`, or `arm64`. If a software package does not depend on a specific processor architecture, the architecture may be set to `all`. - - - -Specifying a distribution is mandatory, whereas defining components and architectures is optional. If undefined, Pulp automatically syncs all packages without filtering for components or architectures. Pulp automatically verifies the [GNU Privacy Guard][9] signature of the `Release` File, should the corresponding GPG public key be assigned to the remote. - -### An example workflow - -It's easy to go from a remote repository to a verbatim publication with Pulp's [REST API][10]. The following API calls assume you're using [HTTPie][11]. - -Imagine you want to provide .deb packages to hosts within your organization. The following basic workflow guides your first steps in using Pulp and the Pulp Debian plugin. - -![Pulp Debian workflow][12] - -Image by Maximilian Kolb - -#### 1\. Create a local repository - -Start by creating a local repository in Pulp with a single API call. You can do this with HTTPie or the [curl command][13]: - - -``` -`http post http://:24817/pulp/api/v3/repositories/deb/apt/ name=` -``` - -#### 2\. Create a remote - -Next, create a remote. This API call requires a URL and an arbitrary `name` value. Defining a distribution and architecture is optional: - - -``` -`http post http://:24817/pulp/api/v3/remotes/deb/apt/ name="nginx.org" url="http://nginx.org/packages/debian" distributions="buster"` -``` - -Whether you define only one or multiple distributions, Pulp will later sync packages for all architectures, as they are undefined for this remote. - -#### 3\. Synchronize - -The third and final step to fetch remote content to Pulp is to sync the remote to your local repository. You do this by making a call to the sync API endpoint of your repository: - - -``` -`http post http://:24817/pulp/api/v3/repositories/deb/apt//sync/ remote=http://:24817/pulp/api/v3/remotes/deb/apt//` -``` - -In this sample command, each of the UUIDs refers to Pulp's internal references, displayed as `pulp_href` by the API. This step may take some time, depending on your environment, the size of the repository, and the available bandwidth. - -### Make your Pulp content consumable - -After acquiring content for Pulp through synchronization, it becomes consumable by clients. - -#### 1\. Create a publication - -Publications are always based on a Pulp repository. They contain extra settings on how to publish content. You can use the `APT` publisher on any repository of the APT type containing .deb packages. - -The following API call creates a publication in verbatim mode. That is, it provides the exact same structure and content of the remote repository: - - -``` -`http post http://:24817/pulp/api/v3/publications/deb/verbatim/ repository=/pulp/api/v3/repositories/deb/apt//` -``` - -Replace the UUID with the repository you want to publish. This step may take some time, depending on the size of the repository. - -#### 2\. Create a distribution - -A distribution takes the finished publication and serves it through the Pulp content app, which makes it available (or "consumable") by your users. In the context of a Debian system, this means that the repository can be added to `/etc/apt/sources.list` and used as a way to install software. - -The following API call requires the UUID of the publication created in the first step: - - -``` -`http post http://:24817/pulp/api/v3/distributions/deb/apt/ name="name_of_the_distribution" base_path="base_path_of_the_distribution" publication=http://:24817/pulp/api/v3/publications/deb/verbatim//` -``` - -The `base_path` value is part of the URL used by clients when referring to the APT repository, and the name can be arbitrary. Calling the distribution's API endpoint on a specific published distribution returns the URL of the Pulp repository: - - -``` -`http get http://:24817/pulp/api/v3/distributions/deb/apt//` -``` - -This URL is directly consumable by APT clients. It can now be added to `/etc/apt/sources.list` as a valid repository. - -### Pulp API - -Using these API calls lets you sync an APT repository to your own Pulp instance and republish it verbatim, without touching the packages, any metadata, or signatures. Refer to the [API documentation][6] and [feature overview][14] for further information and other modes of publication. - -### Open source flexibility - -One important aspect of Pulp and its plugin structure is that it's extremely flexible, in no small part due to its open source nature. You can run Pulp as a standalone service, but you don't have to. It can be integrated into something bigger. - -I work at [ATIX][15], where we've started using Pulp and the Pulp Debian plugin in a project called [orcharhino][16]. It's based on [Foreman][17] and includes the powerful [Katello][18] plugin for additional content-management capabilities, which itself relies on Pulp for repository management. With this, we've been able to manage our data center with automated system deployment, configuration management, and patch management. - -In other words, ATIX develops the Pulp Debian plugin primarily with a Katello use case in mind. Whether you need Katello or Pulp or just a specific Pulp plugin, you can rest assured that this modularity is by design. - -Using Pulp, you can mirror remote software repositories, host private software packages, and manage different types of content on one platform. - -Try [Pulp][19] and the [Pulp Debian][5] plugin today, and don't be afraid to join and ask the [community][20] for help. We welcome any and all feedback. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/10/pulp-debian - -作者:[Maximilian Kolb][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/kolb -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/OSDC_gift_giveaway_box_520x292.png?itok=w1YQhNH1 (Gift box opens with colors coming out) -[2]: https://pulpproject.org/content-plugins/#pulp-3-content-plugins-information -[3]: https://opensource.com/article/20/8/manage-repositories-pulp -[4]: https://github.com/pulp/pulp_rpm -[5]: https://github.com/pulp/pulp_deb -[6]: https://pulp-deb.readthedocs.io/en/latest/restapi.html -[7]: https://docs.pulpproject.org/pulpcore/glossary.html#term-Remote -[8]: https://docs.pulpproject.org/pulpcore/glossary.html#term-Distribution -[9]: https://gnupg.org/ -[10]: https://docs.pulpproject.org/pulpcore/restapi.html -[11]: https://httpie.org/ -[12]: https://opensource.com/sites/default/files/pulp-debian-workflow_0.jpg (Pulp Debian workflow) -[13]: https://www.redhat.com/sysadmin/use-curl-api -[14]: https://pulp-deb.readthedocs.io/en/latest/feature_overview.html -[15]: https://atix.de/en/ -[16]: https://orcharhino.com/ -[17]: https://theforeman.org/ -[18]: https://theforeman.org/plugins/katello -[19]: https://pulpproject.org/ -[20]: https://pulpproject.org/get_involved/ diff --git a/sources/tech/20201026 Pi from High School Maths.md b/sources/tech/20201026 Pi from High School Maths.md deleted file mode 100644 index 10e972ca01..0000000000 --- a/sources/tech/20201026 Pi from High School Maths.md +++ /dev/null @@ -1,155 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Pi from High School Maths) -[#]: via: (https://theartofmachinery.com/2020/10/26/pi_from_high_school_maths.html) -[#]: author: (Simon Arneaud https://theartofmachinery.com) - -Pi from High School Maths -====== - -Warning: I don’t think the stuff in this post has any direct practical application by itself (unless you’re a nuclear war survivor and need to reconstruct maths from scratch or something). Sometimes I like to go back to basics, though. Here’s a look at (\pi) and areas of curved shapes without any calculus or transcendental functions. - -### A simple algorithm for calculating (\pi) - -This algorithm starts with simple number theoretic musing. Some whole numbers form neat Pythagorean triples ((x,y,z)) where (x^{2} + y^{2} = z^{2}). E.g., (3^{2} + 4^{2} = 5^{2}). It’s easy to find all the solutions to (x^{2} + y^{2} = 5^{2}) through brute-force search because we know that (x) and (y) can’t be bigger than (5). Here they are: - -[\begin{matrix} {0^{2} + 5^{2}} & {= 5^{2}} \ {3^{2} + 4^{2}} & {= 5^{2}} \ {4^{2} + 3^{2}} & {= 5^{2}} \ {5^{2} + 0^{2}} & {= 5^{2}} \ \end{matrix}] - -(Plus all the negative-number combinations, but let’s stick with non-negative integers and just count 4 solutions.) If we relax the equation, and count solutions to (x^{2} + y^{2} \leq 5^{2}), the answer turns out to be 26. Why care? Well, if (t) is the total number of solutions to (x^{2} + y^{2} \leq n^{2}), then - -[\lim\limits_{n\rightarrow\infty}\frac{4t}{(n + 1)^{2}} = \pi] - -Or, in code, here’s a simple program that estimates (\pi), getting more accurate for bigger values of the `n` variable: - -``` -import std; - -ulong sq(ulong x) pure -{ - return x * x; -} - -void main(string[] args) -{ - const n = args.length > 1 ? args[1].to!ulong : 20; - - ulong total; - foreach (x; 0..n+1) - { - foreach (y; 0..n+1) - { - if (sq(x) + sq(y) <= sq(n)) total++; - } - } - - /* - // Alternatively, for functional programming fans: - const total = - cartesianProduct(iota(n+1), iota(n+1)) - .filter!(p => sq(p[0]) + sq(p[1]) <= sq(n)) - .walkLength; - */ - - writef("%.12f\n", 4.0 * total / sq(n+1)); -} - -$ ./pi_calc -3.038548752834 -$ ./pi_calc 10000 -3.141362256135 -``` - -Okay, that’s a little bit more accurate than (\frac{22}{7}). Unlike most formulae for (\pi), though, there’s a simple diagram that shows how it works. Imagine we lay out the ((x,y)) integer pairs (where (x) and (y) range from (0) to (n)) on a 2D grid the obvious way. The figure below shows an example for (n = 10), with the arrow (r) pointing from the origin to ((6,8)). (r) and the (x) and (y) components make a right-angled triangle, so [Pythagoras’s theorem][1] says that (x^{2} + y^{2} = r^{2}). For ((6,8)), (r = 10 = n), so ((6,8)) is on the boundary as a solution to (x^{2} + y^{2} \leq 10^{2}). That boundary (the set of real-valued points a constant distance (n = 10) from the origin) makes a quarter circle. - -![][2] - -A circle is a simple, convex shape, and the grid points are evenly spaced, so the number of points inside the quarter circle will be roughly proportional to the area. More specifically, the fraction of all the grid points inside the quarter circle will be roughly the area of the quarter circle divided by the area of square around all points. The quarter circle area is (\pi r^{2} \div 4), inside the square of area (r^{2}) (remember, (n = r)), so (\frac{\pi}{4}) of all points represent solutions. The (x) and (y) values count from (0) to (n), so there are ((n + 1)^{2}) grid points. Rearrange the equations and you get a formula for estimating (\pi) from a solution count. The grid points keep drawing an arbitrarily more accurate circle as (n) gets bigger (just like a higher-resolution computer monitor does) so the estimate is exact in the limit. - -### A faster implementation - -The code above is simple but slow because it brute-force scans over all ((n + 1) \times (n + 1))possible (x) and (y) values. But we obviously don’t need to scan _all_ values. If we know that (x^{2} + y^{2} \leq n^{2}), then making (x) or (y) smaller will only give us another solution. We don’t need to keep testing smaller values after we find a solution. Ultimately, we only need to find the integral points around the boundary. Here’s a faster algorithm based on that idea. - -Imagine we scan along the integral (x) values and find the maximum integral (y) value that still gives us a solution. This gives us a border line marked in red in the figure below. If (y = 8) for a given (x) value, we instantly know there are (8 + 1 = 9) solutions with that given (x) value ((+ 1) to count the (y = 0) solution). - -![][3] - -Note that as (x) scans from (0) to (n), (y) starts at (n) and decreases to (0). Importantly, it _only_ decreases — it’s monotonic. So if we scan (x) from (0) to (n), we can find the next boundary (y) point by starting from the previous boundary point and searching downwards. Here’s some code: - -``` -ulong y = n, total; -foreach (x; 0..n+1) -{ - while (sq(x) + sq(y) > sq(n)) y--; - total += y + 1; -} -``` - -This version still has nested loops, so it might look like it’s still (O(n^{2})). However, the inner `while` loop executes a varying number of times for each (x) value. Often the `y--` doesn’t trigger at all. In fact, because `y` starts from `n` and monotonically decreases to 0, we know the `y--` will be executed exactly `n` times in total. There’s no instruction in that code that executes more than (O(n)) times, total, so the whole algorithm is (O(n)). - -With 64b `ulong` integers, the largest value of `n` that works before overflow is 4294967294: - -``` -$ ./pi_calc 4294967294 -3.141592653058 -``` - -There are ways to get faster convergence using numerical integration tricks, but I like the way this algorithm only uses integer arithmetic (up until the final division), and can be understood directly from simple diagrams. - -### Area of a circle without calculus - -Perhaps you feel a bit cheated because that algorithm assumes the (\pi r^{2}) formula for the area of a circle. Sure, that’s arguably included in “high school maths”, but it’s something students just get told to remember, unless they study integral calculus and derive it that way. But if we’re going to assume (\pi r^{2}), why not assume the theory of trigonometric functions as well, and just use (\pi = 4\operatorname{atan}(1))? - -The great ancient Greek mathematician Archimedes figured out the circle area over two thousand years ago without integral calculus (or trigonometric functions for that matter). He started with an elegant insight about regular (i.e., equal-sided) polygons. - -The famous [“half base times height” formula for the area of a triangle already had a well-known proof in the first book of Euclid’s Elements of Geometry][4] (easily derived from [a theorem about parallelograms][5]). Conveniently, any regular polygon can be split into equal triangles joined to the centre. For example, a regular hexagon splits into six triangles, as in the figure below. We can take any one of the triangles (they’re all the same) and call the “base” the side that’s also a side of the polygon. Then the “height” is the line from the centre of the base to the centre of the polygon. - -![][6] - -Now here’s Archimedes’s neat insight: The ratio of the triangle area to the base is (\frac{h}{2}). If you add up all the areas, you get the area of the polygon. Likewise, if you add up all the bases, you get the perimeter of the polygon. Because the triangle area/base ratio is a constant (\frac{h}{2}) for all triangles, the area/perimeter ratio for the whole polygon is the same (\frac{h}{2}). As a formula, the area of _any_ regular polygon is (P \times \frac{h}{2}) (where (P) is the perimeter). - -If you think of a circle as a regular polygon with infinitely many sides (so that (h) becomes the radius of the circle), and use the circle circumference ((2\pi r)) as your basic definition of (\pi), then that implies the area of a circle is (2\pi r \times \frac{r}{2} = \pi r^{2}). - -Of course, Archimedes was a respected mathematician who couldn’t get away with just assuming that anything true of a polygon is true of a circle (counterexample: all polygons have bumpy corners, but circles don’t). He used the kind of geometric proof by contradiction that was popular in his day. (He even took it further and analysed spheres, cylinders, parabolas and other curved objects, almost inventing something like modern real analysis a couple of millenia early.) Sadly, not all of his mathemetical work has survived, but [the key part of his Measurement of a Circle][7] has. - -Here’s the high-level version. Archimedes claimed that the area of a circle is (2\pi r \times \frac{r}{2}). Suppose you think his value is too small, and the circle is really bigger than (2\pi r \times \frac{r}{2}). That means there’s enough room inside the circle to fit a regular polygon that’s also bigger than (2\pi r \times \frac{r}{2}). But Archimedes said that’s contradictory because for any such polygon, (h < r), and (P < 2\pi r) (because each side of the polygon is a straight line that’s shorter than the circle arc that connects the same points), so the area (A = P \times \frac{h}{2} < 2\pi r \times \frac{r}{2}). The polygon’s area can’t be both bigger and smaller than (2\pi r \times \frac{r}{2}). - -![][8] - -Archimedes argued that there’s a similar contradiction if you think (2\pi r \times \frac{r}{2}) is too big, and the circle area is smaller than that. In that case he could make a polygon that’s also smaller than (2\pi r \times \frac{r}{2}), yet still wraps around the circle. For this polygon, (h = r), but he said the perimeter of the polygon must be greater than (2\pi r)[1][9], so that the polygon’s area must be bigger than (2\pi r \times \frac{r}{2}), even though it’s also meant to be smaller. - -![][10] - -If both of those cases lead to contradiction, we’re left with the only alternative that the circle area is (\pi r^{2}). - - 1. I don’t actually know how he argued this. [↩︎][11] - - - - --------------------------------------------------------------------------------- - -via: https://theartofmachinery.com/2020/10/26/pi_from_high_school_maths.html - -作者:[Simon Arneaud][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://theartofmachinery.com -[b]: https://github.com/lujun9972 -[1]: https://www.cut-the-knot.org/pythagoras/ -[2]: https://theartofmachinery.com/images/pi_from_high_school_maths/pi_calc_grid.svg -[3]: https://theartofmachinery.com/images/pi_from_high_school_maths/pi_fast_calc_grid.svg -[4]: https://mathcs.clarku.edu/~djoyce/java/elements/bookI/propI37.html -[5]: https://mathcs.clarku.edu/~djoyce/java/elements/bookI/propI35.html -[6]: https://theartofmachinery.com/images/pi_from_high_school_maths/polygon.svg -[7]: https://flashman.neocities.org/ARCHCI1set.htm -[8]: https://theartofmachinery.com/images/pi_from_high_school_maths/polygon_inner.svg -[9]: tmp.gJlezpSbZb#fn:1 -[10]: https://theartofmachinery.com/images/pi_from_high_school_maths/polygon_outer.svg -[11]: tmp.gJlezpSbZb#fnref:1 diff --git a/sources/tech/20201027 Bring old hardware back to life with OpenBSD.md b/sources/tech/20201027 Bring old hardware back to life with OpenBSD.md deleted file mode 100644 index e2043c0f54..0000000000 --- a/sources/tech/20201027 Bring old hardware back to life with OpenBSD.md +++ /dev/null @@ -1,73 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Bring old hardware back to life with OpenBSD) -[#]: via: (https://opensource.com/article/20/10/old-hardware-openbsd) -[#]: author: (Jonathan Garrido https://opensource.com/users/jgarrido) - -Bring old hardware back to life with OpenBSD -====== -Install OpenBSD and the Xfce desktop to give a new spin to an old -machine—for free. -![Old UNIX computer][1] - -Almost everyone has (or knows someone who has) old hardware sitting around gathering dust because they believe that no modern operating system (OS) supports such a relic. I know this is wrong because I am one of those geeks who likes to use every piece of equipment as long as it is possibly functional. - -Although most modern OSes do run better on modern hardware, it is also true that there are alternatives for up-to-date 32-bit OSes to run all types of machines, including very old ones. Thanks to a bunch of people with enough determination and skills, there are different types of Linux and BSD distros that you can use, free of charge, to give a new spin to an old machine. - -## What can you do with a new OS on old hardware? - -Besides the obvious benefit of bringing back a piece of equipment that has been idle for a price that is equal to nothing, using an open source 32-bit distro to revive "antique" hardware has several benefits and purposes, including: - - * **Create single-purpose equipment:** Today's networks are complex, and there are a lot of services that interact with one another. After bringing an old machine back to life, you can set it up to fulfill one of those unique services within your infrastructure, such as DHCP, DNS, or SFTP. - * **Learn how the OS works:** I always want to know how things work under the hood. Tinkering with old hardware and tiny OSes gives you the chance to understand the interactions between hardware and software, learn how to tune the installation's default settings to make the most of a system, and much, much more. - * **Teach others about open source:** Finally, 32-bit OSes and old hardware can teach the next generation about OSes and the open source world. One of the main features of these types of OSes is their simplicity of use with fewer options to overwhelm the user. This makes them an excellent tool to teach and explore the essential components of any operating system. - - - -## Distributions to try - -To encourage you, here is a list of distros that I have tried on old hardware with very good results. These are not the only options available, but these are the ones I have used the most: - - * [Linux Lite][2] - * [FreeBSD][3] - * [OpenBSD][4] - * [Lubuntu][5] - * [Debian][6] - * [Tiny Core Linux][7] - * [Slax Linux][8] - - - -## Give it a try with OpenBSD - -OpenBSD is one of the main [BSD][9] distros. It is well-known because it is made with security in mind, with almost no security bugs in the default installation and a lot of cryptography tools available to users. Another cool feature, at least for me, is the fact that you can run it on a huge variety of hardware, from new computers to very old machines. - -For this installation, my hardware was a 2005 MacBook with the following specs: - - * A 32-bit, dual-core processor - * 2GB of RAM (with no possibility of expansion) - * A 32GB hard drive - * Two network cards - * A CD-ROM (reads only CDs) - * A few USB ports - - - -### Install OpenBSD - -The installation was very straightforward. I [downloaded][10] the most recent version of OpenBSD and created a boot CD (because there is no other way to boot my old laptop besides the internal drive). The installation went flawlessly. It recognized my hardware, network (including my access point), and time zone; let me choose the layout of my hard drive and manage my users; and asked some questions about the system's security setup. Also, even though the installation has a very small footprint, OpenBSD let me choose what to install and from where. - -I ended up with a brand-new, up-to-date operating system and a screen like this. - -![OpenBSD][11] - -(Jonathan Garrido, [CC BY-SA 4.0][12]) - -### Add a graphical desktop - -If you want your desktop to use graphical applications, a black terminal with white letters is not enough. So follow these steps to install the [Xfce desktop][13]: - - 1. As root, run: [code]`pkg_add xcfe xfce-extras slim slim-themes consolekit2 polkit`[/code] to install the Xfce environment and the login greeter. In the above, `pkg_add` is the utility to use when you want to d \ No newline at end of file diff --git a/sources/tech/20201027 Map Your Gamepad Buttons With Keyboard, Mouse, or Macros-Scripts Using AntiMicroX in Linux.md b/sources/tech/20201027 Map Your Gamepad Buttons With Keyboard, Mouse, or Macros-Scripts Using AntiMicroX in Linux.md deleted file mode 100644 index 2fef431fa4..0000000000 --- a/sources/tech/20201027 Map Your Gamepad Buttons With Keyboard, Mouse, or Macros-Scripts Using AntiMicroX in Linux.md +++ /dev/null @@ -1,106 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Map Your Gamepad Buttons With Keyboard, Mouse, or Macros/Scripts Using AntiMicroX in Linux) -[#]: via: (https://itsfoss.com/antimicrox/) -[#]: author: (Ankush Das https://itsfoss.com/author/ankush/) - -Map Your Gamepad Buttons With Keyboard, Mouse, or Macros/Scripts Using AntiMicroX in Linux -====== - -_**Brief: AntiMicroX is a GUI tool to map your gamepad with your keyboard, mouse, or custom macros/scripts in Linux. Let’s take a closer look at it.**_ - -Gaming peripherals on Linux do not have a great reputation, but we do have some interesting open source tools that can make things easier for you. For instance, I’ve previously covered a tool [Piper which lets you configure your gaming mouse][1]. - -This time, let me introduce you to an exciting open source tool that lets you utilize your game pad by mapping it to your keyboard, mouse, scripts, or macros. - -![][2] - -In this article, I’ll mention why you might need it and its key features to help you know more about it. - -### AntiMicroX: An open source tool to map your gamepad - -Of course, this isn’t for everyone but an open source GUI tool for something useful, why not? - -Maybe you have a system that you utilize for media consumption (or as a [media server on Linux][3]). Or, maybe you want to use a desktop application using your gamepad. - -Also, you may want to use it to play a game that does not offer gamepad support. - -For such cases, AntiMicroX is a tool that you would want to explore (even if that’s just for fun). - -### Features of AntiMicroX - -![][4] - - * Map with keyboard buttons - * Controller mapping to make sure the host detects the correct triggers - * Multiple controller profile - * Ability to launch an executable using the gamepad - * Map with mouse buttons - * Gamepad calibration option - * Tweak Gamepad poll rate (if needed) - * Auto profile support - - - -### Installing AntiMicroX on Linux - -![][5] - -AntiMicroX offers a wide range of options to get it installed on a Linux distribution. You will find a DEB package, [Flatpak package][6], and an AppImage file. - -It is easy to [install it using the deb package][7]. In addition to that, you may refer to our [Flatpak guide][8] or [AppImage guide][9] to get started installing AntiMicroX as well. - -You can also build it from source if needed. Nevertheless, you should find all the necessary instructions in its [GitHub page][10] along with the packages in its [releases section][11]. - -[AntiMicroX][12] - -**Recommended Read:** - -![][13] - -#### [How to Configure Gaming Mouse on Linux Using Piper GUI Tool][1] - -Love gaming on Linux? Take your gaming to the next level by configuring your gaming mouse in Linux using Piper GUI application. - -### My Thoughts on Using AntiMicroX on Linux - -Surprisingly, mapping the game pad buttons was easier than you would expect. I was able to map the buttons with my keyboard and assign custom macros/scripts as well. - -Mapping the buttons with the mouse isn’t that simple and may not work well if you already have the mouse buttons assigned for different macros (like in my case). For gaming, it would be nice to calibrate and map the gamepad buttons properly before pairing it up with the keyboard buttons. - -It worked just fine with my generic controller. You can definitely try it out. - -Did you know about this? Have you tried it yet? Now that we’re looking for interesting open-source tools, do you know about anything else similar to this for [gaming on Linux][14]? - -Let me know your thoughts in the comments below. - --------------------------------------------------------------------------------- - -via: https://itsfoss.com/antimicrox/ - -作者:[Ankush Das][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://itsfoss.com/author/ankush/ -[b]: https://github.com/lujun9972 -[1]: https://itsfoss.com/piper-configure-gaming-mouse-linux/ -[2]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/10/antimicrox-mapping.png?resize=800%2C557&ssl=1 -[3]: https://itsfoss.com/best-linux-media-server/ -[4]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/10/antimicrox-gamepad.jpg?resize=800%2C631&ssl=1 -[5]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/10/antimicrox-calibration.jpg?resize=800%2C637&ssl=1 -[6]: https://itsfoss.com/what-is-flatpak/ -[7]: https://itsfoss.com/install-deb-files-ubuntu/ -[8]: https://itsfoss.com/flatpak-guide/ -[9]: https://itsfoss.com/use-appimage-linux/ -[10]: https://github.com/AntiMicroX/antimicrox -[11]: https://github.com/AntiMicroX/antimicrox/releases -[12]: https://github.com/AntiMicroX/antimicrox/ -[13]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/06/configuring-gaming-mouse-linux.png?fit=800%2C450&ssl=1 -[14]: https://itsfoss.com/linux-gaming-guide/ diff --git a/sources/tech/20201102 5 reasons to use Linux in 2020.md b/sources/tech/20201102 5 reasons to use Linux in 2020.md deleted file mode 100644 index 832ac8fd46..0000000000 --- a/sources/tech/20201102 5 reasons to use Linux in 2020.md +++ /dev/null @@ -1,87 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (5 reasons to use Linux in 2020) -[#]: via: (https://opensource.com/article/20/11/linux-2020) -[#]: author: (Seth Kenlon https://opensource.com/users/seth) - -5 reasons to use Linux in 2020 -====== -Here's a look back at the year so far and a review of what you need to -know about Linux in 2020. -![Penguin driving a car with a yellow background][1] - -Some of the best technology is a moving target. When technology stagnates, society tends to outpace and outgrow it. [Linux][2], the widely used open source operating system (OS), is a foundational technology and the basis for some of the most progressive modern computing ideas. So, while it's startlingly unchanged after three decades of development, it also allows adaptation. As a result, Linux is in a unique position of being both a sound investment in skills because it doesn't change and a seemingly eternal driving force for new skills to learn. - -The year 2020 has been a strange one—by any measure—but for Linux, it's been a typical development cycle. Here's a look back at the year so far and a review of what you need to know about Linux in 2020. - -### ZFS on Linux - -The ZFS filesystem offers integrity checking for data and metadata, redundancy with mirroring, support for up to _256 trillion yobibytes_ of storage, hardware-accelerated native encryption, and efficient replication. ZFS is a Sun Microsystems innovation that, unfortunately, has a license that prohibits it from being bundled with Linux by default. However, the [OpenZFS][3] group has ported the project to BSD and Linux so that you can run ZFS on anything from your laptop to your data center. - -Getting started with ZFS is surprisingly simple on Fedora Linux, as Sheng Mao demonstrates in his article on [setting up ZFS on Linux][4]. - -### Linux interrupts - -No matter how familiar you are with Linux, there's always an opportunity to dive deeper and discover how it achieves what it does so well. Computers running stock markets, digital film studios, audio workstations, and other performance-intensive tasks need real-time processing, while other computers can afford to be a little lazy when processing requests, and it's no small task to manage the myriad loops happening on a computer at any given millisecond. Understanding how and why the Linux kernel manages interrupt requests (IRQs) may not be vital to the everyday user, but it's a fascinating study no matter what you do on computers. Read Stephan Avenwedde's article "[How the Linux kernel handles interrupts][5]" to learn more. - -### Linux in your pocket - -Since Google's Android OS runs on a Linux kernel, many of us technically have Linux in our pockets. As comforting as that might be, Android's smooth Java frontend doesn't always provide the Linux _feeling_ many Linux users long for. And some users don't have an Android phone at all. - -The good news is that you can use Linux on your Android or iOS device, complete with a terminal, Bash, Python, a package manager, and all the other things you love about your favorite open source desktop OS. - -If you're on Android, read my article about [Termux][6]. And if you're on iOS, read Lee Tusman's excellent article about [running a Linux command line on your iOS device][7]. - -### New commands on Linux - -Time marches on, and sometimes the old, quaint commands of yesteryear are insufficient for modern systems. Although your muscle memory may cling to commands like `crontab` and `ifconfig` (and `iwconfig` and `wpa_supplicant`), there are perfectly good replacements for these and more. If you can't bring yourself to abandon your old commands, get familiar with [Bash aliases][8] because these new commands are worth learning. - - * Drop `ifconfig` for `nmcli`. Look, at some point, you have to admit that the unholy combination of `ifconfig` plus `iwconfig` and a foray into `wpa_supplicant` (which you secretly dropped long ago in favor of `wicd` anyway) just isn't efficient. Linux uses `nmcli` now, and it's become a highly usable, sometimes even intuitive way to interface with your network. Read Dave McKay's excellent [nmcli tutorial][9]. - * Cronjobs, `at`, and `batch` are uniquely timeless commands that probably ought never be replaced. They're great for quick and simple scheduling, but for complex jobs, you might find some features you like in a supplement to them: systemd timers. David Both provides an extensive [systemd timers tutorial][10] that demonstrates how to write and monitor your important custom system tasks. - * `gcore` and `gdb` are important debuggers that developers may be familiar with. A new take on `gcore` functionality is Microsoft's ProcDump, which obtains a core dump of a process ID (PID) so that you can analyze it with `gdb`. It's more an alternative than a replacement, but it's worth trying if you're curious about different tools. Read Guarav Kamathe's [ProcDump tutorial][11] for more information. - - - -### The cloud runs on Linux - -As "the cloud" continues full steam ahead, Linux remains its main driving force. The cloud is a collection of computers (nodes) with a massively distributed filesystem (such as [Ceph][12]), and it's commonly managed with Kubernetes ("_KOO-burr-net-eez"_] or [OpenShift][13]. - -Regardless of how well you know Linux on your laptop or desktop or even in your private data center, there's a whole new world of Linux experimentation available in containers running on the cloud. It can take some adjustment to learn how to get comfortable in an ephemeral container, but with some practice and a little context, you can build some interesting systems and then orchestrate them (that is, cause them to update, scale, and perform as needed) with Kubernetes. - -Jiaqi Liu wrote one of the best overviews of the cloud workflow in "[A beginner's guide to Kubernetes container orchestration][14]." Read it, and then download Chris Collins' [Kubernetes eBook][15] to build your own cloud at home on a Raspberry Pi cluster. - -### Open source growth - -Linux users relish the consistency and stability of Linux, and it's a testament to the original Unix system design that the OS can stay the same while also pushing its boundaries into exciting new forms of technology. Part of the fun of Linux and open source is the sense of discovery you get when you start learning a new command and the sense of accomplishment when it works to make your life easier. Take a look at the latest Linux developments, and get started with something new today! - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/11/linux-2020 - -作者:[Seth Kenlon][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/seth -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/car-penguin-drive-linux-yellow.png?itok=twWGlYAc (Penguin driving a car with a yellow background) -[2]: https://opensource.com/resources/linux -[3]: https://openzfs.org/wiki/Main_Page -[4]: https://opensource.com/article/20/10/zfs-dnf -[5]: https://opensource.com/article/20/10/linux-kernel-interrupts -[6]: https://opensource.com/article/20/8/termux -[7]: https://opensource.com/article/20/9/run-linux-ios -[8]: https://opensource.com/article/19/7/bash-aliases -[9]: https://opensource.com/article/20/7/nmcli -[10]: https://opensource.com/article/20/7/systemd-timers -[11]: https://opensource.com/article/20/7/procdump-linux -[12]: https://opensource.com/business/15/1/introduction-ceph-storage-openstack -[13]: https://www.redhat.com/en/technologies/cloud-computing/openshift -[14]: https://opensource.com/article/20/6/container-orchestration -[15]: https://opensource.com/downloads/kubernetes-raspberry-pi diff --git a/sources/tech/20201103 27 Super Cool Raspberry Pi Zero W Projects for DIY Enthusiasts.md b/sources/tech/20201103 27 Super Cool Raspberry Pi Zero W Projects for DIY Enthusiasts.md deleted file mode 100644 index e315657689..0000000000 --- a/sources/tech/20201103 27 Super Cool Raspberry Pi Zero W Projects for DIY Enthusiasts.md +++ /dev/null @@ -1,364 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (27 Super Cool Raspberry Pi Zero W Projects for DIY Enthusiasts) -[#]: via: (https://itsfoss.com/raspberry-pi-zero-projects/) -[#]: author: (Chinmay https://itsfoss.com/author/chinmay/) - -27 Super Cool Raspberry Pi Zero W Projects for DIY Enthusiasts -====== - -The small form factor of the [Raspberry Pi Zero W][1] enables a new range of projects. In fact, a lot of people use the Pi Zero in the final version of the project after prototyping on a different full-sized Pi board. And, that’s because it consumes much less power compared to the flagship Pi boards and makes it ideal to build battery powered gadgets. - -Preview | Product | Price | ----|---|---|--- -![CanaKit Raspberry Pi Zero W \(Wireless\) Complete Starter Kit - 16 GB Edition][2] ![CanaKit Raspberry Pi Zero W \(Wireless\) Complete Starter Kit - 16 GB Edition][2] | [CanaKit Raspberry Pi Zero W (Wireless) Complete Starter Kit - 16 GB Edition][3] | $32.99[][4] | [Buy on Amazon][5] - -After scouring [Instructables][6], [Reddit][7], [Hackaday][8], other maker oriented communities and my own experience with Pi, I have compiled a list of projects built around the Raspberry Pi Zero and the Raspberry Pi Zero W. The community is extremely innovative and all these projects make impressive use of various features of this maker board. - -So, in addition to the awesome list of [Raspberry Pi Projects][9] that we covered earlier, here, we will be focusing on Raspberry Pi Zero! - -### Top Creative Projects You Can Build With Raspberry Pi Zero - -![][10] - -Of course, you’re free to use some [Raspberry Pi Zero alternatives][11] and try the same project ideas mentioned below. - -#### 1\. Portable Game Console - -This is by far my favorite project built around the Raspberry Pi Zero, hence featured at the top. Today we have emulators for most of the retro games. This project puts the Pi Zero in the classic game-boy form factor. You can play most of your favorite retro games and you can play them anywhere. - -This project is also beautifully documented in YouTube video(s) and on Instructables. - -[Portable Game Console][12] - -#### 2\. DIY Smart Speaker Powered by Alexa - -Amazon’s Alexa has always been very tinkerer friendly and makers around the world have built all kinds of Alexa based devices. This project also adds RGB programmable LED’s to make it look a little more like the echo speaker. - -[DIY Smart Speaker][13] - -#### 3\. Home Network Music System - -Getting a proper home music system setup is usually expensive. However, with the inexpensive Raspberry Pi Zero, you can utilize your MP3 collection to set up a home network music system. - -This project uses the [PiDrive][14], PiDrive is basically a Raspberry Pi Zero W attached to a hard disk. Unfortunately, I think it has been discontinued but you can also build it using a normal Pi Zero W in different configurations. You can play local music or even stream from different services. - -[Pi MusicBox][15] - -#### 4\. Network Ad Blocker using Pi-Hole - -This is something I personally use on a daily basis and it has completely changed my internet experience. If you’re someone who doesn’t want to see advertisements while you browse around online, an Ad blocker using Raspberry Pi would be exciting, right? - -[Pi-Hole][16] on a Raspberry Pi can block all the ads on your entire network. Anyone on the network with an active Pi-Hole will have an ad-free experience. It also speeds up your internet experience since the bandwidth used by ads is freed up. - -You can watch Linus’ video to get an idea or refer to the detailed post in Linus Tech Tips forums linked in the button below. - -[Ad-Blocker using Pi Hole][17] - -#### 5\. AirPlay Speaker using Raspberry Pi Zero - -![][18] - -AirPlay is a chromecast equivalent in the Apple ecosystem, you can cast media from your Apple devices to an AirPlay supported speaker. - -This project is built very well with 3D printed parts and you can find detailed instructions for it. - -[AirPlay Speaker][19] - -#### 6\. DIY Google Home with a Bluetooth Speaker - -![][20] - -This is another nifty little project which is a tinkerer’s dream. Building your own smart speaker powered by the Google Assistant? Indeed, exciting! - -Here, a Pi Zero is paired with a Bluetooth speaker, microphone and the Google Assistant SDK to achieve some functionalities. You can ask questions and do most of the things you can with the official Google Home device. This project does not handle the casting part of the Google Home experience though. - -[DIY Google Home][21] - -#### 7\. Pedal Pi – Raspberry Pi Zero Guitar Pedal - -Pedal Pi is a programmable Lo-Fi guitar pedal built using the Pi Zero where you can program your own custom effects. The project is fully open source (including the hardware) as well. It goes to prove how versatile the Pi Zero can be. - -It can be an incredibly fun experience for people who are makers and also into digital music. - -[Pedal Pi][22] - -#### 8\. ZeroBot – FPV Robot - -There are a lot of different robots you can build using the Pi Zero. It is almost perfect for any kind of robot that you can think of building. It has ample amount of [GPIO][23], a decent processor, a camera interface and the choice of software stack and programming language. - -The ZeroBot is an [FPV][24] bot which also has a camera and is able to transmit what it is seeing. It even features a completely 3D printed body. - -You can find [detailed instructions here][25]. - -#### 9\. WiFi Security Camera - -Raspberry Pi Zero W comes with a CSI connector where you can connect the camera module. This compatibility also lets you easily build a WiFi-powered CCTV camera(s) for your home at a very reasonable price compared to commercial products. - -The [motionEyeOS][26] is a purposely built to convert your SBC (in this case the Pi Zero) to a surveillance system. You can find more information in the video above or head to the link below. - -[WiFi Security Camera][27] - -#### 10\. PIX-E GIF Camera - -![][28] - -GIF’s have taken over social media and all IM platforms. Just thinking of a dedicated GIF camera makes me chuckle. That’s exactly what this project is all about. I am very curious about how it would turn out with the new HQ camera which has a much better image quality. - -This [project has been documented][29] really well with accompanying videos on Hackaday - -[GIF Camera][29] - -#### 11\. Wearable Timelapse Camera - -One of the sleekest camera project I’ve seen, this is a wearable camera. You can take time-lapses, and videos from a first person’s perspective. - -This is a project by Adafruit and is documented really well. Refer to the video above to get an idea or head to the link below. - -[Wearable Timelapse Camera][30] - -#### 12\. Telescope Camera - -![][31] - -Building a telescope camera is one of the most popular camera based applications for the Pi Zero. Makers around the world have taken amazing pictures with their DIY telescope cameras. - -[Telescope Camera][32] - -#### 13\. Kodi on Pi Zero - -Kodi is one of the best open source [media server software][33] for making a media box for your TV. The amazing part is that it also runs on the Pi Zero W. - -Now you can DIY an alternative to the Amazon Fire TV Stick. - -[Kodi on Pi Zero][34] - -#### 14\. OctoPrint – Wireless 3D Printing - -![][35] - -If you are into 3D printing, you would have heard about [OctoPrint][36] at some point. OctoPrint unlocks many feature comforts we enjoy with normal printers like sending print jobs directly from the computer to the 3D printer instead of using a micro SD card. You can also attach a webcam and monitor your prints and control all aspects of the printer. - -OctoPrint is usually used with the bigger Pi’s but it can also be used with the Raspberry Pi Zero W with some soldering and mods. It is important to note that there is low WiFi interference when using the Pi Zero since it can impact prints. Here are some references talking about OctoPrint on Pi Zero to help you build it yourself: - - * [OctoPrint on Pi Zero][37] - * [OctoPrint on Pi Zero (from Prusa 3D)][38] - - - -#### 15\. Pirate Radio Station - -This seems like quite a fun idea, you can actually make the Pi Zero W broadcast using FM. - -It also happens to be a simple project and you don’t need many additional components either. You can be your own neighborhood RJ, do make sure to check out the legal aspects of a pirate radio station in your country. - -[Pirate Radio Station][39] - -#### 16\. IoT Smart Alarm Clock - -![][40] - -Here’s a project making something which might sound very trivial but nevertheless is super cool and underrated. - -The freedom of being able to program your own alarm clock, automating it with scripts and making your life a little easier and fun (and still not waking up) sounds exciting! - -[IoT Smart Alarm Clock][41] - -#### 17\. Pi Zero Tesla Coil - -This is the most unexpected yet an amazing project I’ve come across which uses the Pi Zero W. - -It doesn’t get cooler than playing music on a [tesla coil][42] using the Pi. Make sure you watch the video. - -[Tesla Coil with Pi Zero][43] - -#### 18\. Network Performance Monitoring using Pi Zero - -![][44] - -If you like to keep tabs on your network, you should check out this project. - -This is a [bandwidth monitor][45] built using the Pi Zero W that features a nifty little screen to display important stats. - -[Bandwidth Monitor][45] - -#### 19\. Pi Pod – Raspberry Pi Zero Music Player - -![][46] - -It’s 2020 and you might be thinking who would want a portable music player since mobile phones have replaced them almost entirely. But, there are always people (including myself) who would want a device dedicated to music and does not do anything else. - -This project features the Raspberry Pi Zero W in another form and looks pretty neat. It’s called the **Pi Pod**. - -You can also design your own 3D printable enclosure and customize every element of the music player. - -[Pi Pod][47] - -#### 20\. Raspberry Pi Drone - -![][48] - -The Pi Zero packs in enough features and processing power for it be at the heart of a drone. It is light weight, cheaper than some alternative drone specific boards too. You also get the freedom of using different firmware(s) or code one on your own. - -There are also many open source designs available for the frame of the drone on [Thingiverse.][49] - -[Pi Drone][50] - -#### 21\. Internet Connected Info Display - -The Pi Zero W is capable of connecting to the internet via WiFi, it also has all the GPIO and display outputs to make a highly functional device to display information from the internet. - -The freedom of programming means that you can have the display show any information you need. Your google calendar events, stock prices and anything you can find on the internet. -Here are a couple of interesting projects which are built around this idea. - - 1. [YouTube Subscriber Counter][51] - 2. [Raspberry Pi Internet Connected Information Display][52] - - - -#### 22\. Raspberry Pi Pocket Projector - -Ever since Texas Instruments came out with the mini projector evaluation board, a Raspberry Pi Zero based projector has been a very popular project. - -If you can get your hands on the projector module, this can be a very interesting build. This is not a beginner-friendly project, but a tinkerer should feel right at home. You can find all the relevant details from the video above. - -#### 23\. VPN Server - -![][53] - -In today’s world, extra care needs to be taken about companies barging into one’s privacy and using a VPN is becoming more and more commonplace. - -Fret not, you can utilize the Raspberry Pi Zero W with [OpenVPN][54] to add an extra layer of security to your home network. This can be a great for small families where everyone in the house can be protected and don’t need to separate VPN subscriptions. - -[VPN Server][55] - -#### 24\. Weather Station - -![][56] - -This is a very cool project, a complete weather station which can display various weather metrics for the day and forecasts too. It even includes a 3D printed case which looks pretty sharp. The amazing part is that you can use the display to show things other than weather as well. - -As I also noticed in another similar project on [Instructables][57], you may also tweak it with your own custom database and website. - -[Weather Station][58] - -#### 25\. Ambient Lighting System for TV - -An ambient lighting system enhances the TV experience, this is another amazing project involving the Raspberry Pi Zero. - -In real life this effect feels like a dynamic portrait mode applied to the screen and whatever is being shown on the screen, makes the experience a lot immersive. - -GreatScott (a popular YouTuber) for content based around electronics and DIY shows you around with the project in the video above. You may also refer to the written instructions from the link below. - -[Ambient Lighting System][59] - -#### 26\. Wireless Network Printer - -![][60] - -The Pi Zero W is a great board to make any old printer free from being fixed to one computer and have the freedom of placing it anywhere. - -This way print jobs can be sent from multiple computers, phones on the same network. This is a quality of life improvement which is highly underrated, even in households. - -This project utilizes [CUPS][61] running on Pi Zero W to make your printer wireless. - -[Wireless Network Printer][62] - -#### 27\. Pi Zero Cluster - -![][63] - -You can pack in 10’s of these tiny computers together to have access to massive amounts of parallel processing. The GPU’s on these SBC’s can be utilized for challenging compute needs. - -Regular Raspberry Pi’s have long been used to make clusters and Raspberry Pi based super computers consisting of 100’s – 1000’s of Pi’s. Since the introduction of the Pi Zero with it’s lower price and size, it is possible to put more of them into a small space. - -There are many custom boards which are built to hold multiple Pi Zero’s. - -[Pi Zero Cluster][64] - -#### Closing Thoughts - -The projects featured here are only a tip of the iceberg. You can find many more projects if you look around on the internet. The versatility of the Raspberry Pi Zero is unprecedented, combined with its affordability it is one of the most used SBC by makers and tinkerers around the world. - -What did you build with the Raspberry Pi Zero ? Put it in the comments below along with your favorite projects. - --------------------------------------------------------------------------------- - -via: https://itsfoss.com/raspberry-pi-zero-projects/ - -作者:[Chinmay][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://itsfoss.com/author/chinmay/ -[b]: https://github.com/lujun9972 -[1]: https://itsfoss.com/raspberry-pi-zero-w/ -[2]: https://i1.wp.com/m.media-amazon.com/images/I/517BwcAPmTL._SL160_.jpg?ssl=1 -[3]: https://www.amazon.com/dp/B072N3X39J?tag=chmod7mediate-20&linkCode=ogi&th=1&psc=1 (CanaKit Raspberry Pi Zero W (Wireless) Complete Starter Kit - 16 GB Edition) -[4]: https://www.amazon.com/gp/prime/?tag=chmod7mediate-20 (Amazon Prime) -[5]: https://www.amazon.com/dp/B072N3X39J?tag=chmod7mediate-20&linkCode=ogi&th=1&psc=1 (Buy on Amazon) -[6]: https://www.instructables.com -[7]: https://www.reddit.com/r/raspberry_pi -[8]: https://hackaday.com -[9]: https://itsfoss.com/raspberry-pi-projects/ -[10]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/10/raspberry-pi-zero-w-projects.png?resize=800%2C450&ssl=1 -[11]: https://itsfoss.com/raspberry-pi-zero-alternatives/ -[12]: https://www.instructables.com/DIY-Raspberry-Pi-Zero-Handheld-Game-Console/ -[13]: https://www.instructables.com/Alexa-Assistant-With-a-10-Raspberry-Pi-Zero-W-and-/ -[14]: https://www.raspberrypi.org/blog/meet-314gb-pidrive/ -[15]: https://www.instructables.com/Raspberry-Pi-Home-Network-Music-System/ -[16]: https://pi-hole.net/ -[17]: https://linustechtips.com/main/topic/1094810-pi-hole-setup-tutorial/ -[18]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/10/pi-airplay-speaker.png?resize=800%2C578&ssl=1 -[19]: https://www.hackster.io/fvdbosch/raspberry-pi-zero-airplay-speaker-d99feb -[20]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/10/pi-google-home.png?resize=800%2C541&ssl=1 -[21]: https://www.instructables.com/DIY-Google-Home-With-Bluetooth-Speaker-on-Raspberr/ -[22]: https://www.instructables.com/Raspberry-Pi-Zero-Guitar-Pedal/ -[23]: https://en.wikipedia.org/wiki/General-purpose_input/output -[24]: https://en.wikipedia.org/wiki/First-person_view_(radio_control) -[25]: https://hackaday.io/project/25092-zerobot-raspberry-pi-zero-fpv-robot -[26]: https://github.com/ccrisan/motioneyeos -[27]: https://maker.pro/raspberry-pi/projects/how-to-build-a-cctv-network-camera-with-raspberry-pi-zero-w-and-motionpie -[28]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/10/pi-gif-camera.jpg?resize=800%2C633&ssl=1 -[29]: https://hackaday.io/project/16358-pix-e-gif-camera -[30]: https://learn.adafruit.com/raspberry-pi-wearable-time-lapse-camera/overview -[31]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/10/pi-telescope-camera.png?resize=800%2C555&ssl=1 -[32]: https://www.instructables.com/Astrophotography-With-the-Raspberry-Pi-Zero/ -[33]: https://itsfoss.com/best-linux-media-server/ -[34]: https://dronebotworkshop.com/kodi-raspberry-pi/ -[35]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/10/octoprint-logo.png?resize=515%2C421&ssl=1 -[36]: https://octoprint.org -[37]: https://toglefritz.com/how-to-run-octoprint-on-a-raspberry-pi-zero/ -[38]: https://help.prusa3d.com/en/article/octoprint-building-an-image-for-raspberry-pi-zero-w_2182 -[39]: https://makezine.com/projects/pirate-radio-throwies/ -[40]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/10/pi-iot-clock.png?resize=800%2C472&ssl=1 -[41]: https://hackaday.io/project/19230-iot-smart-alarm-clock -[42]: https://en.wikipedia.org/wiki/Tesla_coil -[43]: https://www.extremeelectronics.co.uk/electronic-tesla-coils/pi-zero-tesla-coil/ -[44]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/10/pi-network-performance.png?resize=800%2C432&ssl=1 -[45]: https://www.instructables.com/Bandwidth-Monitor/ -[46]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/10/pi-pod-music-player.png?resize=743%2C542&ssl=1 -[47]: https://www.raspberrypi.org/blog/pipod-pi-zero-music-player/ -[48]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/10/pi-zero-drone.png?resize=736%2C552&ssl=1 -[49]: https://thingiverse.com -[50]: https://www.hackster.io/12590/pi0drone-a-200-smart-drone-with-the-pi-zero-4fec08?f=1 -[51]: https://www.youtube.com/watch?v=afY_xHqQu-s -[52]: https://www.hackster.io/fvdbosch/raspberry-pi-zero-internet-connected-information-display-5cae96 -[53]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/10/pi-open-vpn.jpg?resize=800%2C296&ssl=1 -[54]: https://openvpn.net/ -[55]: https://circuitdigest.com/microcontroller-projects/turn-your-raspberry-pi-zero-in-to-a-vpn-server-using-openvpn -[56]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/10/pi-zero-weather-station.png?resize=800%2C599&ssl=1 -[57]: https://www.instructables.com/Complete-Raspberry-Pi-Weather-Station/ -[58]: https://www.hackster.io/hartmut-wendt/raspberry-pi-based-weather-station-a9a7dd -[59]: https://www.instructables.com/Make-Your-Own-Ambient-Lighting-With-the-Raspberry-/ -[60]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/10/pi-wireless-printer.jpg?resize=800%2C450&ssl=1 -[61]: https://www.cups.org/ -[62]: https://maker.pro/raspberry-pi/projects/how-to-turn-a-usb-printer-into-a-wireless-printer-with-raspberry-pi-zero-w -[63]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/10/pi-zero-cluster.png?resize=800%2C531&ssl=1 -[64]: https://magpi.raspberrypi.org/articles/clusterhat-review-cluster-hat-kit diff --git a/sources/tech/20201103 A Brief History of Ubuntu Touch.md b/sources/tech/20201103 A Brief History of Ubuntu Touch.md deleted file mode 100644 index c770c2e613..0000000000 --- a/sources/tech/20201103 A Brief History of Ubuntu Touch.md +++ /dev/null @@ -1,154 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (A Brief History of Ubuntu Touch) -[#]: via: (https://itsfoss.com/ubuntu-touch/) -[#]: author: (John Paul https://itsfoss.com/author/john/) - -A Brief History of Ubuntu Touch -====== - -Sensing the tech trend, Ubuntu tried its hands on creating a Linux-based mobile operating system. The first announcement came a decade back and six years down the line, Ubuntu closed the curtains on the project. - -What went wrong? How it started? Is Ubuntu Touch still alive? Let’s take a look at the history of Ubuntu Touch in chronological order. - -### Shuttleworth Announced Ubuntu Touch - -![][1] - -The [Ubuntu Touch project][2] began with a blog post by Canonical founder [Mark Shuttleworth][3]. The [blog post][4], dated October 31, 2011, started with a bold prediction: “By 14.04 LTS Ubuntu will power tablets, phones, TVs and smart screens from the car to the office kitchen, and it will connect those devices cleanly and seamlessly to the desktop, the server and the cloud.” - -Shuttleworth went on to explain that this move would be accomplished mainly through the use of the company’s new desktop environment, Unity. (Unity was introduced in Ubuntu 10.10.) “Unity, the desktop interface in today’s Ubuntu 11.10, was designed with this specific vision in mind.” - -The whole idea behind Unity was to create an interface that would work on different screen resolutions. - -_**“Unity’s core elements are arranged in exactly the way we need to create coherence across all of those devices. This was the origin of the name Unity – a single core interface framework, that scales across all screens, and supports all toolkits.”**_ - -Shuttleworth said that this move was motivated by the increasing use of mobile devices. “Make no mistake – just as the world is changing for manufacturers so is it changing for Linux distributions. Today, 70% of people in Egypt access the Internet solely via the phone. Even in the US that figure is a startling 25%.” - -### Ubuntu Touch is Released to the World - -![][5] - -The Unity desktop environment was originally introduced in the netbook version of Ubuntu 10.10. However, the phone interface wouldn’t be seen by the public until 2013. [Mark Shuttleworth demoed][6] it at the 2013 CES. - -Ubuntu Touch 1.0 was baked into the [Ubuntu 13.10 release][7]. This version primarily supported “Galaxy Nexus and Nexus 4 phone” with other images being available, as well. - -The [system requirements][8] for Ubuntu Touch looked a little bit like this: - -| Entry-level Ubuntu smartphone | High-end Ubuntu “superphone” ----|---|--- -Processor architecture | 1Ghz Cortex A9 | Quad-core A9 or Intel Atom -Memory | 512MB – 1GB | Min 1GB -Flash storage | 4-8GB eMMC + SD | Min 32GB eMMC + SD -Multi-touch | Yes | Yes -Desktop convergence | No | Yes - -![Convergence concept][9] - -Note: The last item on the above list (**desktop convergence**) might be a new idea to some people. This meant that you could use your Ubuntu Touch device like a phone, but you could also hook it up to a display, keyboard, and mouse to use it as a desktop. Unfortunately, Ubuntu Touch never gained this feature. - -### Ubuntu Tries to Crowdfund a Phone - -To show off what an ideal Ubuntu phone would look like, Canonical started a crowdfunding campaign to finance the [Ubuntu Edge][10] on July 22, 2013. The goal was to raise $32 million in a month to produce 40,000 devices. - -According to the campaign’s page, Canonical hoped to use the new device “to provide a low-volume, high-technology platform, crowdfunded by enthusiasts and mobile computing professionals. A pioneering project that accelerates the adoption of new technologies and drives them down into the mainstream.” - -The Ubuntu Edge was considered high-end at the time with the following specs: - -Mobile OS | Dual-boots Android and Ubuntu mobile ----|--- -Desktop OS | Ubuntu Desktop -RAM | 4GB -Internal storage | 128GB -Screen | 720 x 1,280, 4.5 inches -Protection | Sapphire Glass -Connectivity | Dual-LTE, GSM -Speakers | Stereo -Battery | Silicon-anode Li-ion -Price | $695 - -Interestingly, several large companies pledged money. For example, [Bloomberg pledged $800,000][11]. They made this pledge because they believed that Ubuntu Touch “could benefit its clients and the future of mobile Relevant Products/Services computing.” - -Ultimately, the campaign didn’t reach its goal. It only reached $12.7 million or 37% of the goal. The amount raised was the biggest a crowdfunding campaign ever saw. - -### Ubuntu Touch Goes into Production (Sort of) - -Though Canonical failed to make its own hardware, it continued working on the software part i.e., developing the Ubuntu Touch mobile operating system. - -![][12] - -Ubuntu Touch was released to device makers in 2014. That same year, [two device makers committed][13] to produce Ubuntu phones. These two companies, Chinese Meizu and Spanish BQ, weren’t exactly global household names, but Shuttleworth said that was all part of the plan. - -_“While we’re happy to work with household names, we want to be involved with partners for whom we can be a significant part of their story, rather than being appended to the more complicated story of other brands.”_ - -Both companies produced and released several phones with Ubuntu Touch as the main operating system. BQ also released an Ubuntu Touch tablet. However, no other manufacturer signed up to make Ubuntu Touch devices. - -### Canonical Discontinues Ubuntu Touch - -![Unity 8 was in beta when Ubuntu discontinued Unity and Ubuntu Touch project][14] - -In early April of 2017, Mark Shuttleworth made another [announcement][15]. After mentioning that Canonical had experienced an “excellent quarter and excellent year”, Shuttleworth [announced the end of the Ubuntu Touch and Unity][16]. “I’m writing to let you know that we will end our investment in Unity8, the phone and convergence shell.” Instead, Canonical would focus on desktop Ubuntu. - -He continued: - -> I took the view that, if convergence was the future and we could deliver it as free software, that would be widely appreciated both in the free software community and in the technology industry, where there is substantial frustration with the existing, closed, alternatives available to manufacturers. I was wrong on both counts. In the community, our efforts were seen fragmentation not innovation. And industry has not rallied to the possibility, instead taking a ‘better the devil you know’ approach to those form factors, or investing in home-grown platforms. What the Unity8 team has delivered so far is beautiful, usable and solid, but I respect that markets, and community, ultimately decide which products grow and which disappear. - -He closed by saying that it was a hard decision to make because of his strong belief in the future of convergence. - -### The Community Keeps the Project Alive - -When Shuttleworth’s announcement hit the internet, all the supporters of Ubuntu Touch were shocked. Many were unsure of what would happen to the devices that they owned. Thankfully, the community came to the rescue. - -![][17] - -Shortly after Shuttleworth’s announcement, Marius Gripsgård [announced][18] that the UBports team would be keeping Ubuntu Touch alive. UBports was already well known in the Ubuntu Touch community for their work on porting it to more devices. - -Several other projects tried to do the same with the desktop version of Unity, but most did not last long. One of them had the inventive name of Yunit but I guess it is not actively developed anymore. - -[UBports is the only project][2] that is keeping Ubuntu Touch alive by continuously working on its development. - -### Epilogue - -Ubuntu Touch was not the success that Canonical wanted it to be. It was too early for the market. However, it did lay the groundwork for the Linux phones that we have now. - -I believe that the [PinePhone][19] and the [Purism Librem 5][20] phone would not have come about without Ubuntu Touch sparking interest in a Linux phone. At the same time, the Canonical engineers and programmers solved problems that laid the groundwork for these modern phones. You don’t get successes without a few failures along the way. - -If you found this article interesting, please take a minute to share it on social media, Hacker News, or [Reddit][21]. - --------------------------------------------------------------------------------- - -via: https://itsfoss.com/ubuntu-touch/ - -作者:[John Paul][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://itsfoss.com/author/john/ -[b]: https://github.com/lujun9972 -[1]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/10/ubuntu-touch-devices.jpg?resize=800%2C497&ssl=1 -[2]: https://ubuntu-touch.io/ -[3]: https://en.wikipedia.org/wiki/Mark_Shuttleworth -[4]: https://www.markshuttleworth.com/archives/820 -[5]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/10/ubuntu-touch-tablet.jpg?resize=625%2C363&ssl=1 -[6]: https://www.youtube.com/watch?v=RO7QbCqFY7Y -[7]: https://wiki.ubuntu.com/SaucySalamander/ReleaseNotes#Ubuntu_for_Phones -[8]: https://web.archive.org/web/20130326085927/http://www.ubuntu.com/devices/phone/operators-and-oems -[9]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2016/02/convergence-ubuntu.jpg?resize=1024%2C588&ssl=1 -[10]: https://www.indiegogo.com/projects/ubuntu-edge#/ -[11]: https://web.archive.org/web/20131020144457/http://www.cio-today.com/story.xhtml?story_title=Ubuntu_Edge_Smartphone_Raises_Millions__Falls_Short&story_id=10200A158ZW0 -[12]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2015/02/image-phone-overview.jpg?resize=567%2C302&ssl=1 -[13]: https://www.cnet.com/news/ubuntu-touch-gets-grip-on-its-first-phone-makers/ -[14]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/02/unity8_ubports.png?resize=800%2C450&ssl=1 -[15]: https://ubuntu.com/blog/growing-ubuntu-for-cloud-and-iot-rather-than-phone-and-convergence -[16]: https://itsfoss.com/ubuntu-unity-shutdown/ -[17]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/02/ubports.jpeg?resize=720%2C480&ssl=1 -[18]: https://news.softpedia.com/news/ubuntu-touch-and-unity-8-are-not-dead-ubports-community-will-keep-them-alive-514620.shtml -[19]: https://itsfoss.com/pinephone/ -[20]: https://itsfoss.com/librem-linux-phone/ -[21]: https://%0Areddit.com/r/linuxusersgroup diff --git a/sources/tech/20201106 I-m doing another Recurse Center batch.md b/sources/tech/20201106 I-m doing another Recurse Center batch.md deleted file mode 100644 index 1efce36ebb..0000000000 --- a/sources/tech/20201106 I-m doing another Recurse Center batch.md +++ /dev/null @@ -1,79 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (I'm doing another Recurse Center batch!) -[#]: via: (https://jvns.ca/blog/2020/11/05/i-m-doing-another-recurse-center-batch-/) -[#]: author: (Julia Evans https://jvns.ca/) - -I'm doing another Recurse Center batch! -====== - -Hello! I’m going to do a batch (virtually) at the [Recurse Center][1], starting on Monday. I’ll probably be blogging about what I learn there, so I want to talk a bit about my plans! - -I’m excited about this because: - - * I love RC, it’s my favourite programming community, and I’ve always been able to do fun programming projects there. - * they’ve put a lot of care into building a great virtual experience (including building some very fun [custom software][2]) - * there’s a pandemic, it’s going to be cold outside, and I think having a little bit more structure in my life is going to make me a lot happier this winter :) - - - -### what’s the Recurse Center? - -The Recurse Center (which I’ll abbreviate to “RC”) is a self-directed programming retreat. It’s free to attend. - -A “batch” is 1 or 6 or 12 weeks, and the idea is that during that time, you: - - 1. choose what things you want to learn - 2. come up with a plan to learn the things (often the plan is “do some kind of fun project”, like [“write a TCP stack”][3]) - 3. learn the things - - - -Also there are a bunch of other delightful people learning things, so there’s lots of inspiration for what to learn and people to collaborate with. There are always people who are early in their programming life and looking to get their first programming job, as well as people who have been programming for a long time. - -Their business model is recruiting – they [partner with][4] a bunch of companies, and if you want a job at the end of your batch, then they’ll match you with companies, and if you accept a job with one of those companies then the company pays them a fee. - -I won’t say too much more about it because I’ve written 50+ other posts about how much I love RC on this blog that probably cover it :) - -### some ideas for what I’ll do at RC - -Last time I did RC I had a bunch of plans going in and did not do any of them. I think this time it’ll probably be the same but I’ll list my ideas anyway: here are some possible things I might do. - - * learn Rails! I’ve been making small websites for a very long time but I haven’t really worked as a professional web developer, and I think it might be fun to have the superpower of being able to build websites quickly. I have an idea for a silly website that I think would be a fun starter rails project. - * experiment with generative neural networks (I’ve been curious about this for years but haven’t made any progress yet) - * maybe finish up this “incidents as a service” system that I started a year and a half ago to help people learn by practicing responding to weird computer situations - * deal with some of the [rbspy][5] issues that I’ve been ignoring for months/years - * maybe build a game! (there’s a games theme week during the batch!) - * maybe learn about graphics or shaders? - - - -In my first batch I spent a lot of time on systems / networking stuff because that felt like the hardest thing I could do. This time I feel pretty comfortable with my ability to learn about systems stuff, so I think I’ll focus on different topics! - -### so that’s what I’ll be writing about for a while! - -I’m hoping to blog more while I’m there, maybe not “every day” exactly (it turns out that blogging every day is a lot of work!), but I think it might be fun to write a bunch of tiny blog posts about things I’m learning. - -I’m also planning to release a couple of zines this month – I finished a zine about CSS, and also wrote another entire zine about bash while I was procrastinating on finishing the CSS zine in a self-imposed “write an entire zine in October” challenge, so you should see those here soon too. I’m pretty excited about both of them. - --------------------------------------------------------------------------------- - -via: https://jvns.ca/blog/2020/11/05/i-m-doing-another-recurse-center-batch-/ - -作者:[Julia Evans][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://jvns.ca/ -[b]: https://github.com/lujun9972 -[1]: https://www.recurse.com/ -[2]: https://www.recurse.com/virtual-rc -[3]: https://jvns.ca/blog/2014/08/12/what-happens-if-you-write-a-tcp-stack-in-python/ -[4]: https://www.recurse.com/hire -[5]: https://github.com/rbspy/rbspy diff --git a/sources/tech/20201109 Program your microcontroller with MicroBlocks.md b/sources/tech/20201109 Program your microcontroller with MicroBlocks.md deleted file mode 100644 index 9325db5574..0000000000 --- a/sources/tech/20201109 Program your microcontroller with MicroBlocks.md +++ /dev/null @@ -1,144 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Program your microcontroller with MicroBlocks) -[#]: via: (https://opensource.com/article/20/11/microblocks) -[#]: author: (Don Watkins https://opensource.com/users/don-watkins) - -Program your microcontroller with MicroBlocks -====== -MicroBlocks brings a Scratch-like interface to programming the -Micro:bit, Circuit Playground Express, and other microcontroller boards. -![Computer hardware components, generic][1] - -If you like to tinker with technology, you may be familiar with programmable microcontroller boards, such as AdaFruit's [Circuit Playground Express][2] and the [BBC Micro:bit][3]. Now there's a new programming option for you to try: [MicroBlocks][4]. It's a simple Scratch-like programming interface that works well with several microcontrollers, including those two. - -I own both the Circuit Playground Express and the BBC Micro:bit and was eager to try MicroBlocks after discovering it on [Twitter][5]. - -### Install MicroBlocks - -To set up MicroBlocks on a Debian-based Linux distribution, [download][6] and install the .deb file. If you use an RPM-based Linux distribution, you can download the Linux [64-bit][7] or [32-bit][8] standalone executable. MicroBlocks also offers installers for [Windows][9], [macOS][10], and [Raspberry Pi][11]. - -MicroBlocks can also run in a Chrome, Chromium, or Edge [browser][12] using its experimental web platform, which enables special web serial connections. The Chrome web store also has a [browser extension][13] for MicroBlocks. - -### Connect your microcontroller - -Before you can access your microcontroller on Linux, you must add yourself to your computer's dialout group. Linux uses this group to communicate with serial devices, and if your user account isn't in that group, you won't be able to control your device. - -Run the following in a terminal to add yourself to the dialout group: - - -``` -`$ sudo usermod -G dialout -a `whoami`` -``` - -Log out of your desktop and then log back in (or just reboot). Then connect your BBC Micro:bit, Circuit Playground Express, or other microcontroller board to an available USB port on your computer. My [Intel NUC][14] recognized my microcontroller without issue. - -After connecting your microcontroller, you may be asked to update the device's firmware. It's safe to do so. - -![Update firmware option][15] - -(Don Watkins, [CC BY-SA 4.0][16]) - -Once that's done, you're all ready to go. - -### Start programming - -Use the programming interface to set what language you want to use when interacting with MicroBlocks. - -![MicroBlocks language options][17] - -(Don Watkins, [CC BY-SA 4.0][16]) - -You can verify that your microcontroller is connected by checking the Connect icon on the menu. - -![MicroBlocks Connection icon][18] - -(Don Watkins, [CC BY-SA 4.0][16]) - -Now you're ready to start exploring. One of my favorite ways to learn is to tinker with a user interface's different options. What makes MicroBlocks special is that it's a live coding environment, so you get to see changes you make right away. - -Try this: Go to the Display category (in the left-hand column) and drag the display array into the scripting area. Use the menu to change A to B in one of them. - -Click on a programming block, and your code, simple though it may be, runs immediately on the board. - -### Use programming blocks - -If you are familiar with [Scratch][19], you are likely to find MicroBlocks extremely easy to use. Students love it because of the instant feedback from the board and the program. - -My first program was very simple. I wanted to make a simple "smiley face" on my Micro:bit. - -First, I clicked on the Control block and selected: "When button 'a' is pressed." - -Then I selected a smiley face from the LED Display library and connected that to the Control block.  - -Finally, I pressed Button A on my Micro:bit. Feedback is instantaneous. - -![Smiley face displayed on Micro:bit][20] - -(Don Watkins, [CC BY-SA 4.0][16]) - -### Save your code - -Saving your program is easy. On the top menu bar, click on the third icon from the left (the document icon). Choose the Save option from the drop-down menu. - -![Save file in MicroBlocks][21] - -(Don Watkins, [CC BY-SA 4.0][16]) - -Try experimenting with the interface to program your board however you want. For my second program, I used the Control and LED Display blocks to spell out "Bills," which is my favorite NFL team. But there are lots of other functions available, so try designing something that interests you. - -!["Bills" on Micro:Bit][22] - -(Don Watkins, [CC BY-SA 4.0][16]) - -### Do more with MicroBlocks - -Be sure to check out the [quickstart][23] guide on the MicroBlocks website for more information. The site also contains [activity guides][24] with easy-to-follow code examples for students and teachers. These will help anyone get started programming the Micro:bit or the Circuit Playground Express with MicroBlocks. - -MicroBlocks is fully [open source][25] and released under the [Mozilla Public License 2.0][26]. - -MicroBlocks is still under active development by the core team, and they're not currently soliciting code contributions or pull requests. However, they are interested in any MicroBlocks tutorials, lesson plans, or examples from the community, so please [contact them][27] if you have something to share. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/11/microblocks - -作者:[Don Watkins][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/don-watkins -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/hardware_disk_components.png?itok=W1fhbwYp (Computer hardware components, generic) -[2]: https://opensource.com/article/19/7/circuit-playground-express -[3]: https://opensource.com/article/19/8/getting-started-bbc-microbit -[4]: https://microblocks.fun/ -[5]: https://twitter.com/microblocksfun -[6]: https://microblocks.fun/download -[7]: https://microblocks.fun/downloads/latest/standalone/ublocks-linux64bit.zip -[8]: https://microblocks.fun/downloads/latest/standalone/ublocks-linux32bit.zip -[9]: https://microblocks.fun/downloads/latest/packages/microBlocks%20setup.exe -[10]: https://microblocks.fun/downloads/latest/packages/MicroBlocks.app.zip -[11]: https://microblocks.fun/downloads/latest/packages/ublocks-armhf.deb -[12]: https://microblocks.fun/run/microblocks.html -[13]: https://chrome.google.com/webstore/detail/microblocks/cbmcbhgijipgdmlnieolilhghfmnngbb?hl=en -[14]: https://opensource.com/article/20/9/linux-intel-nuc -[15]: https://opensource.com/sites/default/files/uploads/microblocks_update-firmware.png (Update firmware option) -[16]: https://creativecommons.org/licenses/by-sa/4.0/ -[17]: https://opensource.com/sites/default/files/uploads/microblocks_set-language.png (MicroBlocks language options) -[18]: https://opensource.com/sites/default/files/uploads/microblocks_connected.png (MicroBlocks Connection icon) -[19]: https://scratch.mit.edu/ -[20]: https://opensource.com/sites/default/files/uploads/smileyface.jpg (Smiley face displayed on Micro:bit) -[21]: https://opensource.com/sites/default/files/uploads/microblocks_save.png (Save file in MicroBlocks) -[22]: https://opensource.com/sites/default/files/uploads/microblocks_bills.png ("Bills" on Micro:Bit) -[23]: https://microblocks.fun/learn#getstarted -[24]: https://microblocks.fun/learn#activity_cards -[25]: https://bitbucket.org/john_maloney/smallvm/src/master/ -[26]: https://www.mozilla.org/en-US/MPL/2.0/ -[27]: https://microblocks.fun/info#contact diff --git a/sources/tech/20201109 Set up Minishift and run Jenkins on Linux.md b/sources/tech/20201109 Set up Minishift and run Jenkins on Linux.md deleted file mode 100644 index 44d5f2ca9a..0000000000 --- a/sources/tech/20201109 Set up Minishift and run Jenkins on Linux.md +++ /dev/null @@ -1,311 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Set up Minishift and run Jenkins on Linux) -[#]: via: (https://opensource.com/article/20/11/minishift-linux) -[#]: author: (Jessica Cherry https://opensource.com/users/cherrybomb) - -Set up Minishift and run Jenkins on Linux -====== -Install, configure, and use Minishift to create your first pipeline. -![cubes coming together to create a larger cube][1] - -[Minishift][2] is a tool that helps you run [OKD][3] (Red Hat's open source OpenShift container platform) locally by launching a single-node OKD cluster inside a virtual machine. It is powered by [Kubernetes][4], which is one of my favorite things to talk about. - -In this article, I will demonstrate how to get started with Minishift on Linux. This was written for Ubuntu 18.04, and you'll need [sudo access][5] on your Linux machine to run some commands. - -### Prerequisites - -Before starting the installation, your Linux machine must have either [KVM][6] for Linux or [VirtualBox][7], which runs on every platform. This demo uses KVM, which you can install along with all the required dependencies: - - -``` -$ sudo apt install qemu-kvm \ -libvirt-clients libvirt-daemon-system \ -bridge-utils virt-manager   -``` - -After installing KVM, you must make some modifications to allow your user to use it. Specifically, you must add your user name to the `libvirt` group: - - -``` -$ sudo usermod --append --groups libvirt $(whoami) -$ newgrp libvirt -``` - -Next, install the Docker KVM driver, which is needed to run containers on Minishift. I downloaded the Docker machine driver directly to `/usr/local/bin`. You don't have to save it to `/usr/local/bin`, but you must ensure that its location is in your [PATH][8]: - - -``` -$ curl -L \ --o /usr/local/bin/docker-machine-driver-kvm - -$ sudo chmod +x /usr/local/bin/docker-machine-driver-kvm -``` - -### Install Minishift - -Now that the prerequisites are in place, visit the Minishift [releases page][9] and determine which version of Minishift you want to install. I used Minishift [v1.34.3][10]. - -[Download the Linux .tar file][11] to a directory you will be able to find easily. I used the `minishift` directory: - - -``` -$ ls -Minishift-1.34.3-linux-amd64.tgz -``` - -Next, untar your new file using [the `tar` command][12]: - - -``` -$ tar zxvf minishift-1.34.3-linux-amd64.tgz -minishift-1.34.3-linux-amd64/ -minishift-1.34.3-linux-amd64/LICENSE -minishift-1.34.3-linux-amd64/README.adoc -minishift-1.34.3-linux-amd64/minishift -``` - -By using the `v` (for _verbose_) option in your command, you can see all the files and their locations in your directory structure. - -Run the `ls` command to confirm that the new directory was created: - - -``` -$ ls -minishift-1.34.3-linux-amd64 -``` - -Next, change to the new directory and find the binary file you need; it is named `minishift`: - - -``` -$ cd minishift-1.34.3-linux-amd64 -$ ls -LICENSE  minishift  README.adoc -$ -``` - -Move the `minishift `binary file to your PATH, which you can find by running the following and looking at the output: - - -``` -$ echo $PATH -/home/jess/.local/bin:/usr/local/sbin:/usr/local/bin -``` - -I used `/usr/local/bin` as the `minishift` binary file's location: - - -``` -$ sudo mv minishift /usr/local/bin -[sudo] password for jess: -$ ls /usr/local/bin -minishift -``` - -Run the `minishift` command and look at the output: - - -``` -$ minishift -Minishift is a command-line tool that provisions and manages single-node OpenShift clusters optimized for development workflows. - -Usage: -  minishift [command] - -Available Commands: -  addons        Manages Minishift add-ons. -  completion  Outputs minishift shell completion for the given shell -  config        Modifies Minishift configuration properties. -  console       Opens or displays the OpenShift Web Console URL. -[...] - -Use "minishift [command] --help" for more information about a command. -``` - -### Log into Minishift's web console - -Now that Minishift is installed, you can walk through it and play with some cool new software. Begin with `minishift start`. This, as you might guess, starts Minishift—specifically, it starts a one-node cluster on your computer: - - -``` -$ minishift start -  Starting profile 'minishift' -  Check if deprecated options are used … OK -  Checking if is reachable … OK -[...] -  Minishift will be configured with… -  Memory: 4GB -  vCPUs : 2GB -  Disk size: 20 GB -Starting Minishift VM ……….OK -``` - -This process can take a long time, depending on your hardware, so be patient. When it ends, you'll get information about where to find your imaginary cluster on your virtualized network: - - -``` -Server Information ... -MiniShift server started. -The server is accessible via web console at: - -``` - -Now, MiniShift is running, complete with a web console. You can log into the OKD console using **developer** as the user name and any password you want. I chose **developer** / **developer**. - -![Minishift web console login][13] - -(Jess Cherry, [CC BY-SA 4.0][14]) - -The web console is an easy control panel you can use to administer your humble cluster. It's a place for you to create and load container images, add and monitor pods, and ensure your instance is healthy. - -![Minishift web console][15] - -(Jess Cherry, [CC BY-SA 4.0][14]) - -### Build a pipeline - -To start building your first pipeline, click **Pipeline Build Example** on the console. Click **Next** to show the parameters available to create the pipeline project. - -![Pipeline Build Example][16] - -(Jess Cherry, [CC BY-SA 4.0][14]) - -A window appears with parameters to fill in if you want; you can use what's already there for this example. Walk through the rest of the screen choices to create a sample pipeline. - -![Pipeline options][17] - -(Jess Cherry, [CC BY-SA 4.0][14]) - -Click **Create**, and let Minishift create the project for you. It shows your success (or failure). - -![Successful pipeline build][18] - -(Jess Cherry, [CC BY-SA 4.0][14]) - -You can also click **Show Parameters** and scroll through the list of parameters configured for this project. Click **Close** and look for a confirmation message on the left.  - -![Show Parameters Minishift][19] - -(Jess Cherry, [CC BY-SA 4.0][14]) - -![List of projects][20] - -(Jess Cherry, [CC BY-SA 4.0][14]) - -When you click on **My Project**, you can see the details and pods created for the project to run. - -![Project details][21] - -(Jess Cherry, [CC BY-SA 4.0][14]) - -Open the `jenkins-ephemeral` link that was generated. Log in again with the **developer** credentials and allow access to run a pipeline in Jenkins. - -![Authorize access interface][22] - -(Jess Cherry, [CC BY-SA 4.0][14]) - -Now you can look through the Jenkins interface to get a feel for what it has to offer. - -![Jenkins interface][23] - -(Jess Cherry, [CC BY-SA 4.0][14]) - -Find your project. - -![Jenkins projects][24] - -(Jess Cherry, [CC BY-SA 4.0][14]) - -When you're ready, click **Build Now**. - -![Jenkins "build now"][25] - -(Jess Cherry, [CC BY-SA 4.0][14]) - -Then you can view the job's output in the console output. - -![Jenkins console output][26] - -(Jess Cherry, [CC BY-SA 4.0][14]) - -Once the job completes successfully, you will see a success message at the bottom of the console. - -What did this pipeline do? It updated the deployment manually. - -![Pipeline result][27] - -(Jess Cherry, [CC BY-SA 4.0][14]) - -Congratulations, you successfully created an example automated deployment using Minishift! - -### Clean it up - -The last thing to do is to clean up everything by running two commands: - - -``` -$ minishift stop -$ minishift delete -``` - -Why `stop` and then `delete`? Well, I like to make sure nothing is running before I run a delete command of any kind. This results in a cleaner delete without the possibility of having any leftover or hung processes. Here are the commands' output. - -![minishift stop command][28] - -(Jess Cherry, [CC BY-SA 4.0][14]) - -![minishift delete command][29] - -(Jess Cherry, [CC BY-SA 4.0][14]) - -### Final notes - -Minishift is a great tool with great built-in automation. The user interface is comfortable to work with and easy on the eyes. I found it a fun new tool to play with at home, and if you want to dive in deeper, just look over the great [documentation][30] and many [online tutorials][3]. I recommend exploring this application in depth. Have a happy time Minishifting! - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/11/minishift-linux - -作者:[Jessica Cherry][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/cherrybomb -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/cube_innovation_process_block_container.png?itok=vkPYmSRQ (cubes coming together to create a larger cube) -[2]: https://www.okd.io/minishift/ -[3]: https://www.redhat.com/sysadmin/learn-openshift-minishift -[4]: https://opensource.com/resources/what-is-kubernetes -[5]: https://en.wikipedia.org/wiki/Sudo -[6]: https://en.wikipedia.org/wiki/Kernel-based_Virtual_Machine -[7]: https://www.virtualbox.org/wiki/Downloads -[8]: https://opensource.com/article/17/6/set-path-linux -[9]: https://github.com/minishift/minishift/releases -[10]: https://github.com/minishift/minishift/releases/tag/v1.34.3 -[11]: https://github.com/minishift/minishift/releases/download/v1.34.3/minishift-1.34.3-linux-amd64.tgz -[12]: https://opensource.com/article/17/7/how-unzip-targz-file -[13]: https://opensource.com/sites/default/files/uploads/minishift_web-console-login.png (Minishift web console login) -[14]: https://creativecommons.org/licenses/by-sa/4.0/ -[15]: https://opensource.com/sites/default/files/uploads/minishift_web-console.png (Minishift web console) -[16]: https://opensource.com/sites/default/files/uploads/minishift_pipeline-build-example.png (Pipeline Build Example) -[17]: https://opensource.com/sites/default/files/uploads/minishift_pipeline-build-config.png (Pipeline options) -[18]: https://opensource.com/sites/default/files/uploads/minishift_pipeline-build-success.png (Successful pipeline build) -[19]: https://opensource.com/sites/default/files/pictures/params-minishift.jpg (Show Parameters Minishift) -[20]: https://opensource.com/sites/default/files/uploads/minishift_myprojects.png (List of projects) -[21]: https://opensource.com/sites/default/files/uploads/minishift_project-details.png (Project details) -[22]: https://opensource.com/sites/default/files/uploads/minishift_authorize-access.png (Authorize access interface) -[23]: https://opensource.com/sites/default/files/uploads/jenkins-interface.png (Jenkins interface) -[24]: https://opensource.com/sites/default/files/uploads/jenkins-project.png (Jenkins projects) -[25]: https://opensource.com/sites/default/files/uploads/jenkins_build-now.png (Jenkins "build now") -[26]: https://opensource.com/sites/default/files/uploads/jenkins_console-output.png (Jenkins console output) -[27]: https://opensource.com/sites/default/files/uploads/pipelineresult.png (Pipeline result) -[28]: https://opensource.com/sites/default/files/uploads/minishift-stop.png (minishift stop command) -[29]: https://opensource.com/sites/default/files/uploads/minishift-delete.png (minishift delete command) -[30]: https://docs.okd.io/3.11/minishift/using/index.html diff --git a/sources/tech/20201111 Create your first Knative app.md b/sources/tech/20201111 Create your first Knative app.md deleted file mode 100644 index 6213ddd329..0000000000 --- a/sources/tech/20201111 Create your first Knative app.md +++ /dev/null @@ -1,469 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Create your first Knative app) -[#]: via: (https://opensource.com/article/20/11/knative) -[#]: author: (Jessica Cherry https://opensource.com/users/cherrybomb) - -Create your first Knative app -====== -Knative is a great way to get started quickly on serverless development -with Kubernetes. -![Working from home at a laptop][1] - -[Knative][2] is an open source community project that adds components to [Kubernetes][3] for deploying, running, and managing [serverless, cloud-native][4] applications. It enables more productive development with less interaction with Kubernetes' infrastructure. - -There is a large amount of information out there about Knative, networking, and serverless deployments, and this introductory tutorial covers just a bite-size amount of it. In this walkthrough, I'll use Knative with [Minikube][5] to create a Knative app—a simple container that prints messages in response to a `curl` command or in a web browser at a link provided by the deployment. - -### First, some background - -Knative uses custom resource definitions (CRDs), a network layer, and a service core. For this walkthrough, I used Ubuntu 18.04, Kubernetes 1.19.0, Knative 0.17.2, and [Kourier][6] 0.17.0 as the Knative networking layer, as well as the Knative command-line interface (CLI). - -A CRD is a custom resource definition within Kubernetes. A resource is an endpoint in the Kubernetes API that stores a collection of API objects of a certain kind; for example, the built-in pod's resource contains a collection of pod objects. This allows an expansion of the Kubernetes API with new definitions. One example is the Knative serving core, which is defined to have internal autoscaling and rapid deployment of pods with the correct roles and access predefined. - -Kourier is an [Ingress][7] (a service to let in external network traffic) for Knative serving and a lightweight alternative for the [Istio][8] ingress. Its deployment consists only of an [Envoy proxy][9] and a control plane for it. - -To understand the concepts in this tutorial, I recommend you are somewhat familiar with: - - * Serverless, cloud-native applications - * Ingress with Envoy proxies, i.e., Istio - * DNS in Kubernetes - * Kubernetes patching configurations - * Custom resource definitions in Kubernetes - * Configuring YAML files for Kubernetes - - - -### Set up and installation - -There are some prerequisites you must do before you can use Knative. - -#### Configure Minikube - -Before doing anything else, you must configure Minikube to run Knative locally in your homelab. Below are the configurations I suggest and the commands to set them: - - -``` -$ minikube config set kubernetes-version v1.19.0 -$ minikube config set memory 4000 -$ minikube config set cpus 4 -``` - -To make sure those configurations are set up correctly in your environment, run the Minikube commands to delete and start your cluster: - - -``` -$ minikube delete -$ minikube start -``` - -#### Install the Knative CLI - -You need the Knative CLI to make a deployment, and you need [Go v1.14][10] or later to work with the CLI. I created a separate directory to make it easier to find and install these tools. Use the following commands to set up the command line: - - -``` -$ mkdir knative -$ cd knative/ -$ git clone -$ cd client/ -$ hack/build.sh -f -$ sudo cp kn /usr/local/bin -$ kn version -Version:        v20201018-local-40a84036 -Build Date:   2020-10-18 20:00:37 -Git Revision: 40a84036 -Supported APIs: -* Serving -  - serving.knative.dev/v1 (knative-serving v0.18.0) -* Eventing -  - sources.knative.dev/v1alpha2 (knative-eventing v0.18.0) -  - eventing.knative.dev/v1beta1 (knative-eventing v0.18.0) -``` - -Once the CLI is installed, you can configure Knative in the Minikube cluster. - -#### Install Knative - -Since Knative is composed of CRDs, much of its installation uses YAML files with `kubectl` commands. To make this easier, set up some environment variables in the terminal so that you can get the needed YAML files a little faster and in the same version: - - -``` -`$ export KNATIVE="0.17.2"` -``` - -First, apply the service resource definitions: - - -``` -`$ kubectl apply -f https://github.com/knative/serving/releases/download/v$KNATIVE/serving-crds.yaml` -``` - -Then apply the core components to Knative: - - -``` -`$ kubectl apply -f https://github.com/knative/serving/releases/download/v$KNATIVE/serving-core.yaml` -``` - -This deploys the services and deployments to the namespace `knative-serving`. You may have to wait a couple of moments for the deployment to finish. - -To confirm the deployment finished, run the `kubectl` command to get the deployments from the namespace: - - -``` -$ kubectl get deployments -n knative-serving -NAME                    READY   UP-TO-DATE   AVAILABLE   AGE -3scale-kourier-control   1/1    1               1               107m -activator               1/1     1               1               108m -autoscaler              1/1     1               1               108m -controller              1/1     1               1               108m -webhook                 1/1     1               1               108m -``` - -#### Install Kourier - -Because you want to use a specific version and collect the correct YAML file, use another environment variable: - - -``` -`$ export KOURIER="0.17.0"` -``` - -Then apply your networking layer YAML file: - - -``` -`$ kubectl apply -f https://github.com/knative/net-kourier/releases/download/v$KOURIER/kourier.yaml` -``` - -You will find the deployment in the `kourier-system` namespace. To confirm the deployment is correctly up and functioning, use the `kubectl` command to get the deployments: - - -``` -$ kubectl get deployments -n kourier-system -NAME                    READY   UP-TO-DATE   AVAILABLE   AGE -3scale-kourier-gateway   1/1    1               1               110m -``` - -Next, configure the Knative serving to use Kourier as default. If you don't set this, the external networking traffic will not function. Set it with this `kubectl patch` command: - - -``` -$ kubectl patch configmap/config-network \ -  --namespace knative-serving \ -  --type merge \ -  --patch '{"data":{"ingress.class":"kourier.ingress.networking.knative.dev"}}' -``` - -#### Configure the DNS - -Before you can access the load balancer, you need to run the `minikube tunnel` command in a separate terminal window. This command creates a route to services deployed with type `LoadBalancer` and sets their Ingress to their `ClusterIP`. Without this command, you will never get an `External-IP` from the load balancer. Your output will look like this: - - -``` -Status:     -    machine: minikube -    pid: 57123 -    route: 10.96.0.0/12 -> 192.168.39.67 -    minikube: Running -    services: [kourier] -        errors: -         minikube: no errors -         router: no errors -         loadbalancer emulator: no errors -Status:     -    machine: minikube -    pid: 57123 -    route: 10.96.0.0/12 -> 192.168.39.67 -    minikube: Running -    services: [kourier] -        errors: -         minikube: no errors -         router: no errors -         loadbalancer emulator: no errors -``` - -Now that the services and deployments are complete, configure the DNS for the cluster. This enables your future deployable application to support DNS web addresses. To configure this, you need to get some information from your Kourier service by using the `kubectl get` command: - - -``` -$ kubectl get service kourier -n kourier-system -NAME    TYPE            CLUSTER-IP      EXTERNAL-IP     PORT(S)                         -kourier   LoadBalancer   10.103.12.15   10.103.12.15   80:32676/TCP,443:30558/TCP -``` - -Get the `CLUSTER-IP` address and save it for the next step. Next, configure the domain to determine your internal website on local DNS. (I ended mine in `nip.io`, and you can also use `xip.io`.) This requires another `kubectl patch` command: - - -``` -`$ kubectl patch configmap -n knative-serving config-domain -p "{\"data\": {\"10.103.12.15.nip.io\": \"\"}}"` -``` - -Once it's patched, you will see this output: - - -``` -`configmap/config-domain patched` -``` - -### Use the Knative CLI - -Now that your configurations are done, you can create an example application to see what happens. - -#### Deploy a service - -Earlier in this walkthrough, you installed the Knative CLI, which is used for Serving and Eventing resources in a Kubernetes cluster. This means you can deploy a sample application and manage services and routes. To bring up the command-line menu, type `kn`. Here is a snippet of the output: - - -``` -$ kn -kn is the command line interface for managing Knative Serving and Eventing resources - - Find more information about Knative at: - -Serving Commands: -  service       Manage Knative services -  revision      Manage service revisions -  route         List and describe service routes -``` - -Next, use the Knative CLI to deploy a basic "hello world" application with a web frontend. Knative provides some examples you can use; this one does a basic deployment: - - -``` -`kn service create hello --image gcr.io/knative-samples/helloworld-go` -``` - -Your output should look something like this: - - -``` -$ kn service create hello --image gcr.io/knative-samples/helloworld-go -Creating service 'hello' in namespace 'default': - -  0.032s The Configuration is still working to reflect the latest desired specification. -  0.071s The Route is still working to reflect the latest desired specification. -  0.116s Configuration "hello" is waiting for a Revision to become ready. - 34.908s ... - 34.961s Ingress has not yet been reconciled. - 35.020s unsuccessfully observed a new generation - 35.208s Ready to serve. - -Service 'hello' created to latest revision 'hello-dydlw-1' is available at URL: - -``` - -This shows that the service was deployed with a URL into the namespace default. You can deploy to another namespace by running something like the following, then look at the output: - - -``` -$ kn service create hello --image gcr.io/knative-samples/helloworld-go --namespace hello -Creating service 'hello' in namespace 'hello': - -  0.015s The Configuration is still working to reflect the latest desired specification. -  0.041s The Route is still working to reflect the latest desired specification. -  0.070s Configuration "hello" is waiting for a Revision to become ready. -  5.911s ... -  5.958s Ingress has not yet been reconciled. -  6.043s unsuccessfully observed a new generation -  6.213s Ready to serve. - -Service 'hello' created to latest revision 'hello-wpbwj-1' is available at URL: - -``` - -#### Test your new deployment - -Check to see if the new service you deployed is up and running. There are two ways to check: - - 1. Check your web address in a browser - 2. Run a `curl` command to see what returns - - - -If you check the address in a web browser, you should see something like this: - -![Checking Knative deployment][11] - -(Jess Cherry, [CC BY-SA 4.0][12]) - -Good! It looks like your application's frontend is up! - -Next, test the `curl` command to confirm everything works from the command line. Here is an example of a `curl` to my application and the output: - - -``` -$ curl -Hello World! -``` - -#### Interact with the Knative app - -From here, you can use the Knative CLI to make some basic changes and test the functionality. Describe the service and check the output: - - -``` -$ kn service describe hello -Name:           hello -Namespace:  default -Age:            12h -URL:            - -Revisions:   -  100%  @latest (hello-dydlw-1) [1] (12h) -        Image:  gcr.io/knative-samples/helloworld-go (pinned to 5ea96b) - -Conditions:   -  OK TYPE                       AGE REASON -  ++ Ready                      12h -  ++ ConfigurationsReady        12h -  ++ RoutesReady                12h -``` - -It looks like everything is up and ready as you configured it. Some other things you can do with the Knative CLI (which won't show up now due to the minimal configuration in this example) are to describe and list the routes with the app: - - -``` -$ kn route describe hello -Name:           hello -Namespace:  default -Age:            12h -URL:            -Service:        hello - -Traffic Targets:   -  100%  @latest (hello-dydlw-1) - -Conditions:   -  OK TYPE                       AGE REASON -  ++ Ready                      12h -  ++ AllTrafficAssigned         12h -  ++ CertificateProvisioned     12h TLSNotEnabled -  ++ IngressReady               12h -jess@Athena:~/knative/client$ kn route list hello -NAME    URL                                     READY -hello     True -``` - -This can come in handy later when you need to troubleshoot issues with your deployments. - -#### Clean up - -Just as easily as you deployed your application, you can clean it up: - - -``` -$ kn service delete hello -Service 'hello' successfully deleted in namespace 'default'. - -jess@Athena:~/knative/client$ kn service delete hello --namespace hello -Service 'hello' successfully deleted in namespace 'hello'. -``` - -### Make your own app - -This walkthrough used an existing Knative example, but you are probably wondering about making something that _you_ want. You are right, so I'll provide this example YAML then explain how you can apply it with kubectl and manage it with the Knative CLI. - -**Example YAML** - - -``` -apiVersion: serving.knative.dev/v1 -kind: Service -metadata: -  name: helloworld -  namespace: default -spec: - template: -  spec: -   containers: -     - image: gcr.io/knative-samples/helloworld-go -       ports: -             - containerPort: 8080 -       env: -        - name: TARGET -          value: "This is my app" -``` - -Save this to `apps.yaml`, and then you can make changes to some things. For example, you can change your `metadata`, `name`, and `namespace`. You can also change the value of the target (which I set to `This is my app`) so that, rather than `Hello World`, you'll see a new message that says `Hello ${TARGET} !` when you deploy the file. - -To deploy a file like this, you will have to use `kubectl apply -f apps.yaml`. - -First, deploy your new service using the `apply` command: - - -``` -$ kubectl apply -f apps.yaml -service.serving.knative.dev/helloworld created -``` - -Next, you can describe your new deployment, which is the name provided in the YAML file: - - -``` -$ kn service describe helloworld -Name:           helloworld -Namespace:  default -Age:            50s -URL:            - -Revisions:   -  100%  @latest (helloworld-qfr9s) [1] (50s) -        Image:  gcr.io/knative-samples/helloworld-go (at 5ea96b) - -Conditions:   -  OK TYPE                       AGE REASON -  ++ Ready                      43s -  ++ ConfigurationsReady        43s -  ++ RoutesReady                43s -``` - -Run a `curl` command to confirm it produces the new output you defined in your YAML file: - - -``` -$ curl   -Hello This is my app! -``` - -Double-check by going to the simple web frontend. - -![Checking Knative deployment][13] - -(Jess Cherry, [CC BY-SA 4.0][12]) - -This proves your application is running! Congratulations! - -### Final thoughts - -Knative is a great way for developers to move quickly on serverless development with networking services that allow users to see changes in apps immediately. It is fun to play with and lets you take a deeper dive into serverless and other exploratory uses of Kubernetes! - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/11/knative - -作者:[Jessica Cherry][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/cherrybomb -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/wfh_work_home_laptop_work.png?itok=VFwToeMy (Working from home at a laptop) -[2]: https://knative.dev/ -[3]: https://opensource.com/resources/what-is-kubernetes -[4]: https://en.wikipedia.org/wiki/Cloud_native_computing -[5]: https://minikube.sigs.k8s.io/docs/ -[6]: https://github.com/knative-sandbox/net-kourier -[7]: https://kubernetes.io/docs/concepts/services-networking/ingress/ -[8]: https://istio.io/ -[9]: https://www.envoyproxy.io/ -[10]: https://golang.org/doc/install -[11]: https://opensource.com/sites/default/files/uploads/knative_browser-check.png (Checking Knative deployment) -[12]: https://creativecommons.org/licenses/by-sa/4.0/ -[13]: https://opensource.com/sites/default/files/uploads/knativebrowser2.png (Checking Knative deployment) diff --git a/sources/tech/20201111 Day 3- an infinitely tall fridge.md b/sources/tech/20201111 Day 3- an infinitely tall fridge.md deleted file mode 100644 index e50ce9a55d..0000000000 --- a/sources/tech/20201111 Day 3- an infinitely tall fridge.md +++ /dev/null @@ -1,46 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Day 3: an infinitely tall fridge) -[#]: via: (https://jvns.ca/blog/2020/11/11/day-3--an-infinitely-tall-fridge/) -[#]: author: (Julia Evans https://jvns.ca/) - -Day 3: an infinitely tall fridge -====== - -Hello! Here are some notes from Day 3 at the Recurse Center. - -This post is an extremely short one from the toy refrigerator poetry forum website I’m working on. I needed to come up with a design for it, and finally today I came up with an idea: just put everything on an image of a fridge. - -I found a stock image of a fridge, but I ran into a problem immediately, which was that the entire website could not fit on said fridge image. - -So I figured how to make a fridge that was as tall as I wanted it to be. (not technically “infinite”, but “a fridge that is as big as required” didn’t have quite the same ring). - -### here’s the infinite fridge - -Here’s a CodePen with the HTML/CSS required to make an infinite fridge. It’s relatively simple and I’m very pleased about this. It basically has 3 images: one for the top of the fridge, a 1px line that can be repeated as much as required, and then the bottom. - -See the Pen [infinite refrigerator][1] by Julia Evans ([Julia Evans][2]) on [CodePen][3]. - -### that’s all! - -I started writing an explanation of how exactly this infinite fridge works, but I ran out of time so maybe another day :). (the main trick is that `padding-bottom` is a percentage of the parent element’s width, not its height, so you can use it to create a box with a fixed aspect ratio) - --------------------------------------------------------------------------------- - -via: https://jvns.ca/blog/2020/11/11/day-3--an-infinitely-tall-fridge/ - -作者:[Julia Evans][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://jvns.ca/ -[b]: https://github.com/lujun9972 -[1]: https://codepen.io/wizardzines/pen/bGeOdvJ -[2]: https://codepen.io/wizardzines -[3]: https://codepen.io diff --git a/sources/tech/20201111 How I use Cockpit for my home-s Linux server management.md b/sources/tech/20201111 How I use Cockpit for my home-s Linux server management.md deleted file mode 100644 index 9accd1a2d0..0000000000 --- a/sources/tech/20201111 How I use Cockpit for my home-s Linux server management.md +++ /dev/null @@ -1,175 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (How I use Cockpit for my home's Linux server management) -[#]: via: (https://opensource.com/article/20/11/cockpit-server-management) -[#]: author: (Alan Formy-Duval https://opensource.com/users/alanfdoss) - -How I use Cockpit for my home's Linux server management -====== -Anyone—from home users to large-network admins—can access -enterprise-grade server management with Cockpit. -![People work on a computer server with devices][1] - -[Cockpit][2] is a service for Linux that provides a web-based interface for managing and monitoring hosts. It can be deployed in any size organization, even a small office, and it's a great way for home users to maintain the family IT infrastructure. I use it to manage and monitor all of the computers in my house—including Raspberry Pi. - -Cockpit is a free and open source software project released under the LGPL v2.1+. It is sponsored by Red Hat and included in Red Hat Enterprise Linux as the RHEL Web Console. - -### Using Cockpit - -Cockpit allows you to manage Linux devices on your network remotely. You can add or remove users, connect Network File System (NFS) shares, and start and stop services. One of my favorite simple Cockpit tasks is doing updates. I no longer have to walk around the office or house to collect each device to log in, update, reboot, and wait. Enterprise administrators don't need to badge into a data center; instead, they can manage devices from the comfort of their office. - -This isn't all, though. Cockpit's advanced capabilities include managing an LDAP server, virtual machines, and storage. You can also use it to install Docker or Podman containers. - -In terms of monitoring, Cockpit provides visibility into the expected CPU, memory, and disk space metrics. But it also exposes information like the manufacturer, BIOS, and CPU branding and gives a detailed look at hardware elements such as the [northbridge][3] and [southbridge][4] chips and various controllers. It lists the graphics, storage, and network communications devices and the memory controller and memory type. Cockpit can also be used to review logs. - -### Install Cockpit - -Cockpit is included in most major distributions. The website provides [documentation][5] for installing on Red Hat, Fedora, Ubuntu, Debian, Arch, and several others. You can install it with the standard package management commands on your Linux distribution. You can also usually find it in your graphical utility, such as GNOME Software Center, for a one-click process. - - * **Fedora: **`dnf install cockpit` - * **Ubuntu: **`apt install cockpit` - - - -### Access and login - -The default listen port is 9090. To access the Cockpit interface on a server, just point your browser to `hostname:9090`. You can use `localhost:9090` for the local server where you are logged on. Log in with a common account, as it will be advantageous to have root privileges on this account. - -![Cockpit Login Screen][6] - -(Alan Formy Duvall, [CC BY-SA 4.0][7]) - -To access other servers remotely, you would use their hostname, e.g., `https://hostname:9090`. However, you could designate one host as a management server and add all your servers to the Dashboard for a unified view. - -Once you log in, the first screen you see is the Dashboard; the other option is Host view.  - -### Dashboard view - -The Dashboard view is clean and uncluttered. The image below shows a performance monitor for all of a system's connected servers. It graphs CPU, memory, network, and disk I/O. If this is your first run and you haven't yet connected any servers, you will see graphs for the local system only. - -![Cockpit Dashboard][8] - -(Alan Formy Duvall, [CC BY-SA 4.0][7]) - -Add a server by clicking the blue plus (**+**) button. - -![Adding a machine to Cockpit][9] - -(Alan Formy Duvall, [CC BY-SA 4.0][7]) - -After you add servers, scroll down to see the full list. I have a few systems set up already. - -![Cockpit server list][10] - -(Alan Formy Duvall, [CC BY-SA 4.0][7]) - -### Host view - -Host view is where all the fun begins. This section shows and gives access to each server added to the Dashboard. The main area of interest here is the column toward the left that includes **Overview**, **Logs**, **Storage**, **Networking**, and a few other items, with **Terminal** at the bottom. Clicking on each item enables you to manage these parts of the system. The items in this section can vary depending on other features that may be installed. - -#### Overview - -When you select a server, the Host screen opens to the **Overview** section with controls for the specific host system. The Overview screen is divided into quadrants for _Health_, _Usage_, _Configuration_, and _System information_. - -![Cockpit Host Overview][11] - -(Alan Formy Duvall, [CC BY-SA 4.0][7]) - -Usage links to a detailed performance graph view, and System information links to hardware details. Some management controls are directly available on this screen. For example, you can change the system hostname or join the server to an enterprise domain. - -#### Storage - -In this image of the **Storage** section, the top part has a graph of read/write activity, and below that is a list of local filesystems. Further down, you can add NFS mounts or view logs. You can even create RAID devices and volume groups. - -![Cockpit Host Storage View][12] - -(Alan Formy Duvall, [CC BY-SA 4.0][7]) - -#### Networking - -The **Networking** section allows you to manage firewall and network interfaces. You can edit firewall rules and zones and manipulate networking with bonding, teaming, bridges, and VLANs. - -![Cockpit Host Networking View][13] - -(Alan Formy Duvall, [CC BY-SA 4.0][7]) - -#### Software updates - -Being able to apply updates on servers remotely is super-convenient. Even a family may have five or 10 computers. But an enterprise with hundreds or thousands of headless servers racked in a dry, dark data center miles away definitely needs this capability. The **Software updates** section lists the updates available to you. - -![Cockpit host updates][14] - -(Alan Formy Duvall, [CC BY-SA 4.0][7]) - -You can select whether to install all updates or just those related to security, and Cockpit displays a progress bar while updates are installed. Once the process is complete, you can restart the system. - -#### Terminal - -The last item in Host view is a **Terminal**, where you can do all the normal command-line options. One way I've used the Terminal is to overcome inconsistencies in Cockpit feature sets, most likely due to Linux version differences. I discovered this on [my Media Center PC][15] running Ubuntu Linux 18.04. In this version of Ubuntu, the Overview section is labeled System. It indicates available bug-fix updates but does not have a button for applying updates. This is not the case with the newer Ubuntu 20.04 LTS, which has the expected Overview section and update facility. Either way, there is no need to fret because I can leverage the terminal to run the normal Apt update commands. - -![Cockpit Terminal][16] - -(Alan Formy Duvall, [CC BY-SA 4.0][7]) - -#### Applications - -You may have noticed that I skipped the **Applications** section in Host view. This section deserves your attention because it can manipulate the view and functionality of your Cockpit service. From here, you can install additional functionality or applications, such as 389 LDAP Server or tools for collecting diagnostic reports and kernel dumps or building server images. The _Machines_ section enables virtual machine management, and _Podman_ provides container management capabilities. Once you have Cockpit up and running, it's a good idea to explore the Applications section. - -![Cockpit Applications][17] - -(Alan Formy Duvall, [CC BY-SA 4.0][7]) - -### Final thoughts - -Cockpit uses a secure shell (SSH) client to access remote servers, so there may be some resource impact on a system where you create the unified view that I described above since each managed server will have an associated SSH connection. - - -``` -$ ps fax |grep cockpit -2064515 ?        Ssl    0:50 /usr/libexec/cockpit-tls -2064521 ?        Ssl    0:41 /usr/libexec/cockpit-ws --for-tls-proxy --port=0 -2064527 ?        S      0:00  \\_ /usr/libexec/cockpit-session localhost -2064537 ?        Sl     0:38      \\_ cockpit-bridge -2064636 ?        S      1:37          \\_ /usr/libexec/cockpit-ssh webserver -2064639 ?        S      1:37          \\_ /usr/libexec/cockpit-ssh smtpserver -2064640 ?        S      1:37          \\_ /usr/libexec/cockpit-ssh ftpserver -2064670 ?        Sl     0:02          \\_ /usr/bin/cockpit-bridge --privileged -2076607 ?        S      0:21          \\_ /usr/libexec/cockpit-ssh ldapserver -2078182 ?        S      0:10          \\_ /usr/libexec/cockpit-ssh teaserver -``` - -I've used many operations tools like this, both closed and open source, for management, monitoring, provisioning, deployment, and security tasks. Cockpit is a great tool that fits organizations of all sizes. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/11/cockpit-server-management - -作者:[Alan Formy-Duval][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/alanfdoss -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/rh_003499_01_linux11x_cc.png?itok=XMDOouJR (People work on a computer server with devices) -[2]: https://cockpit-project.org/ -[3]: https://en.wikipedia.org/wiki/Northbridge_%28computing%29 -[4]: https://en.wikipedia.org/wiki/Southbridge_%28computing%29 -[5]: https://cockpit-project.org/running.html -[6]: https://opensource.com/sites/default/files/uploads/cockpitlogin.png (Cockpit Login Screen) -[7]: https://creativecommons.org/licenses/by-sa/4.0/ -[8]: https://opensource.com/sites/default/files/uploads/cockpitdashboard.png (Cockpit Dashboard) -[9]: https://opensource.com/sites/default/files/uploads/cockpitaddmachine.png (Adding a machine to Cockpit) -[10]: https://opensource.com/sites/default/files/uploads/cockpitservers.png (Cockpit server list) -[11]: https://opensource.com/sites/default/files/uploads/cockpithostoverview.png (Cockpit Host Overview) -[12]: https://opensource.com/sites/default/files/uploads/cockpithoststorage.png (Cockpit Host Storage View) -[13]: https://opensource.com/sites/default/files/uploads/cockpithostnetwork.png (Cockpit Host Networking View) -[14]: https://opensource.com/sites/default/files/uploads/cockpithostupdates.png (Cockpit host updates) -[15]: https://opensource.com/article/18/11/old-linux-desktop-new-home-media-center -[16]: https://opensource.com/sites/default/files/uploads/cockpitterminal.png (Cockpit Terminal) -[17]: https://opensource.com/sites/default/files/uploads/cockpitapplications.png (Cockpit Applications) diff --git a/sources/tech/20201112 MuditaOS- A Beautiful and Minimal Open Source Mobile Operating System for Feature Phones.md b/sources/tech/20201112 MuditaOS- A Beautiful and Minimal Open Source Mobile Operating System for Feature Phones.md deleted file mode 100644 index 288a5b0bf8..0000000000 --- a/sources/tech/20201112 MuditaOS- A Beautiful and Minimal Open Source Mobile Operating System for Feature Phones.md +++ /dev/null @@ -1,116 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (MuditaOS: A Beautiful and Minimal Open Source Mobile Operating System for Feature Phones) -[#]: via: (https://itsfoss.com/mudita-os/) -[#]: author: (Abhishek Prakash https://itsfoss.com/author/abhishek/) - -MuditaOS: A Beautiful and Minimal Open Source Mobile Operating System for Feature Phones -====== - -_**Find the always connected smartphones too distracting and privacy invasive? Let’s go back to the pre-2010 era and enjoy the simplicity of feature phones but with a modern design with MuditaOS.**_ - -There are a [few open source mobile operating systems][1] existing already. Let me add one more to this list. - -Unlike most other mobile operating systems, MuditaOS is not interested in serving smartphones. Let’s have a look at it. - -### Meet MuditaOS: A minimalistic, yet powerful mobile operating system - -![][2] - -[MuditaOS][3] is a beautifully designed [E Ink][4] mobile operating system. You might have come across the E Ink display with electronic eBook readers like Kindle or Nook. - -The E Ink display itself is soothing to the eyes and MuditaOS makes it even more beautiful with its minimalist approach. - -Here are the components of a basic phone running MuditaOS: - - * Home Screen (with clock and notification) - * Calls - * Phonebook - * Messaging - * Settings - * Music Player (Thanks goodness!) - * Alarm clock - * Calendar - * Meditation Timer - * Tools - * Onboarding - - - -Since this is all too 2007-ish, MuditaOS has a companion desktop application available to manage the phone. - -### Mudita Center desktop app to manage your Mudita Phone - -![][5] - -Mudita Center application is available on Linux, Windows and macOS. Connecting the phone to the computer and using this application, you can do the following: - - * Update MuditaOS - * Upload and manage audio on Pure - * Export notes and voice memos - * Create longer messages and notes (because typing on phone with limited keys is a pain) - * Synchronize calendar - * Use your phone as mobile hotspot (if you have the 3G/4G data connection) - - - -### What devices are available? - -![][6] - -MuditaOS is specially created for their own [Mudita Pure phones][7] that come on pebble gray and charcoal black colors. - -The phones are water resistant with IP54 rating and though it supports 4G network, you cannot use internet on the phone. You’ll have to tether it with your computer to use the data network on the computer. - -It also has ultralow SAR antenna to minimize the mobile radiation exposure. Another good thing is that their speakers and microphones are by [Harman][8] so expect top quality audio. - -Here are more technical specifications: - - * Processor: Arm Cortex-M7 600MHz, 512KB Tightly Coupled Memory (TCM) - * Memory: 16 MB SDRAM and 16 GB eMMC flash storage - * Network and connectivity: 2G, 3G, 4G/LTE, GSM, Bluetooth 4.2, USB type-C, No WiFi, no mobile data on the phone - * Display: 2.84’’ E Ink (600x480px), 16-grayscale, scratch resistant - * Weight: 140 g - * Sim card: 2 nano SIM card slots - * Audio: Loudspeaker, earspeaker & microphone by Harman, Audio playback format: MP3, WAV, FLAC, Headphone jack, Bluetooth audio playback - * Battery: ~1600mAh, Li-Po, replacable - * Sensors: Ambient Light - - - -You can preorder a Mudita Pure phone on the link below Keep in mind that pricing is astronomical compared to other feature phones. - -[Pre-order Mudita Pure][7] - -As of now, I am not aware of any device other than the ones from Mudita running MuditaOS. This is rather new on the scene. - -### Conclusion - -The name Mudita is inspired by the Sanskrit word ‘Mudit’ which means ‘happy’. Recently when the developers open sourced their project they mentioned, “open-sourcing MuditaOS goes along the line of our “You’re happy – I’m Happy” philosophy”. - -I know that working on feature phones in the age of smartphones may sound like a bad idea but keep in mind that feature phones are still not obsolete. There is still market for these phones among older people and for people who don’t want to spend too much on phones just for making calls. - --------------------------------------------------------------------------------- - -via: https://itsfoss.com/mudita-os/ - -作者:[Abhishek Prakash][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://itsfoss.com/author/abhishek/ -[b]: https://github.com/lujun9972 -[1]: https://itsfoss.com/open-source-alternatives-android/ -[2]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/11/muditaos.jpg?resize=800%2C450&ssl=1 -[3]: https://mudita.com/products/pure/muditaos -[4]: https://www.eink.com -[5]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/11/muditaos-desktop-app.jpg?resize=800%2C581&ssl=1 -[6]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/11/mudita-pure.jpg?resize=800%2C600&ssl=1 -[7]: https://mudita.com/products/pure/ -[8]: https://www.harmanaudio.com/ diff --git a/sources/tech/20201112 Quick Lookup is a Simple Open Source Word Lookup Tool to Find Meaning of Words You Come Across.md b/sources/tech/20201112 Quick Lookup is a Simple Open Source Word Lookup Tool to Find Meaning of Words You Come Across.md deleted file mode 100644 index 4146d08fcf..0000000000 --- a/sources/tech/20201112 Quick Lookup is a Simple Open Source Word Lookup Tool to Find Meaning of Words You Come Across.md +++ /dev/null @@ -1,133 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Quick Lookup is a Simple Open Source Word Lookup Tool to Find Meaning of Words You Come Across) -[#]: via: (https://itsfoss.com/quick-lookup/) -[#]: author: (Ankush Das https://itsfoss.com/author/ankush/) - -Quick Lookup is a Simple Open Source Word Lookup Tool to Find Meaning of Words You Come Across -====== - -_**It is always handy to have a quick word lookup tool while browsing the web or reading an e-book. Quick Lookup is one such free and open-source tool to try.**_ - -Whenever I come across a word that I don’t know the meaning of, I just open a new tab and search for the meaning. However, it is a hit and trial every time depending on what search engine you’re on. - -Even if you do get an idea for the meaning with a quick search, you do not get all the details required along with it. Especially, if you do not know the meaning of the word that describes your target word. You will end up performing another quick search. - -So, to get rid of all that hassle, a quick lookup tool should prove to be useful! - -### Quick Lookup: A Simple Dictionary App Powered by Wiktionary - -![][1] - -Whatever is your [idea of what is Linux][2], this is what Wiktionary thinks of Linux. - -As you might have guessed already, Quick Lookup needs an active Internet connection to give you the results for your words utilizing [Wiktionary][3]. - -It is a completely free and open-source application that offers essential features to make it a handy [productive tool for Linux users][4]. Let us take a look at what it offers. - -**Recommended Read:** - -![][5] - -#### [Artha: An Offline English Thesaurus App for Linux][6] - -Artha is a feature rich thesaurus application available for all major Linux distributions.  - -### Features of Quick Lookup - -![][7] - - * Ability to look for the definitions of the words and phrases - * It lets you manually enter the word or phrase - * Multiple languages supported but the description and meaning of words/phrases will be displayed only in English - * Open internal links from within app (if you’re curious about a related word) - * Remembers your last search with the help of the back button - * You can also launch the app in selection mode to automatically capture the word you select - - - -### Installing Quick Lookup on Linux - -Quick Look is [available primarily][8] as a [Flatpak package][9] for every Linux user. If Flatpak is integrated with your software center like Pop!_Shop on [Pop OS][10], you can find it listed there. - -If you have Flatpak enabled, you can always use this command to install it: - -``` -flatpak install flathub com.github.johnfactotum.QuickLookup -``` - -You can learn more about [using Flatpak][11] in case you don’t know how about it. - -It is worth noting that if you want to select texts on your browser (or any other app) while using a Flatpak package and have it look for the meaning, you will have to type this command (launching it in the selection mode): - -``` -flatpak run com.github.johnfactotum.QuickLookup --selection -``` - -In either case, you can simply [download the source][12] archive and get it installed using the installation script. You can also run it without needing to install it by simply navigating the source folder and typing this command: - -``` -gjs quick-lookup.js -``` - -If you’ve installed it from source and want it to automatically fetch the text that you select on any app, you will have to launch it using the following command: - -``` -quick-lookup --selection -``` - -You also get an option to use the [GNOME Builder][13] if you’re familiar with it. For more details, you can check out its [GitHub page][14]. - -[Quick Lookup][14] - -**Recommended Read:** - -![][15] - -#### [LanguageTool Review: Free and Open Source Grammar Checker][16] - -LanguageTool is a free and open source proofreading software that checks the grammar, style and spelling in more than 20 languages. - -### Closing Thoughts on Quick Look - -Quick Look is definitely a useful dictionary app (even without an offline functionality) to quickly look for the meanings of words/phrases. I’m not much into eBooks, but you can try using an [eBook reader][17] along with this app to quickly be able to decipher words. - -Personally, I like to use it while browsing the web. To make things convenient, I like to keep its Window on top of every window on my workspace. So, you can easily select a text and then click on it to get the meaning and continue working. - -An offline functionality would be great for users who do not spend most of their time online. But, for the time being, it’s only online. - -Have you tried something like Quick Look? Let us know your thoughts in the comments below. - --------------------------------------------------------------------------------- - -via: https://itsfoss.com/quick-lookup/ - -作者:[Ankush Das][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://itsfoss.com/author/ankush/ -[b]: https://github.com/lujun9972 -[1]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/11/quick-lookup-dictionary.jpg?resize=800%2C559&ssl=1 -[2]: https://itsfoss.com/what-is-linux/ -[3]: https://www.wiktionary.org/ -[4]: https://itsfoss.com/productivity-tips-ubuntu/ -[5]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2017/08/thesaurus-app-linux.jpeg?fit=300%2C169&ssl=1 -[6]: https://itsfoss.com/artha-thesaurus-app-linux/ -[7]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/11/quick-lookup-itsfoss.png?resize=800%2C405&ssl=1 -[8]: https://flathub.org/apps/details/com.github.johnfactotum.QuickLookup -[9]: https://itsfoss.com/what-is-flatpak/ -[10]: https://itsfoss.com/pop-os-20-04-review/ -[11]: https://itsfoss.com/flatpak-guide/ -[12]: https://github.com/johnfactotum/quick-lookup/releases/tag/1.2.0 -[13]: https://wiki.gnome.org/Apps/Builder -[14]: https://github.com/johnfactotum/quick-lookup -[15]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/05/LanguageTool-grammar-checker.png?fit=800%2C450&ssl=1 -[16]: https://itsfoss.com/languagetool-review/ -[17]: https://itsfoss.com/best-ebook-readers-linux/ diff --git a/sources/tech/20201112 Test GNOME apps on this Linux reference platform.md b/sources/tech/20201112 Test GNOME apps on this Linux reference platform.md deleted file mode 100644 index ace15dfa50..0000000000 --- a/sources/tech/20201112 Test GNOME apps on this Linux reference platform.md +++ /dev/null @@ -1,70 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Test GNOME apps on this Linux reference platform) -[#]: via: (https://opensource.com/article/20/11/gnome-os) -[#]: author: (Jim Hall https://opensource.com/users/jim-hall) - -Test GNOME apps on this Linux reference platform -====== -Introducing GNOME OS, the plain-vanilla Linux reference platform that -makes it easier to test GNOME applications and bug reports. -![Penguin with green background][1] - -I'm very excited about [GNOME 3.38][2]. The new version of the Linux desktop environment includes [lots of new features and a noticeable performance boost][3]. But in the background, mostly unnoticed, is another neat new thing about GNOME: the development of GNOME OS. - -As you might guess from its name, GNOME OS is a Linux distribution that uses GNOME as its desktop. But unlike Pop!_OS, Fedora, or Ubuntu, GNOME OS isn't meant as a complete Linux distribution. Instead, it is a reference platform for GNOME. - -The idea is to have a standard operating system image running GNOME to give developers a consistent platform to test on. As GNOME makes new releases, the GNOME development team can share that image with testers, so they can experience the new version. - -This is significant for GNOME testing. Previously, if someone reported a bug in a GNOME application, a developer would have to dig into the bug report and determine if the bug is really in the GNOME desktop or if it happened because the distribution did something or tweaked something in GNOME that had a knockdown effect on a GNOME application. But with GNOME OS, developers have a standard reference platform that is always a _vanilla_ version of GNOME. Developers can reproduce bug reports using GNOME OS; if they can reproduce the bug, they know it's really with GNOME and not someone else's "spin" on GNOME. - -As such, GNOME OS is not meant to be a full desktop operating system. It's just meant to be a place to test GNOME and GNOME applications. - -![Installing GNOME OS][4] - -Installing GNOME OS (Jim Hall, [CC BY-SA 4.0][5]) - -GNOME OS also helps GNOME developers add new features. Imagine having a virtual machine where a developer can test new changes to GNOME Shell and the extensions. In previous GNOME releases, GNOME extensions would usually break in every release. With GNOME OS, developers can test those extensions against a full version of GNOME. Developers and testers don't have to reinstall their full desktop OS—they can just run GNOME OS in a virtual machine and test it there. - -![Booting GNOME OS][6] - -Booting GNOME OS (Jim Hall, [CC BY-SA 4.0][5]) - -That's the big value in GNOME OS. Now extension writers can do their tests using GNOME OS and don't have to wait for a new version of the full GNOME to become available in a standard distribution. This allows GNOME to better support development and testing processes. - -GNOME OS also makes it easier for testers to join the project. If you want to work on GNOME, just download the GNOME OS image and test against that. Because GNOME OS is a reference platform, you know that any bugs you find will be only against GNOME. - -![Running GNOME OS][7] - -Running GNOME OS (Jim Hall, [CC BY-SA 4.0][5]) - -GNOME OS is automatically generated from new builds, so it's always the latest version of GNOME. Whenever there's a change in GNOME, it gets pushed to the GNOME OS image. GNOME OS is managed with [OSTree][8], so you don't have to keep downloading new versions. This also makes it easy to roll back if an update is broken. - -Interested in GNOME OS? Learn more about it at [GNOME OS Nightly][9], or visit the [GitLab project][10] to download a bootable GNOME OS image. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/11/gnome-os - -作者:[Jim Hall][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/jim-hall -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/linux_penguin_green.png?itok=ENdVzW22 (Penguin with green background) -[2]: https://help.gnome.org/misc/release-notes/3.38/ -[3]: https://opensource.com/article/20/10/whats-new-gnome-338 -[4]: https://opensource.com/sites/default/files/uploads/installing-gnome-os.png (Installing GNOME OS) -[5]: https://creativecommons.org/licenses/by-sa/4.0/ -[6]: https://opensource.com/sites/default/files/uploads/booting-gnome-os.png (Booting GNOME OS) -[7]: https://opensource.com/sites/default/files/uploads/running-gnome-os.png (Running GNOME OS) -[8]: https://ostreedev.github.io/ostree/ -[9]: https://os.gnome.org/ -[10]: https://gitlab.gnome.org/GNOME/gnome-build-meta/-/wikis/home diff --git a/sources/tech/20201114 Woothee (HTTP User Agent Parser).md b/sources/tech/20201114 Woothee (HTTP User Agent Parser).md deleted file mode 100644 index 0c0806070e..0000000000 --- a/sources/tech/20201114 Woothee (HTTP User Agent Parser).md +++ /dev/null @@ -1,158 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Woothee (HTTP User Agent Parser)) -[#]: via: (https://theartofmachinery.com/2020/11/14/woothee.html) -[#]: author: (Simon Arneaud https://theartofmachinery.com) - -Woothee (HTTP User Agent Parser) -====== - -I’ve written [a D implementation of the Project Woothee multi-language HTTP user agent parser][1]. Here are some notes about what it’s useful for, and few things special about the D implementation. - -### Project Woothee - -HTTP clients (like normal browsers and search engine crawlers) usually identify themselves to web servers with a user agent string. These strings often contain interesting information like the client name, client version and operating system, but the HTTP spec makes no rules about how this information should be structured (it’s free-form text). Parsing them requires a bunch of rules based on what real clients use in the wild. - -There’s a project called [ua-parser][2] that maintains a list of (currently) ~1000 regular expressions for parsing user agent strings. Project Woothee is another project that’s less comprehensive, but faster than testing 1000 regexes. Sometimes you want a more comprehensive parser, but sometimes it doesn’t really help. For example, suppose you want to estimate the proportion of your users running Firefox versus Chrome versus whatever by processing a big web log dump. The answer will never be 100% accurate (even with 100% accurate parsing) because bots pretending to be Chrome browsers will skew the results a bit anyway. - -Woothee has some quirks (e.g., it doesn’t distinguish RSS reader clients) but it has uses, too. - -### The D version - -I wanted to keep the D version code simple so that it can be easily updated when the upstream project data gets updated. I took some easy opportunities to make it faster, though. In a quick, unscientific test, it parsed ~1M strings from a web log on a five-year-old laptop in about 5s. I’m sure it could be made faster, but that’s good enough for me right now. - -#### Preprocessing regexes and HTTP client data - -Woothee still uses some regexes (about 50). In most languages, these are strings that need to be processed at runtime, every time the program is run. I don’t know if [Boost Xpressive][3] was the first to support compile-time regex parsing, but I remember being impressed by it at the time. The downside is having to use an operator overloading hack that manages to make regexes even harder to read: - -``` -sregex re = '$' >> +_d >> '.' >> _d >> _d; -``` - -We’ve come a long way since 2007. [D’s standard library has a compile-time regex][4], but it’s not even needed. This works: - -``` -void foo() -{ - import std.regex; - static immutable re = regex(`\$\d+\.\d\d`); - // ... -} -``` - -If you’re wondering: `static` puts the `re` into the same storage space as a global variable would be in (instead of the stack, which is run time only), while `immutable` allows the compiler to avoid copying the variable into thread-local storage for every thread. If you’re from C++, you might expect that `regex()` will still get called once at run time to initialise `re`, but thanks to [CTFE][5] it’s processed at compile time and turned into normal data in the compiled binary. - -There’s one big downside: this kind of complex CTFE is still slow. Compiling all the regexes using DMD takes ~10s, long enough to be annoying. So I added a [version flag][6] `WootheePrecompute`. Switching regex CTFE is simpler because the regex matching functions in `std.regex` also have overloads that take plain strings for regexes (which then get compiled and passed to the overload that takes a pre-compiled regex). `woothee-d` uses a helper function defined like this: - -``` -version(WootheePrecompute) -{ - auto buildRegex(string r) - { - return regex(r); - } -} -else -{ - auto buildRegex(string r) - { - return r; - } -} -``` - -Then regexes get used in the code like this: - -``` -static immutable version_re = buildRegex(`Sleipnir/([.0-9]+)`); -const caps = _agent.matchFirst(version_re); -``` - -Without `WootheePrecompute`, `buildRegex()` has no effect, and `version_re` is just a plain string that gets compiled on use. With `WootheePrecompute` enabled, `buildRegex()` actually compiles the regex using CTFE. - -`WootheePrecompute` also enables processing the Project Woothee HTTP client data at compile time instead of at startup. - -#### More precomputation for faster string searching - -Woothee requires a lot of searching for strings inside the user agent string. Here’s a small sample: - -``` -if (contains!"Yahoo" || contains!"help.yahoo.co.jp/help/jp/" || contains!"listing.yahoo.co.jp/support/faq/") -{ - if (contains!"compatible; Yahoo! Slurp") return populateDataset("YahooSlurp"); - if (contains!"YahooFeedSeekerJp" || contains!"YahooFeedSeekerBetaJp" || contains!"crawler (http://listing.yahoo.co.jp/support/faq/" || contains!"crawler (http://help.yahoo.co.jp/help/jp/" || contains!"Y!J-BRZ/YATSHA crawler" || contains!"Y!J-BRY/YATSH crawler") return populateDataset("YahooJP"); - if (contains!"Yahoo Pipes") return populateDataset("YahooPipes"); -} -``` - -You may have noticed that `contains` is a template function taking the “needle” string as compile-time parameter. There are many famous ways to make searching for a “needle” string in a “haystack” string faster if you can preprocess either one. The Boyer-Moore algorithm is one algorithm, and there’s actually [an implementation in Phobos][7], but sadly it doesn’t work in CTFE. - -I tried another trick that’s simple and fast for short strings. The key idea is that there’s no point searching for a needle like “foo” if the haystack doesn’t even contain both the letters “f” and “o” in the first place. We can create a 64b hash of both strings that lets us do an approximate character subset test with a super-fast bitwise operation (like a [bloom filter][8]). The hashes for all the needle strings can be calculated at compile time, and the hash for the haystack (the user agent string) only needs to calculated once. - -The hash is super simple. Each byte in the string just sets one of the 64 bits of the output. Specifically, the hash takes each byte in the string, calculates the value modulo 64 (equivalently, takes the lower 6 bits), then sets the corresponding bit of the 64b output. Here’s the code: - -``` -ulong bloomHashOf(string s) pure -{ - ulong ret; - foreach (char c; s) - { - ret |= 1UL << (c & 63); - } - return ret; -} -``` - -Here’s an example with the string, “X11; FreeBSD ”: - -![Bloom-filter-style 64b hash of the string “X11; FreeBSD ”. The string starts with the letter “X”, which has ASCII code 88, which is 64 + 24, which is why bit #24 is set.][9] - -Note that the hash doesn’t count occurrences of a character; it just flags whether a particular character occurs at all. It also loses all information about order. It’s still useful for avoiding a lot of futile searches. For example, “Tiny Tiny RSS/20.05-c8243b0 ( doesn’t contain the character “X”, so there’s no way it can contain the string “X11; FreeBSD ”, as is easily detected by the hashes: - -![Hashes of the string “Tiny Tiny RSS/20.05-c8243b0 \(http://tt-rss.org/\)” and the string “X11; FreeBSD ”. The first hash doesn't have bit #24 set, proving that the first string can't contain a letter “X”, proving that the second string can't be contained inside it.][10] - -Here’s the D code. It does a quick bitwise op to check if _all_ the bits set in the needle hash are also set in the (previously calculated) user agent string hash. `bloomHashOf(needle)` is calculated as a constant at compile time. In fact, LDC with `-O2` inlines very sensibly, basically putting some bit ops with a 64b constant in front of a conditional jump in front of the call to `canFind()`. This precomputation is dirt cheap, so I didn’t even bother putting a `version(WootheePrecompute)` in there, as you can see for yourself: - -``` -bool contains(string needle)() -{ - import std.algorithm.searching : canFind; - enum needle_bloom = bloomHashOf(needle); - if ((needle_bloom & _agent_bloom) != needle_bloom) return false; - return _agent.canFind(needle); -} -``` - -The quick check is one sided. If it fails, we know we don’t need to search. If it passes, that doesn’t prove we have a substring match because the hash doesn’t account for repeated characters, or character order, and can also have different characters colliding to set the same bit value. - -Simply taking the bottom 6 bits is a pretty unsophisticated hashing technique, but if you look at an ASCII chart (`man ascii`), most of the characters that typically appear in HTTP user agents are in the range 64-127, which all have different values in the bottom 6 bits. So collisions aren’t a real problem, and actually [most pseuodorandom hashes would do a worse job][11]. - -In a simple test with real HTTP user agents from a log, 89% of potential `canFind()` calls were skipped thanks to the quick check, 9% were followed but failed and 2% were followed and found a real match. Overall, the quick check made `woothee-d` almost twice as fast, which is a nice win for some cheap precomputation. I think there’s more performance that could be gained, but it looks like most of the low-hanging fruit for string search has been taken. - --------------------------------------------------------------------------------- - -via: https://theartofmachinery.com/2020/11/14/woothee.html - -作者:[Simon Arneaud][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://theartofmachinery.com -[b]: https://github.com/lujun9972 -[1]: https://gitlab.com/sarneaud/woothee-d -[2]: https://github.com/ua-parser -[3]: https://www.boost.org/doc/libs/1_74_0/doc/html/xpressive/user_s_guide.html#boost_xpressive.user_s_guide.creating_a_regex_object.static_regexes -[4]: https://dlang.org/phobos/std_regex.html#ctRegex -[5]: https://tour.dlang.org/tour/en/gems/compile-time-function-evaluation-ctfe -[6]: https://dlang.org/spec/version.html -[7]: https://dlang.org/phobos/std_algorithm_searching.html#boyerMooreFinder -[8]: https://en.wikipedia.org/wiki/Bloom_filter -[9]: https://theartofmachinery.com/images/woothee/bloom.svg -[10]: https://theartofmachinery.com/images/woothee/bloom_mismatch.svg -[11]: https://theartofmachinery.com/2020/01/27/systems_programming_probability.html diff --git a/sources/tech/20201116 Day 5- drawing lots of faces with sketch-rnn.md b/sources/tech/20201116 Day 5- drawing lots of faces with sketch-rnn.md deleted file mode 100644 index 0b1e0a4d5f..0000000000 --- a/sources/tech/20201116 Day 5- drawing lots of faces with sketch-rnn.md +++ /dev/null @@ -1,87 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Day 5: drawing lots of faces with sketch-rnn) -[#]: via: (https://jvns.ca/blog/2020/11/16/day-5--lots-of-faces-with-sketch-rnn/) -[#]: author: (Julia Evans https://jvns.ca/) - -Day 5: drawing lots of faces with sketch-rnn -====== - -Hello! This week it’s generative art week at RC, and I thought it would be fun to generate drawings of faces. - -Someone suggested the [Google Quickdraw][1] dataset, which has a lot of pictures of faces. And even though I think most of the faces in there are not really that interesting, I really quite like some of them, like these two: - -![][2] ![][3] - -So that seems like somewhere to start! - -### step 1: get the sketch-rnn model - -sketch-rnn is an RNN trained on the quickdraw dataset that generates line drawings. You can see it in action in Monica Dinculescu’s very fun [magic sketchpad][4] demo here – you start making a drawing, and it’ll complete you drawing as a cat / bridge / whatever you want. - -I figured that would be a fun place to start, and [ml5js][5] has a [tutorial showing how to write Javascript code to draw things with sketch-rnn][6], which I followed. - -### step 2: make the tutorial code use async/await - -The ml5js example had a bunch of global variables and callbacks and I found it difficult to work with, so I spent a while refactoring it to use async/await so that I could play around with it more easily. This took a while but I got it to work. - -### step 3: make sketch-rnn draw lots of faces and put them into a gallery - -I started out with making a more interactive website, but decided to instead do something really simple to start: just get the model to draw a lot of faces and see how I felt about them. - -Here’s the resulting (very janky, not responsive) website I made, which draws faces and then puts them into a little “gallery” on the right: [lots of sketch-rnn faces][7]. You can see it “live” drawing the faces which is fun. - -The set of images that comes out looks something like this: - -![][8] - -I don’t really like _any_ of these faces, but it’s a start! It’s also very slow on my 2015 laptop, but faster on the iPad. I didn’t spend a lot of time profiling it, but it seems to spend a lot of time in some function with `lstm` in its name – I don’t know what an LSTM is exactly but I know it’s a component of an RNN, so I guess (as you’d expect) it just has a lot of math to do in Javascript to calculate the next line to draw and that’s slow. - -### next step: maybe find out if sketch-rnn can tell the difference between “interesting” and “boring” faces - -I think that this face: - -![][2] - -is a lot more interesting than this face: - -![][9] - -Can I convince the neural network to distinguish between faces that I think are ‘interesting’ and ‘boring’ and maybe only generate more “interesting” faces? We’ll see! Right now I am stuck on trying to get a pre-trained model loaded into Python, so there’s a long way to go. - -I did find someone who’d done something kind of similar, on [bad flamingos vs good flamingos][10] in the quickdraw dataset. - -I still don’t really know anything about RNNs, but maybe if I can answer this question I will learn something about them. - -### also there’s a refrigerator poetry forum - -Here’s that refrigerator poetry forum I was talking about last week: . You can write magnet poetry-style poems on a refrigerator. People wrote some charming poems and I’m happy with it. I think I might use Rails for another project in the future. - -Hopefully people won’t abuse it, if there’s abuse I’ll just take it off the internet probably. - --------------------------------------------------------------------------------- - -via: https://jvns.ca/blog/2020/11/16/day-5--lots-of-faces-with-sketch-rnn/ - -作者:[Julia Evans][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://jvns.ca/ -[b]: https://github.com/lujun9972 -[1]: https://quickdraw.withgoogle.com/data/face -[2]: https://jvns.ca/images/face1.jpg -[3]: https://jvns.ca/images/face2.jpg -[4]: https://magic-sketchpad.glitch.me/ -[5]: https://learn.ml5js.org -[6]: https://github.com/ml5js/ml5-library/tree/main/examples/javascript/SketchRNN/SketchRNN_interactive -[7]: https://lots-of-sketchrnn-faces.netlify.app/ -[8]: https://jvns.ca/images/faces.png -[9]: https://jvns.ca/images/boring-face.png -[10]: https://colinmorris.github.io/blog/bad_flamingos diff --git a/sources/tech/20201116 Manage multiple Terraform versions with tfenv.md b/sources/tech/20201116 Manage multiple Terraform versions with tfenv.md deleted file mode 100644 index 28ddcd0b4c..0000000000 --- a/sources/tech/20201116 Manage multiple Terraform versions with tfenv.md +++ /dev/null @@ -1,262 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Manage multiple Terraform versions with tfenv) -[#]: via: (https://opensource.com/article/20/11/tfenv) -[#]: author: (Jessica Cherry https://opensource.com/users/cherrybomb) - -Manage multiple Terraform versions with tfenv -====== -If you use multiple Terraform versions in your environment, tfenv will -make your life much easier. -![Computer screen with files or windows open][1] - -In my [Terraform for Kubernetes beginners][2] article, I used Terraform 11, and in an upcoming article, I'll cover upgrading from Terraform 11 to 12. To prepare for that, in this article, I'll show you how to use [tfenv][3], a tool that makes it much easier to convert from one version to another, as well as to manage multiple Terraform versions in your work environment. - -### Install tfenv - -Many coding languages have tools that allow you to go back and forth between versions based on environmental rules. One example (which tfenv is based on) is [rbenv][4], which allows you to choose which version of [Ruby][5] you want to work with. - -tfenv works on Linux, macOS, and Windows; I'll cover the Linux installation using Ubuntu 18.04, but the tool's GitHub repository has [installation instructions][6] for the other operating systems. - -The Linux installation uses some Git commands (check out the [intro to Git][7] series if you're not already familiar with it). - -First, create a `.tfenv` folder in your `${HOME}` directory: - - -``` -`jess@Athena:~$ mkdir .tfenv` -``` - -Clone the `tfenv` repository: - - -``` -jess@Athena:~$ git clone ~/.tfenv -Cloning into '/home/jess/.tfenv'... -remote: Enumerating objects: 21, done. -remote: Counting objects: 100% (21/21), done. -remote: Compressing objects: 100% (19/19), done. -remote: Total 1105 (delta 8), reused 10 (delta 2), pack-reused 1084 -Receiving objects: 100% (1105/1105), 216.01 KiB | 2.84 MiB/s, done. -Resolving deltas: 100% (703/703), done. -``` - -If you prefer [Homebrew][8], you can use: - - -``` -`$ brew install tfenv` -``` - -Export your path into your Bash profile: - - -``` -`jess@Athena:~$ echo 'export PATH="$HOME/.tfenv/bin:$PATH"' >> ~/.bash_profile` -``` - -If you want to use just the base commands for Ubuntu/Debian-based systems, there is another option that makes things a little easier. After doing the clone in the `.tfenv` directory, set your profile to put the `tfenv` command into your profile in your next session: - - -``` -`jess@Athena:~/.tfenv$ . ~/.profile` -``` - -Once the profile is set, you can symlink your directory to your `.local/bin` directory to make `tfenv` an executable binary: - - -``` -`jess@Athena:~/.tfenv$ ln -s ~/.tfenv/bin/* ~/.local/bin` -``` - -Run the `which` command, and you should see `tfenv`'s location: - - -``` -jess@Athena:~/.tfenv$ which tfenv -/home/jess/.local/bin/tfenv -``` - -### How to use tfenv - -Now that everything is installed, check out what commands are available: - - -``` -jess@Athena:~$ tfenv -tfenv 2.0.0-37-g0494129 -Usage: tfenv <command> [<options>] - -Commands: -   install      Install a specific version of Terraform -   use          Switch a version to use -   uninstall    Uninstall a specific version of Terraform -   list         List all installed versions -   list-remote  List all installable versions -``` - -As you can see, it's a pretty straightforward tool that enables you to install and uninstall Terraform versions as needed. - -Before you decide what to install, check which versions are available. This is a small snippet, as the list is about a mile long: - - -``` -jess@Athena:~$ tfenv list-remote -0.14.0-beta1 -0.14.0-alpha20201007 -0.14.0-alpha20200923 -0.14.0-alpha20200910 -0.13.5 -0.13.4 -0.13.3 -0.13.2 -0.13.1 -0.13.0 -0.13.0-rc1 -0.13.0-beta3 -0.13.0-beta2 -0.13.0-beta1 -0.12.29 -0.12.28 -0.12.27 -``` - -#### Install Terraform versions - -To install the latest version of Terraform: - - -``` -jess@Athena:~$ tfenv install latest -Installing Terraform v0.13.5 -Downloading release tarball from -###################################################################################################################################################################################### 100.0% -Downloading SHA hash file from -No keybase install found, skipping OpenPGP signature verification -Archive:  tfenv_download.N3bzZ2/terraform_0.13.5_linux_amd64.zip -  inflating: /home/jess/.tfenv/versions/0.13.5/terraform   -Installation of terraform v0.13.5 successful. To make this your default version, run 'tfenv use 0.13.5' -``` - -To install a specific Terraform version (in this case, 0.12.29): - - -``` -jess@Athena:~$ tfenv install 0.12.29 -Installing Terraform v0.12.29 -Downloading release tarball from -###################################################################################################################################################################################### 100.0% -Downloading SHA hash file from -No keybase install found, skipping OpenPGP signature verification -Archive:  tfenv_download.1YFOLh/terraform_0.12.29_linux_amd64.zip -  inflating: /home/jess/.tfenv/versions/0.12.29/terraform   -Installation of terraform v0.12.29 successful. To make this your default version, run 'tfenv use 0.12.29' -``` - -Finally, to install the latest version of Terraform 0.11: - - -``` -jess@Athena:~$ tfenv install latest:^0.11 -Installing Terraform v0.11.15-oci -Downloading release tarball from -###################################################################################################################################################################################### 100.0% -Downloading SHA hash file from -No keybase install found, skipping OpenPGP signature verification -Archive:  tfenv_download.8OxQ8k/terraform_0.11.15-oci_linux_amd64.zip -  inflating: /home/jess/.tfenv/versions/0.11.15-oci/terraform   -Installation of terraform v0.11.15-oci successful. To make this your default version, run 'tfenv use 0.11.15-oci' -``` - -That was simple, and now you can put them to use! - -#### Change Terraform versions - -Once you have installed several versions of Terraform, you can pick one to use. First, find out your options by listing the installed versions: - - -``` -jess@Athena:~$ tfenv list -  0.13.5 (set by /home/jess/.tfenv/version) -  0.12.29 -  0.11.15-oci -``` - -By default, tfenv chooses the most up-to-date version of Terraform you have installed. Find out the default by running the `tfenv use` command: - - -``` -jess@Athena:~$ tfenv use -Switching default version to v0.13.5 -Switching completed - -jess@Athena:~$ terraform --version -Terraform v0.13.5 -``` - -But what if you need to use an older version? This example switches to the oldest version I have installed: - - -``` -jess@Athena:~$ tfenv use 0.11.15-oci -Switching default version to v0.11.15-oci -Switching completed - -jess@Athena:~$ terraform -version -Terraform v0.11.15-oci - -Your version of Terraform is out of date! The latest version -is 0.13.5. You can update by downloading from [www.terraform.io/downloads.html][9] -``` - -It's easy as pie! Just run the `list` command and use the naming convention provided. - -#### Uninstall Terraform versions - -If you have a version of Terraform you don't want or need any more, you can remove it with the `uninstall` command. For example, I don't need Terraform version 0.13: - - -``` -jess@Athena:~$ tfenv uninstall 0.13.5 -Uninstall Terraform v0.13.5 -Terraform v0.13.5 is successfully uninstalled -``` - -To confirm it's no longer installed: - - -``` -jess@Athena:~$ tfenv list -  0.12.29 -  0.11.15-oci -``` - -### Final thoughts - -The tfenv tool is great for many reasons. If you need to update from one version of Terraform to another, this is one of the faster ways to upgrade and test the outcome. If your environment has things running on several Terraform versions, it's easy to switch back and forth as needed. If you use Terraform, try tfenv and see how it can transform your environment. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/11/tfenv - -作者:[Jessica Cherry][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/cherrybomb -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/browser_screen_windows_files.png?itok=kLTeQUbY (Computer screen with files or windows open) -[2]: https://opensource.com/article/20/7/terraform-kubernetes -[3]: https://github.com/tfutils/tfenv -[4]: https://github.com/rbenv/rbenv -[5]: https://www.ruby-lang.org/en/ -[6]: https://github.com/tfutils/tfenv#installation -[7]: https://opensource.com/life/16/7/stumbling-git -[8]: https://opensource.com/article/20/6/homebrew-linux -[9]: http://www.terraform.io/downloads.html diff --git a/sources/tech/20201117 How to upgrade to Terraform 0.12.md b/sources/tech/20201117 How to upgrade to Terraform 0.12.md deleted file mode 100644 index 6f38dd9201..0000000000 --- a/sources/tech/20201117 How to upgrade to Terraform 0.12.md +++ /dev/null @@ -1,503 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (How to upgrade to Terraform 0.12) -[#]: via: (https://opensource.com/article/20/11/update-terraform) -[#]: author: (Jessica Cherry https://opensource.com/users/cherrybomb) - -How to upgrade to Terraform 0.12 -====== -Updating your environment to Terraform 0.12 is not for the faint of -heart, but this how-to will make it less painful. -![Green graph of measurements][1] - -In [getting started with Terraform][2], I used Terraform version 0.11. As some readers pointed out, this version lacks some significant features, so in this article, I'll explain how to update Terraform to the more feature-rich version 0.12. - -You may be surprised to learn that many people still use Terraform 0.11, including large organizations and stubborn users who like to stay on tried-and-true technology. Converting from Terraform 0.11 to 0.12 can be very complex. If you want to take advantage of the newer features but think you're not ready to update, this article should help make the conversion easier. - -In this article, I'll use the code from my "getting started" article and the [tfenv][3] tool, which enables you to use different versions of Terraform on the same machine. I'll also assume that you're familiar with two versions of Terraform (the one you're using, and the one you're migrating to), and how to use the `terraform` command in general. - -### Code changes needed for version 12 - -Some things work in Terraform version 0.11 that do not work in version 0.12. Here is an example of code I used in my previous article: - - -``` -resource "kubernetes_namespace" "1-minikube-namespace" { -  metadata { -        name = "my-first-terraform-namespace" -  } -} -``` - -As one reader pointed out, this code block does not work in version 0.12 due to changes in the way the latest Terraform works. This is a simple example, and it gets more complicated. Here are some examples of how much things may need to change in a production environment. - -The new Terraform needs slightly different syntax and structure. For starters, add a `vars.tf` file: - - -``` -variable "namespace" { -  type = "string" -  default = "helloworld" -} - -variable "cluster" { -  type = "string" -  default = "minikube" -} -``` - -Then, change parts of the `main.tf` file to incorporate the new `vars.tf` file. The Kubernetes provider now looks like this: - - -``` -provider "kubernetes" { -  config_context_cluster   = "${var.cluster}" -} -``` - -Here is the revised namespace resource: - - -``` -resource "kubernetes_namespace" "1-minikube-namespace" { -  metadata { -        name = "${var.namespace}" -  } -} -``` - -Finally, the changed [Helm provider][4]: - - -``` -provider "helm" { -  kubernetes { -        config_context_cluster   = "${var.cluster}" -  } -} -``` - -Beware! These small changes will matter when switching between versions. - -### Deploy before conversion - -Before moving forward, [set up tfenv][5] to use the correct version of Terraform: - - -``` -jess@Athena:~/terraform_doc$ tfenv list -  0.12.29 -  0.11.15-oci -jess@Athena:~/terraform_doc$ tfenv use 0.11.15-oci -Switching default version to v0.11.15-oci -Switching completed -jess@Athena:~/terraform_doc$ terraform --version -Terraform v0.11.15-oci -\+ provider.helm v1.2.2 -\+ provider.kubernetes v1.11.2 - -Your version of Terraform is out of date! The latest version -is 0.xx.y. You can update by downloading from [www.terraform.io/downloads.html][6] -``` - -If you (like me) have done other work with Terraform after using the code in my previous Terraform article, you need to redeploy everything. Set up the Minikube cluster for this Terraform deployment by starting a new, clean cluster: - - -``` -$ minikube delete -🔥  Deleting "minikube" in kvm2 ... -💀  Removed all traces of the "minikube" cluster. -jess@Athena:~/terraform_doc$ minikube start -😄  minikube v1.14.0 on Ubuntu 18.04 -``` - -After the cluster is set up, you can deploy your modified Terraform code. Start with the `init` command: - - -``` -$ terraform init - -Initializing provider plugins... - -The following providers do not have any version constraints in configuration, -so the latest version was installed. - -To prevent automatic upgrades to new major versions that may contain breaking -changes, it is recommended to add version = "..." constraints to the -corresponding provider blocks in configuration, with the constraint strings -suggested below. - -* provider.helm: version = "~> 1.2" -* provider.kubernetes: version = "~> 1.11" - -Terraform has been successfully initialized! - -You may now begin working with Terraform. Try running "terraform plan" to see -any changes that are required for your infrastructure. All Terraform commands -should now work. [...] -``` - -Next, run your plan: - - -``` -$ terraform plan -Refreshing Terraform state in-memory prior to plan... -helm_release.local: Refreshing state... (ID: buildachart) -kubernetes_namespace.1-minikube-namespace: Refreshing state... (ID: my-first-terraform-namespace) [...] - -Terraform will perform the following actions: - -  + helm_release.local -        id:                            <computed> -        atomic:                        "false" -        chart:                         "./buildachart" -        cleanup_on_fail:               "false" -        create_namespace:              "false" -        dependency_update:             "false" -        disable_crd_hooks:             "false" -        disable_openapi_validation: "false" -        [...] -  + kubernetes_namespace.1-minikube-namespace -        id:                            <computed> -        metadata.#:                     "1" -        [...] - -Note: You didn't specify an "-out" parameter to save this plan, so Terraform -can't guarantee that exactly these actions will be performed if -"terraform apply" is subsequently run. -``` - -Finally, apply the Terraform: - - -``` -$ terraform apply --auto-approve -helm_release.local: Refreshing state... (ID: buildachart) -kubernetes_namespace.1-minikube-namespace: Refreshing state... (ID: my-first-terraform-namespace) -kubernetes_namespace.1-minikube-namespace: Creating... -  metadata.#:                   "" => "1" -  metadata.0.generation:       "" => "<computed>" -  [...] -helm_release.local: Creating... -  atomic:                      "" => "false" -  chart:                       "" => "./buildachart" -  cleanup_on_fail:             "" => "false" -  create_namespace:            "" => "false" - [...] -  version:                     "" => "0.1.0" -  wait:                        "" => "true" -kubernetes_namespace.1-minikube-namespace: Creation complete after 1s (ID: helloworld) -helm_release.local: Still creating... (10s elapsed) -helm_release.local: Creation complete after 13s (ID: buildachart) - -Apply complete! Resources: 2 added, 0 changed, 0 destroyed. -``` - -Now you have a local backup of the Terraform state: - - -``` -$ ls -lrt - -drwxr-xr-x 6 jess jess 4096 May 16 14:15 buildachart --rw-r--r-- 1 jess jess  363 Oct 24 13:06 main.tf --rw-rw-r-- 1 jess jess  132 Oct 24 13:17 vars.tf --rw-rw-r-- 1 jess jess 3897 Oct 24 13:20 terraform.tfstate.backup --rw-rw-r-- 1 jess jess 3821 Oct 24 13:21 terraform.tfstate -``` - -### Convert from Terraform 0.11 to 0.12 - -Once everything is deployed using Terraform 0.11, you must work through the conversion process without damaging what you have in your new production cluster. First, change your Terraform version to 0.12 using tfenv: - - -``` -$ tfenv list -  0.12.29 -* 0.11.15-oci (set by /home/jess/.tfenv/version) -jess@Athena:~/terraform_doc$ tfenv use 0.12.29 -Switching default version to v0.12.29 -Switching completed -jess@Athena:~/terraform_doc$ terraform --version -Terraform v0.12.29 -\+ provider.helm v1.2.2 -\+ provider.kubernetes v1.11.2 -``` - -Now that you're on Terraform 0.12, you're ready to convert. Luckily, Terraform has a built-in command for this, as shown in this snippet from the Terraform command list: - - -``` -All other commands: -        0.12upgrade     Rewrites pre-0.12 module source code for v0.12 -``` - -Test the `upgrade` command to see what will be rewritten, then enter `yes` to do the upgrade: - - -``` -$ terraform 0.12upgrade - -This command will rewrite the configuration files in the given directory so -that they use the new syntax features from Terraform v0.12, and will identify -any constructs that may need to be adjusted for correct operation with -Terraform v0.12. -[...] -Would you like to upgrade the module in the current directory? -  Only 'yes' will be accepted to confirm. - -  Enter a value: yes - -\----------------------------------------------------------------------------- - -Upgrade complete! - -The configuration files were upgraded successfully. Use your version control -system to review the proposed changes, make any necessary adjustments, and -then commit. -``` - -It seems to have gone well. It may have rewritten some things, but that will not account for everything that needs to be changed with the Terraform files. However, it does a great job of making notes within the files. Here are the changes it made to the `vars.tf` file: - - -``` -variable "namespace" { -  type  = string -  default = "helloworld" -} - -variable "cluster" { -  type  = string -  default = "minikube" -} -``` - -The `type` changed to remove quotes around the word `string` (quoting in Terraform files has changed over time). Next, look at the `main.tf` file: - - -``` -provider "kubernetes" { -  config_context_cluster = var.cluster -} - -# TF-UPGRADE-TODO: In Terraform v0.11 and earlier, it was possible to begin a -# resource name with a number, but it is no longer possible in Terraform v0.12. -# -# Rename the resource and run `terraform state mv` to apply the rename in the -# state. Detailed information on the `state move` command can be found in the -# documentation online: -resource "kubernetes_namespace" "1-minikube-namespace" { -  metadata { -        name = var.namespace -  } -} - -provider "helm" { -  kubernetes { -        config_context_cluster = var.cluster -  } -} - -resource "helm_release" "local" { -  name  = "buildachart" -  chart = "./buildachart" -} -``` - -The quotes changed here, too, and variables are no longer wrapped in `${}` characters. The biggest section is a large TODO note that the conversion command placed in the code to show what needs to change in the resource name to be acceptable in version 0.12. Even better, it explains how to fix this issue and the command you need to run. The other major changes are the new `versions.tf` file and a new backup file: - - -``` -$ ls -lrt -drwxr-xr-x 6 jess jess 4096 May 16 14:15 buildachart --rw-rw-r-- 1 jess jess 3897 Oct 24 13:20 terraform.tfstate.backup --rw-r--r-- 1 jess jess   46 Oct 24 13:28 versions.tf --rw-rw-r-- 1 jess jess  140 Oct 24 13:55 vars.tf --rw-r--r-- 1 jess jess  369 Oct 24 13:56 main.tf --rw-rw-r-- 1 jess jess 3821 Oct 24 13:56 terraform.tfstate.1603562212.backup --rw-rw-r-- 1 jess jess 3827 Oct 24 13:56 terraform.tfstate -``` - -To update your production cluster, start with a different name that is better suited for this version: - - -``` -resource "kubernetes_namespace" "upgrade-minikube-namespace" { -  metadata { -        name = var.namespace -  } -} -``` - -#### Smoothing the rough edges - -After that change, you must run the `terraform state mv` command (as referenced in the large TODO note). But first, run `state list` to see what you're working with: - - -``` -$ terraform state list -helm_release.local -Kubernetes_namespace.1-minikube-namespace -``` - -The namespace is still set in the state as `1-minikube-namespace`, and that's the state you need to move. This can be done by ensuring you have the new and old resource names, then running the `terraform state mv` command. But before that, you must switch back to 0.11, using tfenv to make those changes, because this was deployed using Terraform 0.11, and 0.12 doesn't recognize the numbers at the start of the resource name (as the TODO says). You'll have to revert all the code changes the Terraform upgrade made except for the resource name change: - -**main.tf** - - -``` -provider "kubernetes" { -  config_context_cluster   = "${var.cluster}" -} - -resource "kubernetes_namespace" "upgrade-minikube-namespace" { -  metadata { -        name = "${var.namespace}" -  } -} - -provider "helm" { -  kubernetes { -        config_context_cluster   = "${var.cluster}" -  } -} -resource "helm_release" "local" { -  name          = "buildachart" -  chart         = "./buildachart" -} -``` - -**Vars.tf** - - -``` -variable "namespace" { -  type  = "string" -  default = "helloworld" -} - -variable "cluster" { -  type  = "string" -  default = "minikube" -} -``` - -Once the changes are back in place, switch tfenv back to version 0.11, and run the `state mv` command: - - -``` -$ tfenv use 0.11.15-oci -Switching default version to v0.11.15-oci -Switching completed -jess@Athena:~/terraform_doc$ terraform state mv 'kubernetes_namespace.1-minikube-namespace' 'kubernetes_namespace.upgrade-minikube-namespace' -Moved kubernetes_namespace.1-minikube-namespace to kubernetes_namespace.upgrade-minikube-namespace -``` - -### Final steps - -After this is complete, change tfenv back to version 0.12, and then remove your `versions.tf` file to make sure the conversion completes. If you don't remove this file, you'll get an error message: - - -``` -$ terraform 0.12upgrade -Error: Module already upgraded - -  on versions.tf line 3, in terraform: -   3:  required_version = ">= 0.12" - -The module in directory . has a version constraint that suggests it has -already been upgraded for v0.12. If this is incorrect, either remove this -constraint or override this heuristic with the -force argument. Upgrading a -module that was already upgraded may change the meaning of that module. -``` - -Remove the file and run the command: - - -``` -$ terraform 0.12upgrade - -This command will rewrite the configuration files in the given directory so -that they use the new syntax features from Terraform v0.12, and will identify -any constructs that may need to be adjusted for correct operation with -Terraform v0.12. [...] - -Would you like to upgrade the module in the current directory? -  Enter a value: yes - -\----------------------------------------------------------------------------- - -Upgrade complete! -``` - -#### Test the conversion with another deployment - -Test your new conversion by re-running your `init`, `plan`, and `apply` commands (I omitted chunks of the output in these snippets): - - -``` -$ terraform init - -Initializing the backend... -Initializing provider plugins... -[...] -Terraform has been successfully initialized! - -$ terraform plan -Refreshing Terraform state in-memory prior to plan... -The refreshed state will be used to calculate this plan, but will not be -persisted to local or remote state storage. - -helm_release.local: Refreshing state... [id=buildachart] -kubernetes_namespace.upgrade-minikube-namespace: Refreshing state... [id=helloworld] - -\------------------------------------------------------------------------ - -No changes. Infrastructure is up-to-date - -$ terraform apply -helm_release.local: Refreshing state... [id=buildachart] -kubernetes_namespace.upgrade-minikube-namespace: Refreshing state... [id=helloworld] - -Apply complete! Resources: 0 added, 0 changed, 0 destroyed. -``` - -As this shows, once everything was preconfigured and the state moved and reapplied during the conversion, no other changes were made because the infrastructure is in place. - -### Final thoughts - -Code and application upgrades are hard to do, especially in a live production environment. This is very true when converting from Terraform 0.11 to 0.12. I've done this on a large scale, and it involved extensive planning over a two-week timeframe. - -If you're going to do this in your production environment, make sure you: - - * Start by removing any resources or modules with prepended numbers. - * Move the state before running the upgrade. - * Keep your upgraded Terraform files in a forked repo for safety. - - - -I hope this article helps you move forward more quickly and easily than I did. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/11/update-terraform - -作者:[Jessica Cherry][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/cherrybomb -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/metrics_lead-steps-measure.png?itok=DG7rFZPk (Green graph of measurements) -[2]: https://opensource.com/article/20/7/terraform-kubernetes -[3]: https://github.com/tfutils/tfenv -[4]: https://opensource.com/article/20/3/helm-kubernetes-charts -[5]: https://opensource.com/article/20/11/tfenv -[6]: http://www.terraform.io/downloads.html diff --git a/sources/tech/20201118 Apply the Scientific Method to agile development.md b/sources/tech/20201118 Apply the Scientific Method to agile development.md deleted file mode 100644 index 983e15a972..0000000000 --- a/sources/tech/20201118 Apply the Scientific Method to agile development.md +++ /dev/null @@ -1,170 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Apply the Scientific Method to agile development) -[#]: via: (https://opensource.com/article/20/11/hypothesis-driven-development) -[#]: author: (Alex Bunardzic https://opensource.com/users/alex-bunardzic) - -Apply the Scientific Method to agile development -====== -Hypothesis-driven development allows constant analysis of new -information to implement new insights (and deliver new customer value) -on an ongoing basis. -![Science lab with beakers][1] - -> "The only way it’s all going to go according to plan is if you don’t learn anything." —Kent Beck - -Experimentation is the foundation of the scientific method, which is a systematic means of exploring the world around us. But experimentation is not only reserved for the field of scientific research. It has a central place in the world of business too. - -Most of us are by now familiar with the business methodology called [Minimum Viable Product (MVP)][2]. This Minimum Viable Product is basically just an experiment. By building and launching MVPs, business operations are engaging in a systematic means of exploring the markets. - -If we look at market leaders today, we learn that they’re not doing projects anymore; the only thing they’re doing is experiments. Customer discovery and lean strategies are only used to test assumptions about the markets. Such an approach is equivalent to Test-Driven Development (TDD), which is the process we are intimately familiar with. In TDD, we write the hypothesis (the test) first. We then use that test to guide our implementation. Ultimately, product or service development is no different than TDD—we first write a hypothesis, then that hypothesis guides our implementation, which serves as measurable validation of the hypothesis. - -### Information discovery - -Back in the pre-agile days, requirements gathering was an important activity that used to always kick off the project. A bunch of subject matter experts (SMEs) would get assigned to the project and be tasked with gathering the requirements. After a prolonged period of upfront information discovery, the gathered requirements got reviewed and, if agreed upon, signed off and frozen. No more changes allowed! - -Back then, it seemed a perfectly reasonable thing to do. The fly in the ointment always showed up once the build phase commenced. Sooner or later, as the project progresses, new information comes to light. Suddenly, what we initially viewed as incontrovertible truth gets challenged by the newly acquired information and evidence. - -But the clincher was in the gated phases. Remember, once requirements get signed off, they get frozen—no more changes, no scope creep allowed—which means newly obtained market insights get willfully ignored. - -Well, that’s kind of foolish neglect. The newly emerging evidence could be of critical importance to the health of the business operation. Can we afford to ignore it? Absolutely not! We have no choice but to embrace the change. - -After a number of prominent fiascos in the industry, many software development projects switched to the agile approach. With agile, information discovery is partial. With agile, we never claim that we have gathered the requirements and are now ready to implement them. We discover information and implement it on an ongoing basis. We do it in tiny steps, keeping our efforts interruptible and steerable at all times. - -### How to leverage the scientific method - -The scientific method is empirical and consists of the following steps: - -Step 1: Make and record careful observations. - -Step 2: Perform orientation with regard to observed evidence. - -Step 3: Formulate a hypothesis, including measurable indicators for hypothesis evaluation. - -Step 4: Design an experiment that will enable testing of the hypothesis. - -Step 5: Conduct the experiment (i.e., release the partial implementation). - -Step 6: Collect the telemetry that results from running the experiment. - -Step 7: Evaluate the results of the experiment. - -Step 8: Accept or reject the hypothesis. - -Step 9: Return to Step 1. - -### How to formulate a hypothesis - -When switching from project to experiments, the traditional user story framework (As a__I want to__so that__) has proven insufficient. The traditional user story format does not expose the signals needed in order to evaluate the outcomes. Instead, the old school user story format is focused on outputs. - -The problem with doing an experiment without first formulating a hypothesis is that there is a danger of introducing a bias when interpreting the results of an experiment. Defining the measurable signals that will enable us to corroborate our hypothesis must be done before we conduct the experiment. That way, we can remain completely impartial when interpreting the results of the experiment. We cannot be swayed by wishful thinking. - -The best way to proceed with formulating a hypothesis is to use the following format: - -We believe [this capability] will result in [this outcome]. We will have the confidence to proceed when [we see a measurable signal]. - -### Working software is not a measure of progress - -Output-based metrics and concepts (definition of "done," acceptance criteria, burndown charts, and velocity) are good for detecting working software but fall miserably when it comes to detecting if working software adds value. - -"Done" only matters if it adds value. Working software that doesn’t add value cannot be declared "done." - -### The forgotten column - -Technology-centric projects break activities down into four columns: - - 1. Backlog of ideas - 2. Analysis - 3. In progress - 4. Shipped - - - -The above structure is based on the strong belief that all software that works is valuable. That focus must now shift toward continuously delivering real value, something that serves customers. Agilists value outcomes (value to the customers) over features. - -The new breakdown for hypothesis-driven development looks something like this: - -Ideas Backlog - -| - -Analysis - -| - -In Progress - -| - -Shipped - -| - -Achieved Desired Outcome - ----|---|---|---|--- - -Hypothesis 11 - -Hypothesis 12 - -Hypothesis 13 - -Hypothesis 14 - -Hypothesis 15 - -Hypothesis 16 - -Hypothesis 17 - -Hypothesis 18 - -Hypothesis 19 - -| - -Hypothesis 20 - -Hypothesis 21 - -| - -Hypothesis 26 - -| - -Hypothesis 2 - -Hypothesis 5 - -Hypothesis 9 - -Hypothesis 10 - -| - -Hypothesis 1 - -Hypothesis 5 - -All eyes must remain on the Achieved Desired Outcome column. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/11/hypothesis-driven-development - -作者:[Alex Bunardzic][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/alex-bunardzic -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/science_experiment_beaker_lab.png?itok=plKWRhlU (Science lab with beakers) -[2]: https://en.wikipedia.org/wiki/Minimum_viable_product#:~:text=A%20minimum%20viable%20product%20%28MVP,feedback%20for%20future%20product%20development.&text=The%20concept%20can%20be%20used,developments%20of%20an%20existing%20product. diff --git a/sources/tech/20201118 Day 8- Start with something that works.md b/sources/tech/20201118 Day 8- Start with something that works.md deleted file mode 100644 index 3ba5299dbd..0000000000 --- a/sources/tech/20201118 Day 8- Start with something that works.md +++ /dev/null @@ -1,66 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Day 8: Start with something that works) -[#]: via: (https://jvns.ca/blog/2020/11/18/how-to-do-hard-projects--start-with-something-that-works/) -[#]: author: (Julia Evans https://jvns.ca/) - -Day 8: Start with something that works -====== - -Today at RC I’m a little stuck so here’s a very short reflection on how to do hard programming problems :) - -I was talking to a friend yesterday about how to do programming projects that are a bit out of your comfort zone, and I realized that there’s a pattern to how I approach new-to-me topics! Here I’m especially thinking about little side projects where you want to get the thing done pretty efficiently. - -When I start on a new project using some technology I haven’t worked with before, I often: - - 1. Find some code on the internet that already does something a little like what I want - 2. Incrementally modify that code until it does what I want, often completely changing everything about the original code in the process - - - -Here are a couple of quick thoughts about this process: - -### it’s important that the initial code _works_ - -Often when I’m out looking for examples, I’ll find a lot of code that I can’t get to work quickly, often because the code is kind of old and things have changed since then. Whenever possible, I try to find code that I can get to work on my computer pretty quickly. - -It’s been pretty helpful to me to give up relatively quickly on code that I can’t get to work right away and look for another example – often there is something out there that’s more recent and that I can get to work more quickly! - -### you have to be able to incrementally change the code into what you want - -Today I’ve been working with some neural network code, and one thing I’m really struggling with for the last couple of days is that I find it pretty easy to find somewhat relevant Jupyter notebooks that do RNN things, and pretty hard to modify those examples to do something closer to what I want. They keep breaking and I then don’t know how to fix them. - -Last week I was working on a Rails app, which I think is something that’s very easy to incrementally change into the program you want: `rails new` gives you a webserver that does almost nothing, but it works! And then you just need to change it one tiny step at a time into the website you want to build. - -### examples of “something that works” - - * If you want to write a window manager, [tinywm][1] is a window manager in 50 lines of C! - * this tiny kernel written in Rust that does nothing was a fun starting point for an operating system (probably it’s not a good starting point today) - * `rails new`, like I talked about above - * I love that projects let you “view source” on the backend of any Glitch project - * Jupyter notebooks, like [these great NLP tutorials by Allison Parrish][2] - - - -### that’s all! - -I think little starting points like this are so important and can be really magical. Finding the right starting point can be hard, but when I find a good one it makes everything so much easier! - --------------------------------------------------------------------------------- - -via: https://jvns.ca/blog/2020/11/18/how-to-do-hard-projects--start-with-something-that-works/ - -作者:[Julia Evans][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://jvns.ca/ -[b]: https://github.com/lujun9972 -[1]: http://incise.org/tinywm.html -[2]: https://twitter.com/aparrish/status/876117075567284225 diff --git a/sources/tech/20201119 Day 9- Generating a lot of nonsense with an RNN.md b/sources/tech/20201119 Day 9- Generating a lot of nonsense with an RNN.md deleted file mode 100644 index 5b6c7c22f6..0000000000 --- a/sources/tech/20201119 Day 9- Generating a lot of nonsense with an RNN.md +++ /dev/null @@ -1,151 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Day 9: Generating a lot of nonsense with an RNN) -[#]: via: (https://jvns.ca/blog/2020/11/19/day-9--generating-a-lot-of-nonsense-with-an-rnn/) -[#]: author: (Julia Evans https://jvns.ca/) - -Day 9: Generating a lot of nonsense with an RNN -====== - -Hello! On Monday I posted about [generating faces with sketch-rnn][1], which I did using a pre-trained RNN model. - -I want to train that model to genreate more complicated faces (which may or may not work!), but I decided that since I knew literally nothing about neural networks it would be good to start with something simpler: [this char-rnn model from Karpathy that generates text that sounds vaguely Shakespearean][2]. - -After spending some time playing with Tensorflow, I decided to use PyTorch with the [fast.ai][3] helper libraries because it’s what my friend Ray was using for his project. - -Here are some initial things I’ve learned about training neural networks. All of this is pretty disjointed and I still have no idea what I’m doing. - -### there are a lot of tensors - -All the data seems to be tensors! A 1-d tensor is a vector, a 2-d tensor is a matrix, and a 3-d tensor is, well, who knows. This is a little new but I have some vague intuition about tensor products from learning about quantum computing ten [years][4] ago so this seems okay. - -They seem not too bad to manipulate, like `tensor.flatten()` will flatten a multidimensional tensor into a vector. I still feel a bit uncertain about the exact order things get flattened in, I need to experiment & think it through. - -The word “dimension” for tensors is also used in a different way than I expected, like I’d usually think that the “dimension” of a 8x9 matrix is 72 (becuase that’s the dimension of the vector space of 8x9 matrices), but in Torch land the “dimension” of a 8x9 matrix seems to be 2. That seems fine though. - -### there are a lot of dimension mismatches - -I’ve spent a lot of hours over the last couple of days staring at error messages like - -``` -ValueError: Expected target size (77, 64) got torch.Size (77, 70) -``` - -Some reasons I’ve gotten errors like this so far - - * I tried to pass a 3-dimensional tensor to a loss function that wanted a 2-dimensional tensor - * I forgot to embed my input data (which is a bunch of class labels) into a higher dimensional space so that every number turns into a 64-dimensional vector - * I multiplied a vector by a matrix with the wrong dimensions - - - -Something that I find a bit confusing about the tensors and dimension mismatches is that a lot of the time you seem to be able to pass in both a 2-dimensional tensor and a 3-dimensional tensor to the same method. For example, if I have a 2x3 matrix, I can multiply that by a 3x4 tensor, or by a 3x4x89 tensor, or by a 3x92x12x238 tensor, or whatever. This corresponds to what I remember about tensors from quantum computing, but I find a bit harder to think about in terms of numbers in a matrix on a computer. - -I tweeted about this and a bunch of people agreed with me that they have also spent a bunch of time debugging dimension mismatches so at least I’m not alone :) - -### the cross entropy loss in pytorch isn’t the cross entropy - -A “loss function” is basically a function you use to check how similar 2 vectors are. Lower is better. - -Today I got pretty confused because I was trying to compute the cross entropy loss for two identical vectors, and the result wasn’t 0! I thought that the result was going to be 0, because the vectors were identical! - -It turns out that in PyTorch the “cross entropy loss” of x and y isn’t actually the [cross entropy][5] of x and y (which would be 0 if x and y are identical!), instead it’s `cross_entropy(softmax(x), y)` – you apply a “softmax” function to x first. - -### it goes a LOT faster with a GPU - -At some point I was training a model on a CPU, and then I switched to a GPU and every batch trained literally 10x faster. - -### colab is pretty useful - -I’ve been using Google’s [Colab][6], which seems to be a fork of Jupyter notebook. It comes with some free GPUs that you can use, which is nice. - -The main annoying thing I’ve run into about Colab is that they pretty aggressively kill your running notebooks if they’re idle to reduce resource usage. This is actually fine on its own (you can save your data to Google Drive and restore it!). - -BUT as far as I can tell, if I want to use the Google Drive to get my files, I need to reauthenticate the notebook to Google Drive every single time by clicking a link and pasting in an OAuth (or something) code. I don’t really understand why it can’t just authenticate me once and then have it work forever. - -### it’s bad if your training loss never goes down - -I’ve been having the same problem for most of yesterday and today, which is that I have a model and some training data, and when I try to train the model my training loss never improves, which measn that basically the model isn’t training. - -And then when I make predictions from the model, I get results like this: - -``` -eto e enaih eet codosueonites st tne esee ob nmnoesnrertieieeu ooe -``` - -which makes it seem like it’s learned _something_ – those letters are common letters in the English language, sure! It’s better than generating `zxisqqqqxw`, which is more like the results I’d expect if the network hadn’t learned anything at all. But it definitely hasn’t learned a lot. - -### some code that does not work - -If you’re interested in what some code for an RNN that DOES NOT WORK looks like, here’s [the code I’ve written so far][7] - -the neural network part looks like this: - -``` -class RNN(nn.Module): - def __init__(self): - super().__init__() - self.i2h = nn.Linear(nv, nh) # Wxh - self.h2h = nn.Linear(nh, nh) # Whh - self.h2o = nn.Linear(nh, nv) # Why - self.hidden = torch.zeros(1, nh).cuda() - - def forward(self, input): - x = self.i2h(torch.nn.functional.one_hot(input, num_classes=nv).type(torch.FloatTensor).cuda()) - y = self.h2h(self.hidden) - hidden = torch.tanh(y + x) - self.hidden = hidden.detach() - z = self.h2o(hidden) - return z -``` - -and it basically sets up a bunch of matrices that are meant to correspond to this code from Karpathy’s blog post: - -``` -def step(self, x): - # update the hidden state - self.h = np.tanh(np.dot(self.W_hh, self.h) + np.dot(self.W_xh, x)) - # compute the output vector - y = np.dot(self.W_hy, self.h) - return y -``` - -but unlike his code, it does not generate text that looks vaguely Shakespeare after I train it, it generates gibberish! Maybe tomorrow I will find out why. - -Here’s a snippet of code that samples from the model’s output probability vector using a “temperature” – at a very low temperature it just always picks the letter that the model thinks is most likely (which by the way right now in my case is LITERALLY ALWAYS A SPACE which is also a sign that something is wrong). At higher temperatures it might pick another likely letter. - -``` -temperature = 1 -prediction_vector = F.softmax(learn.model(x)[0]/temperature) -v.textify(torch.multinomial(prediction_vector, 1).flatten(), sep='') -``` - -### that’s all! - -As usual when I learn things I am mostly trying to do it without reading any books or watching any videos – there’s this whole video course from that seems pretty good, but for whatever reason I prefer to just bang my head against a problem I’m trying to solve until I get VERY CONFUSED and then resort to reading things that might help me understand what’s going on then. So that’s the plan, we’ll see how it goes. - -It’s been pretty fun so far, I know a bunch of things about loss functions that I didn’t know before at least, and now I kind of know what a softmax is! - --------------------------------------------------------------------------------- - -via: https://jvns.ca/blog/2020/11/19/day-9--generating-a-lot-of-nonsense-with-an-rnn/ - -作者:[Julia Evans][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://jvns.ca/ -[b]: https://github.com/lujun9972 -[1]: https://lots-of-sketchrnn-faces.netlify.app/ -[2]: https://karpathy.github.io/2015/05/21/rnn-effectiveness/ -[3]: https://www.fast.ai/ -[4]: https://github.com/jvns/masters-thesis/ -[5]: https://en.wikipedia.org/wiki/Cross_entropy -[6]: https://colab.research.google.com/ -[7]: https://gist.github.com/jvns/ce24d85c9d645c32b0d552b69359979f diff --git a/sources/tech/20201119 The relationship between labor and open source.md b/sources/tech/20201119 The relationship between labor and open source.md deleted file mode 100644 index bd600b76fe..0000000000 --- a/sources/tech/20201119 The relationship between labor and open source.md +++ /dev/null @@ -1,51 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (The relationship between labor and open source) -[#]: via: (https://opensource.com/article/20/11/working-public-review) -[#]: author: (Joshua Allen Holm https://opensource.com/users/holmja) - -The relationship between labor and open source -====== -Readers of all levels of involvement in open source will find value in -this informative and illustrative book. -![Stack of books for reading][1] - -The open source software ecosystem is a fascinating blend of personal passion projects and massive, collaborative corporate efforts. Sometimes there is even overlap when the passion projects are actually key components of the huge corporate projects or when a corporate project is abandoned by the original maintainers, but someone takes up the cause and makes it their personal passion project. Regardless of where an open source project falls on that spectrum, there is a lot of labor involved in the development and maintenance of open source projects. [_Working in Public: The Making and Maintenance of Open Source Software_][2] by Nadia Eghbal thoroughly examines the relationship between labor and open source. - -In addition to an introduction and conclusion, _Working in Public_ consists of five chapters split between two parts: "Part 1: How People Make" and "Part 2: How People Maintain." The first part covers "GitHub as a platform," "The Structure of an Open Source Project," and "Roles, Incentives, and Relationships." The second part explores "The Work Required by Software" and "Managing the Costs of Production." Each chapter deftly covers the topic at hand and provides copious footnotes and end-notes to support the information presented. - -** - -** - -** - -_![Book cover][3]_ - -_Working in Public_ begins with a brief overview of the history of open software development that covers the free software movement, the open source movement, and the modern, GitHub-centered version of open, which Eghbal notes is more focused on the practical aspects of open than philosophical aspects that are key parts of the free software and open source movements. The book provides a solid history of open source software development before transitioning to an examination of how things—and people—work in open source. There are many examples of the whys and the hows of working in open source, often including amusing analogies to make these complex topics easy to understand for readers who are not already enmeshed in open source. Eghbal’s writing manages to strike a balance between informative and entertaining. - -There is sometimes a tendency to treat coding as the only form of open source labor, but _Working in Public_ does not make that mistake. For example, there is an interesting discussion in the introduction about maintainers having to spend time dealing with minor pull requests instead of writing in-depth, substantive code of their own. Throughout the book, Eghbal explores labor in open source beyond just code. It provides valuable insights for readers of all levels and all manners of open source involvement—project maintainers, casual contributors, and users. - -The only flaw with _Working in Public_ is that it tries to serve as both an introduction to open source and an exploration of the labor involved in open source projects. This makes the book extremely approachable for readers with limited knowledge of open source, but that means that more experienced readers might find themselves skipping over lengthy passages that explain basic concepts. For example, half of the first full paragraph on page 12 is a parenthetical explanation of what software libraries are. The tendency to overexplain basic concepts does not distract from the overarching narrative too much, but it might turn some readers off before they get to the interesting parts. - -Overall, I really recommend picking up a copy of this book. It is enjoyable to read and does a good job of covering its topic, though there are issues brought up in some of the footnotes that are worthy of further exploration by the author or by other researchers. Even the parts of the book that overexplain basic concepts are interesting but, as noted above, may fail to capture the attention of readers who are already well versed in open source development. Minor issues aside, the book provides an engaging overview of the history of open source and an insightful examination of the labor involved in open source development. In short, _Working in Public_ is worth reading whether you are a maintainer, contributor, or user of open source. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/11/working-public-review - -作者:[Joshua Allen Holm][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/holmja -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/books_read_list_stack_study.png?itok=GZxb9OAv (Stack of books for reading) -[2]: https://www.amazon.com/dp/0578675862/ -[3]: https://opensource.com/sites/default/files/uploads/working_in_public.jpg (Book cover) diff --git a/sources/tech/20201120 Day 10- Training an RNN to count to three.md b/sources/tech/20201120 Day 10- Training an RNN to count to three.md deleted file mode 100644 index a8352615fb..0000000000 --- a/sources/tech/20201120 Day 10- Training an RNN to count to three.md +++ /dev/null @@ -1,56 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Day 10: Training an RNN to count to three) -[#]: via: (https://jvns.ca/blog/2020/11/20/day-10--training-an-rnn-to-count-to-three/) -[#]: author: (Julia Evans https://jvns.ca/) - -Day 10: Training an RNN to count to three -====== - -Yesterday I was trying to train an RNN to generate English that sounds kind of like Shakespeare. That was not working, so today I instead tried to do something MUCH simpler: train an RNN to generate sequences like - -``` -0 1 2 0 1 2 0 1 2 0 1 2 -``` - -and slightly more complicated sequences like - -``` -0 1 2 1 0 1 2 1 0 1 2 1 0 1 2 1 0 -``` - -I used (I think) the exact same RNN that I couldn’t get to work yesterday to generate English by training it on Shakespeare, so it was cool to see that I could at least use it for this much simpler task (memorize short sequences of numbers). - -### the jupyter notebook - -It’s late so I won’t explain all the code in this blog post, but here’s the PyTorch code I wrote to train the RNN to count to three. - - * Here it is as a [github gist][1] - * and [here it is on Colab][2] if you want to run it yourself - - - -In the gist there are a few experiments with different sequence lengths, like (unsurprisingly) it takes longer to train it to memorize a sequence of length 20 than a sequence of length 5. - -### simplifying is nice - -I’m super happy that I got an RNN to do something that I actually understand! I feel pretty hopeful that on Monday I’ll be able to go back to the character RNN problem of trying to get the RNN to generate English words now that I have this simpler thing working. - --------------------------------------------------------------------------------- - -via: https://jvns.ca/blog/2020/11/20/day-10--training-an-rnn-to-count-to-three/ - -作者:[Julia Evans][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://jvns.ca/ -[b]: https://github.com/lujun9972 -[1]: https://gist.github.com/jvns/b8804fb9d0672ce147a28d22648b4bd7 -[2]: https://colab.research.google.com/gist/jvns/b8804fb9d0672ce147a28d22648b4bd7/rnn-123.ipynb diff --git a/sources/tech/20201120 How we develop success metrics for open source events.md b/sources/tech/20201120 How we develop success metrics for open source events.md deleted file mode 100644 index 392164e686..0000000000 --- a/sources/tech/20201120 How we develop success metrics for open source events.md +++ /dev/null @@ -1,98 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (How we develop success metrics for open source events) -[#]: via: (https://opensource.com/article/20/11/chaoss-open-source-events) -[#]: author: (Neofytos Kolokotronis https://opensource.com/users/neofytosk) - -How we develop success metrics for open source events -====== -The CHAOSS App Ecosystem Working Group is establishing ways to measure -how well virtual and in-person events meet their goals. -![Metrics and a graph illustration][1] - -As many open source communities grow larger and older, they may face problems managing members' engagement. People turn towards metrics to understand large systems and prioritize resources, but there has not been a consensus set of metrics for understanding open source communities. - -The Community Health Analytics Open Source Software ([CHAOSS][2]) project, a Linux Foundation-sponsored community of industry professionals and academics, is working to solve this problem by defining metrics for open source projects. The CHAOSS project focused first on developing metrics for open source event organizers because open source communities often depend on events like hackathons, meetups, conferences, and user group meetings to grow their communities and work on important project updates. - -The [CHAOSS App Ecosystem Working Group][3], which developed the metrics for events and worked together on this article, is comprised of [members][4] who have organized and participated in many open source events. While we developed these metrics to help the GNOME and KDE communities, we believe they can help other open source event organizers create their own metrics strategy. We also hope that more people will be inspired by this work and join us to improve it. - -### How we began - -The CHAOSS App Ecosystem Working Group emerged from the [SCALE 18x][5] conference in March 2020, when CHAOSS and GNOME members began talking about how to measure the [Linux App Summit][6] (LAS) community, an event co-hosted by GNOME and KDE.  - -We realized that we did not have sufficient data to measure our progress towards LAS's goals, and that hindered our ability to make important decisions to support those goals. For LAS (and the whole Linux app ecosystem) to thrive, we recognized the need to be more data-driven in our approach. We also realized the importance of extending this mindset to other similarly organized communities. - -From our experience at [CHAOSScon][7], we found opportunities to partner with the CHAOSS community around open source metrics. Therefore, we organized ourselves under the CHAOSS project, which provides a platform for working on metrics. - -We chose the name App Ecosystem Working Group because one of the GNOME and KDE communities' primary goals is to grow the Linux app ecosystem. Although we had the GNOME and KDE communities in mind at the start, we are creating the metrics to help everyone involved in the effort to grow the Linux app ecosystem. - -We chose to begin with the event organizer use case because of the nature of events: Events tend to have clearly defined boundaries, with a set start and end date, a list of registered attendees, and activities like talks, presentations, and workshops. This clarity does not generally exist in open source projects and communities, where the various projects, contributors, and users are less often strictly defined. - -The GNOME and KDE communities both had events coming up in 2020, so we believed we could iterate faster using feedback gathered from the events we organized, separately and together. - -### Approach to data gathering - -The CHAOSS project uses the [goal-question-metric][8] (GQM) approach to gathering data. One problem with metrics is that often we try to measure everything without understanding how the data will be helpful. But data should help inform decisions. Therefore, the GQM approach starts with a list of high-level goals that are important to a particular persona. - -The goals are the community's strategic objectives. For each goal, we look at questions that help determine whether we are achieving the goal. Metrics then provide quantitative information that helps answer those questions. - -Before diving into metrics, the App Ecosystem Working Group brainstormed goals and the personas that those goals affect. We collected [17 different goals][9], spread across seven stakeholder personas, that a community or project ecosystem might have. - -We collected and curated these goals from community members' experience in major open source projects like GNOME and KDE. Although each community is different, we think most of these goals are relevant to and will help a wide variety of open source projects. - -### Metrics for event organizers - -The [full list of metrics for event organizers][10] focus on three goals that event organizers care about: - - * Attracting and retaining contributors - * Understanding company contributions to an event - * Ensuring events contribute towards diversity goals and closing skill gaps in the community - - - -We came up with 19 questions that event organizers have about how well they are doing in reaching these goals. The metrics are directly linked to these questions to give the event organizers actionable insights. - -### Privacy implications - -While this work was developed by and for the GNOME and KDE communities, we hope that the metrics will help other open source communities. - -While GNOME and KDE have not implemented the metrics yet (and do not yet have a timeline to do so), one known limitation is privacy concerns around data collection. Every geographic location has laws that may limit data collection, which open source and free software projects must take into account. - -Once GNOME and KDE implement these metrics in their communities, they plan to share the legal considerations they took into account. - -### Join us - -We are hopeful that these metrics will be useful to open source event organizers interested in integrating virtual and in-person events into their community-building and engagement strategies. - -If you'd like to participate in developing these metrics, we welcome your experience, insight, and voice! The CHAOSS App Ecosystem Working Group [meets biweekly][11]; please join us. - -You can also communicate with us asynchronously through our [GitHub repository][3]. For more information on other ways to contribute or connect with us, we encourage you to visit the [CHAOSS community participation page][12]. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/11/chaoss-open-source-events - -作者:[Neofytos Kolokotronis][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/neofytosk -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/metrics_graph_stats_blue.png?itok=OKCc_60D (Metrics and a graph illustration) -[2]: https://chaoss.community/ -[3]: https://github.com/chaoss/wg-app-ecosystem -[4]: https://github.com/chaoss/wg-app-ecosystem#contributors -[5]: https://www.socallinuxexpo.org/scale/18x -[6]: https://linuxappsummit.org/ -[7]: https://chaoss.community/chaosscon-2020-eu/ -[8]: https://en.wikipedia.org/wiki/GQM -[9]: https://docs.google.com/document/d/1ghREXIO5C9PLiwXMtouOR4AjPLGz9pD34LIxO8N2-xo/edit -[10]: https://github.com/chaoss/wg-app-ecosystem/blob/master/event-organizers.md -[11]: https://github.com/chaoss/wg-app-ecosystem#workflow -[12]: https://chaoss.community/participate diff --git a/sources/tech/20201120 What do open source product teams do.md b/sources/tech/20201120 What do open source product teams do.md deleted file mode 100644 index c227ff3b8e..0000000000 --- a/sources/tech/20201120 What do open source product teams do.md +++ /dev/null @@ -1,113 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (What do open source product teams do?) -[#]: via: (https://opensource.com/article/20/11/open-source-product-teams) -[#]: author: (Scott McCarty https://opensource.com/users/fatherlinux) - -What do open source product teams do? -====== -Product managers play an essential role in creating differentiated value -that customers will pay for. -![a checklist for a team][1] - -If you go to any hip product management conference, you'll hear about product teams. At a minimum, a product team has a product manager, but it often includes roles in marketing, technical architecture, and even user experience (UX). Previous articles in this series have covered [open source as a supply chain model][2] and [defining products in the open source software supply chain][3], and this article specifically focuses on the role of product management within the product team. - -### Who's on the product team? - -Product managers and product marketing managers are the two most common product management roles, but product management can be further split into any number of roles, including competitive analysis, business strategy, sales enablement, revenue growth, content creation, sales tools, and more. With a very large product, even the product management role may be broken up into separate roles. You may even hear titles like technical marketing manager, product evangelist, and business owner, not to mention people-management roles for groups of individual contributor roles. For the purpose of this article, I refer to all of these roles collectively as "product management." - -Product management is a [tough career][4], and there are many frameworks for learning and understanding it. One of the oldest and most mature is the [Pragmatic Framework][5], which defines 37 different areas of responsibility. The Pragmatic Framework is a bit too complex for this article. Instead, I'll emphasize a subset of tasks that are applicable in open source products: - - * **Market problems:** Talk to customers and figure out what they need - * **Product roadmap:** Determine what features will be added to the product and when - * **Build:** Invest in building technology in-house - * **Buy:** Purchase technology from another company - * **Partner:** Deliver a solution to a customer by leveraging a partner's technology - * **Pricing:** Determine the price - * **Packaging:** Determine what's included in the price - * **Channel training:** Train the salespeople so that they can educate potential customers - - - -The rest of this series will look into how these different roles affect and are affected by an open source supply chain. - -### Build, buy, or partner? - -Which is more important, the business need or the technology? This is probably the classic paradox of business strategy. The answer is neither. Execution is what matters. The product management team is tasked with creating and retaining customers. This can be done by building technology, buying technology, or partnering to acquire technology or services that, when combined, provide value to customers. For example, if customers need an encryption feature that's missing from a software product, the product manager can: - - * Ask engineering to build it, test it, document it, and maintain it. - * Influence the executive team to buy a company or software package that provides it. (However, less than 2% of product managers have access to P&L data, [much less the budget to buy companies][6].) - * Deliver it to the customer through a verified partner. If a partner already provides a solution, this is the quickest way to deliver a solution, but it could raise the product's price or require the customer to purchase additional software. - - - -With traditional proprietary software products and services, this could mean building, buying, or partnering for a foundational piece of software, like a database. With products built on open source software, this can be thought of as choosing an open source project as a supplier. The purchase is made by contributing engineering time, code, documentation, testing, infrastructure, etc. Because open source is not free as in beer, somebody has to write it, test it, document it, etc. It's very difficult to provide value to customers if you don't contribute upstream. - -This combination of built, bought, and partner-delivered capabilities is what differentiates a product, whether open source or proprietary. Proprietary licensing does not differentiate a product. Let me repeat: _proprietary licensing does not differentiate a product_. People confuse proprietary licensing with providing value to a customer. Proprietary licenses are a perfectly valid and useful way to monetize users, but they do not provide customers with more value. Licenses do not create value; they help extract it. If you believe [open core][7] or hybrid licensing are the only way to make money with open source, read this paragraph five times until it sinks in (hint, focus on creating value). - -Both open source and proprietary products must create value. Customers buy capabilities as part of a solution (i.e., new things they couldn't do before). If product management spends more brainpower on delivering capabilities than determining what can be held back with proprietary licensing, the customer will be happier, more loyal, and receive more value. - -### Types of products built on open source - -Most modern software products are delivered by adding new value to the value provided by the open source supply chain. This could include extra downstream testing, documentation, quality engineering, performance testing, security testing, industry certifications, a partner ecosystem, training, professional services, or even extra proprietary code not included upstream (open core). By considering this new model, many of the old debates about open source can be clarified: - - * **Open source products:** The entire supply chain of code that goes into the product is open source. This can include multiple upstream projects like enterprise Linux distributions or sophisticated products like [Red Hat Satellite][8] or [OpenShift][9]. - * **Open core products:** Some of the supply chain of code that goes into the product is open source while other parts are proprietary. This mix of licensing can be used to control pricing, packaging, and distribution. It can also have the downside of putting engineering contributions to the product at odds with the open source supply chain (see _[Goodbye open core—good riddance to bad rubbish][10]_). - * **Paid software-as-a-service products:** The supply chain of SaaS products can be made up of open source languages and libraries, while the business logic built in-house is often proprietary. This allows product managers to tightly control pricing and packaging through very measurable distribution channels. There are many examples of online companies using this model, including customer resource management platforms, databases, caching layers, identity management, document management, and office and email solutions. - * **Free SaaS products:** The supply chain of free SaaS products (e.g., Facebook, Google Search, YouTube, etc.) is essentially the same as paid SaaS products. Instead of tightly controlling the pricing and packaging, the product is monetized through user data or advertisements. - * **Cloud providers vs. software vendors:** The recent interest in and creation of new quasi-open source licenses like the [Server Side Public License][11], [Redis Source Available License][12], or [PolyForm][13] are better understood by thinking of open source as a supply chain and SaaS as a pricing and packaging model. These new licenses exert some control on how buyers from the open source supply chain can price and package their products (e.g., limiting how a large cloud provider can deliver a service built on freely available code and binaries). This is not unheard of, even in traditional manufacturing supply chains. It's a defensive play because these licenses don't deliver new value to customers. - * **Open source as awareness:** In this model, the buzz around the upstream project is used to deliver awareness for the products built on it. In marketing, awareness of a technology is a critical first step for having a product's customers build on it. For example, if users are aware of and believe in Kubernetes, they are potential customers for products built on Kubernetes; when people looking for a Kubernetes solution hear that your product is built on Kubernetes, they immediately become potential customers. In a way, this is similar to Lenovo laptops advertising "Intel inside" or [Arm & Hammer laundry detergent advertising OxiClean][14] as part of their supply chain. If you like OxiClean, you'll love Arm & Hammer detergent. - * **Open core as marketing:** This goes a step further than open source as awareness. A single vendor almost always controls the upstream open source projects that go into open core products. They attempt to use the supply chain, often unsuccessfully, to generate market awareness in what's perceived to be free or inexpensive marketing and lead generation. Open core products advertise that they include the open source project to provide core value propositions. Going back to the Arm & Hammer example: If you like open source, you'll love our proprietary software with open source goodness inside. - - - -### The supply chain - -Continuing the analogy from my [last article][3], when General Motors develops a car, the product team doesn't tell Bosch what fuel injectors they want. They tell Bosch how much power the new vehicle will generate, how much towing capacity it needs to have, etc. They give Bosch a set of technical requirements. Then Bosch provides GM with a fuel-injection solution that not only includes the fuel injectors but also the wiring harnesses and perhaps even software that makes it run. It's cheaper and often better quality to rely on a supply chain for components that are shared among virtually every vehicle in the marketplace. - -Like an automobile, the sum of a software product is greater than the individual parts. When a manufacturer delivers a car, it's more than the braking, steering, power plant, infotainment system, financing, and mechanical service program. It has an associated brand, build quality, reliability, and an experience. Most of the parts aren't differentiated between vendors. Software products, especially ones built on an open source supply chain, are no different. Product management needs to differentiate their products from the underlying software components in the supply chain. The value of a software product is a layer of differentiation built on top of a supply chain of dependencies. This value is what product management must focus on. - -### Differentiated value - -Product management is not about picking and choosing what bugs are fixed upstream or downstream. It's not about holding back enough value in the open source project so that users purchase the product. It's not about coming up with special licenses to monetize an open source project's user base. It's about creating differentiated value that customers will pay for. It's about listening to their needs, internalizing them, and knowing them intimately. It's about influencing a supply chain, switching supply chains, and building a partner ecosystem that gives your product gravity. - -Product managers who think about differentiated value on top of an open source supply chain can easily answer the following questions: - - * As an open source product manager, should I attend conferences for the upstream projects? _Sure, because it's like attending a trade show for one of your suppliers._ - * How should product management handle a situation where the upstream project isn't delivering what their customers need? _Add more investment. If the open source community is healthy, it will produce what you need._ - * What should product management do when an upstream community is struggling with contributions or is unhealthy? _The same thing that a manufacturer would do if their supplier lost contracts with their two biggest competitors because they were failing: switch suppliers._ - - - -In the next article, I will delve into the distinct value created in products, focusing on the value that upstream projects can't provide. If product management is done well, there is no unnatural tension between upstream suppliers and downstream products. When done right, both the upstream projects and downstream products create unique and differentiated value that satisfies the needs of users and customers alike. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/11/open-source-product-teams - -作者:[Scott McCarty][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/fatherlinux -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/checklist_hands_team_collaboration.png?itok=u82QepPk (a checklist for a team) -[2]: https://opensource.com/article/20/10/open-source-supply-chain -[3]: https://opensource.com/article/20/10/defining-product-open-source -[4]: https://www.mindtheproduct.com/forget-product-management-tough-career/ -[5]: https://www.pragmaticinstitute.com/framework -[6]: http://developmentcorporate.com/2019/04/02/the-myth-of-the-product-management-pl/ -[7]: https://medium.com/open-consensus/2-open-core-definition-examples-tradeoffs-e4d0c044da7c -[8]: https://en.wikipedia.org/wiki/Satellite_(software) -[9]: https://en.wikipedia.org/wiki/OpenShift -[10]: https://medium.com/@adamhjk/goodbye-open-core-good-riddance-to-bad-rubbish-ae3355316494 -[11]: https://www.mongodb.com/licensing/server-side-public-license -[12]: https://redislabs.com/wp-content/uploads/2019/03/Redis-Source-Available-License-PDF-2.pdf -[13]: https://polyformproject.org/licenses/ -[14]: https://www.armandhammer.com/laundry/liquid-laundry-detergent/liquid-laundry-detergent/plus-oxiclean-with-fade-defense-liquid-laundry-detergent diff --git a/sources/tech/20201121 Open source brings musicians together virtually.md b/sources/tech/20201121 Open source brings musicians together virtually.md deleted file mode 100644 index 943f21e8ad..0000000000 --- a/sources/tech/20201121 Open source brings musicians together virtually.md +++ /dev/null @@ -1,67 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Open source brings musicians together virtually) -[#]: via: (https://opensource.com/article/20/11/open-source-drum-bugle-corps) -[#]: author: (Vicki Walker https://opensource.com/users/vicki-walker) - -Open source brings musicians together virtually -====== -The open source ethos is embedded in many areas of life, including music -and art. -![Drums ][1] - -When the COVID-19 pandemic began canceling live music events in spring 2020, it wasn't just the big arena shows, music festivals, and small, local venues that suffered—the big annual marching band competition leagues, like [Drum Corps International][2] (DCI) and [WGI World Championships][3], were also called off. This was a huge disappointment for the thousands of musicians and band directors who were already preparing for the spring and summer competition season. But the members of the [Drumcorps subreddit][4] saw it as an opportunity to take drum corps virtual. - -The [Open Source Drum and Bugle Corps][5] (OSDBC) is one such organization bringing open source to drum corps. The group was founded on the principles of openness, inclusiveness, and collaboration. And, like most things in open source, OSDBC was created to solve a problem. - -OSDBC launched in early April 2020, in the early weeks of US pandemic-related shutdowns, and immediately had 100 members in the group's Discord; within half a year, its membership approached 400 brass and percussion players across the United States. To date, the organization has released two performances and is working on its third. - -All of the content OSDBC produces—including guides, documentation, sheet music, clicktracks, and virtual performances—is released under [Creative Commons][6] licenses so that other groups can replicate the project if they wish. - -### Who's involved? - -Most OSDBC members are professional musicians, teachers, and high school and college students. Because the drum corps community is relatively small, there's a strong possibility that students and their teachers might be participating together on the same project, leading to uncomfortableness or even potential legal issues relating to students and teachers being in the same group chats. Therefore, OSDBC members work anonymously, wearing hats and sunglasses in their performance videos, and many use pseudonyms within the group. It's an imperfect solution, but it does provide "plausible deniability" about someone's identity, says one member, a high school senior who serves on the project's all-volunteer staff. - -Anonymity also levels the playing field among musicians with different levels of experience, which helps open up collaboration and personal growth opportunities, including the ability to ask for help without fear of embarrassment or judgment. - -Members come from multiple disciplines—musicians, artists, composers, and audio engineers—volunteering their time and talent to produce multimedia content. Because everyone is a volunteer, there is no cost to be involved in the project. - -### How it works - -Unlike a typical drum corps, OSDBC can't perform together in person, first, because of the pandemic, and second because of the members' geographical distribution. Selecting a composition is a community effort, with votes taken both to pick a public domain musical piece to play and then to choose a composer (based on members' original compositions of the selected piece). The winner of the composition contest distributes sheet music, clicktracks, and advice for playing the piece, and the audio and video editors share [submission guidelines][7] about how to record and submit videos for inclusion in the project. Approximately a fifth of the members have submitted performances for each of the first three projects. - -Once the submission deadline has passed and all the performances are collected, the design team begins to mix the individual videos into a cohesive performance. - -Because editing a performance is a significant amount of work that requires specialized audio and video production knowledge and tools, the work is distributed among section leaders (e.g., trumpets, low brass, percussion, etc.). They use a mix of open source and proprietary software, chiefly [Audacity][8], Reaper, and FL Studios, to produce the videos; while open source is the preference, the members must use the applications that they are familiar with and have access to at their universities or jobs. - -### Get involved - -OSDBC plans to continue working together even after the COVID-19 pandemic. Given the uncertainty around the 2021 drum corps season, with WGI planning a virtual season and DCI weighing the feasibility of an abbreviated season, OSDBC provides a valuable option for the tight-knit community to collaborate and make music together. - -The project eagerly welcomes new performers, organizers, arrangers, and others. If you would like to get involved, visit the [website][5] and join the project's [Discord][9] for updated information and opportunities to participate in the next project. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/11/open-source-drum-bugle-corps - -作者:[Vicki Walker][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/vicki-walker -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/drums-beat.png?itok=vhr6E_f1 (Drums ) -[2]: https://www.dci.org/ -[3]: https://www.wgi.org/ -[4]: https://www.reddit.com/r/drumcorps/ -[5]: https://opensourcedbc.org/ -[6]: https://creativecommons.org/ -[7]: https://opensourcedbc.org/info-for-members/ -[8]: https://opensource.com/education/16/9/audacity-classroom -[9]: https://discord.gg/6QmCSK3 diff --git a/sources/tech/20201123 Day 11- learning about learning rates.md b/sources/tech/20201123 Day 11- learning about learning rates.md deleted file mode 100644 index 12be99f3be..0000000000 --- a/sources/tech/20201123 Day 11- learning about learning rates.md +++ /dev/null @@ -1,105 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Day 11: learning about learning rates) -[#]: via: (https://jvns.ca/blog/2020/11/23/day-11--learning-about-learning-rates/) -[#]: author: (Julia Evans https://jvns.ca/) - -Day 11: learning about learning rates -====== - -Hello! - -On Friday I trained an RNN to count to 3 (1 2 3 1 2 3 1 2 3), thanks to some great advice from another Recurser. I figured that once I got that working, I could then extend that and train the same RNN on a bunch of Shakespearean text to get it to generate vaguely Shakespeare-y text. - -But on Friday I couldn’t get that to work! I was puzzled by this, but today I figured out what was happening. - -### what’s a learning rate? - -First, here’s a very short “deep learning for math majors” explanation of how training for a deep learning model works in general. I wrote this to help consolidate my own understanding on Friday. - - * The model takes the training data and weights and outputs a single number, the output of the loss function - * The model’s “weights” are the parameters of all the matrices in the model, like if there’s a 64 x 64 matrix then there are 4096 weights - * For optimization purposes, this function should be thought of as a function of the weights (not the training data), since the weights are going to change and the function isn’t - * Training is basically gradient descent. You take the derivative of the function (aka gradient), with respect to the weights of all the matrices/various functions in the model - * The way you take this derivative is using the chain rule, the algorithm for applying the chain rule to a neural network is called “backpropagation” - * Then you adjust the parameters by a multiple of the gradient (since this is gradient descent). The multiple of the gradient that you use is called the **learning rate** – it’s basically `parameters -= learning_rate * gradient` - * machine learning model training is a lot like general continuous function optimization in that finding the “right” step size to do gradient descent is basically impossible so there are a lot of heuristics for picking step learning rates that will work. One of these heuristics is called [Adam][1] - - - -### if you set your learning rate too high, the model won’t learn anything - -So back to our original problem: when I was training my model to generate Shakespeare, I noticed that my model wasn’t learning anything! By “not learning anything”, I mean that the value of the loss function was not going down over time. - -I eventually figured out that this was because my learning rate was too high! It was 0.01 or something, and changing it to more like 0.002 resulted in more learning progress. Hooray! - -I started to generate text like this: - -``` -erlon, w oller. is. d y ivell iver ave esiheres tligh? e ispeafeink -teldenauke'envexes. h exinkes ror h. ser. sat ly. spon, exang oighis yn, y -hire aning is's es itrt. for ineull ul'cl r er. s unt. y ch er e s out twiof -uranter h measaker h exaw; speclare y towessithisil's aches? s es, tith s aat -``` - -which is a big improvement over what I had previously, which was: - -``` -kf ;o 'gen '9k ',nrhna 'v ;3; ;'rph 'g ;o kpr ;3;tavrnad 'ps ;]; ;];oraropr -;9vnotararaelpot ;9vr ;9 -``` - -But then training stalled again, and I felt like I could still do better. - -### resetting the state of the optimizer is VERY BAD - -It turned out that the reason training had stalled the second time was that my code looked like this: - -``` -for i in range(something): - optimizer = torch.optim.Adam(rnn.parameters()) - ... do training things -``` - -I’d written the code this way because I didn’t realize that the state of the optimizer (“Adam”) was important, so I just reset it sometimes because it seemed convenient at the time. - -It turns out that the optimizer’s state is very important, I think because it slowly reduces the training rate as training progresses. So I reorganized my code so that I only initialized the optimizer once at the beginning of training. - -I also made sure that when I saved my model, I also saved the optimizer’s state: - -``` -torch.save({'model_state_dict': rnn.state_dict(), 'optimizer_dict': optimizer.state_dict()}, MODEL_PATH) -``` - -Here’s the “Shakespeare” the model was generating after I stopped resetting the optimizer all the time: - -``` -at soerin, I kanth as jow gill fimes, To metes think our wink we in fatching -and, Drose, How the wit? our arpear War, our in wioken alous, To thigh dies wit -stain! navinge a sput pie, thick done a my wiscian. Hark's king, and Evit night -and find. Woman steed and oppet, I diplifire, and evole witk ud -``` - -It’s a big improvement! There are some actual English words in there! “Woman steed and oppet!” - -### that’s it for today! - -Tomorrow my goal is to learn what “BPTT” means and see if I can use it to train this model more quickly and maybe give it a bigger hidden state than 87 parameters. And once I’ve done that, maybe I can start to train more interesting models!! - --------------------------------------------------------------------------------- - -via: https://jvns.ca/blog/2020/11/23/day-11--learning-about-learning-rates/ - -作者:[Julia Evans][a] -选题:[lujun9972][b] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://jvns.ca/ -[b]: https://github.com/lujun9972 -[1]: https://www.tensorflow.org/api_docs/python/tf/keras/optimizers/Adam diff --git a/sources/tech/20201124 A beginner-s guide to developing with React.md b/sources/tech/20201124 A beginner-s guide to developing with React.md deleted file mode 100644 index 7928fb6b43..0000000000 --- a/sources/tech/20201124 A beginner-s guide to developing with React.md +++ /dev/null @@ -1,284 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (A beginner's guide to developing with React) -[#]: via: (https://opensource.com/article/20/11/reactjs-tutorial) -[#]: author: (Shedrack Akintayo https://opensource.com/users/shedrack-akintayo) - -A beginner's guide to developing with React -====== -A step-by-step guide to using React in your web and mobile user -interfaces. -![Gears connecting][1] - -[React][2] is a JavaScript user interface (UI) library that was built and is maintained by Facebook. React helps JavaScript developers think logically and functionally about how they want to build a UI. - -With React, you can build: - - 1. Single-page applications - 2. Applications that are easy to understand - 3. Scalable applications - 4. Cross-platform applications - - - -React allows developers to build applications declaratively and offers a unidirectional flow of data. - -### React's advantages - -The following features explain why React is one of the [most popular][3] web frameworks. - - * **It is declarative:** React makes it extremely painless to build interactive user interfaces, design basic views for your application based on various states, and update and render new views when the data in your application changes. - * **It is component-based:** React gives you the ability to build encapsulated components that can manage their own state, then puts them together to build complex UIs. The logic of these components is written in JavaScript instead of templates, so you easily pass actual data and keep state out of the [document object model][4] (DOM). - * **You can learn once, write anywhere:** React gives you the ability to build for both mobile (React Native) and the web. There's no need to rewrite your existing codebase; you can just integrate React with your existing code. - * **The virtual DOM:** React introduced a wrapper around the regular DOM called the virtual DOM (VDOM). This allows React to render elements and update its state faster than the regular DOM. - * **Performance:** React has great performance benefits due to the VDOM and one-way flow of data. - - - -### The virtual DOM - -React's VDOM is like a virtual copy of the original DOM. It offers one-way data binding, which makes manipulating and updating the VDOM quicker than updating the original DOM. The VDOM can handle multiple operations in milliseconds without affecting the general page performance. - -This VDOM supports React's declarative API: You basically tell React what state you want the UI to be in, and it ensures that the DOM matches that state. - -### Prerequisites for learning React - -Learning React requires basic knowledge of JavaScript, HTML, and CSS. To use React's power effectively, it helps to be familiar with [ECMAScript 6][5] (ES6) and functional and object-oriented programming. - -You also need the following things installed on your computer: - - * [NodeJS][6] - * [npm][7] (comes bundled with NodeJS) - * [Yarn][8] (an alternative to NPM) - - - -### Basic React concepts - -It also helps to have an understanding of React's concepts. - -#### Components - -Components are standalone, reusable pieces of code. They have the same purpose as JavaScript functions but work alone and return HTML via a built-in render function. They are two main types of components: - - * **Class components** offer more control in the form of lifecycle hooks, managing and handling state, and API calls. For example: [code] class MyComponent extends React.Component { -  render() { -    return <div>This is a class component</div>; -  } -} -``` - * **Functional components** were used for rendering just views without any form of state management or data request until [React Hooks][9] was introduced. For example: [code] Function myComponent() { -  return ( -      <div>A functional Component</div> -  ) - } -``` - - - -#### Props - -React props are like function arguments in JavaScript and attributes in HTML. They are read-only. For example: - - -``` -function Welcome(props) { -  return <h1>Hello, {props.name}</h1>; -} -``` - -#### State - -React components have a built-in object called _state_, which is where you store property values that belong to a particular component. If a component's state changes at any point in time, the component re-renders. For example: - - -``` -class Car extends React.Component { -  constructor(props) { -    super(props); -    this.state = { brand: 'Ford' }; -  } -  render() { -    return ( -      <div> -        <h1>My Car</h1> -      </div> -    ); -  } -} -``` - -#### JSX - -JSX is a syntax extension to JavaScript. It is similar to a template language but has the full power of JavaScript. JSX is compiled to `React.createElement()` calls, which return plain JavaScript objects called _React elements_. For example: - - -``` -return ( -  <div> -    <h1>My Car</h1> -  </div> -); -``` - -The code between the return method that looks like HTML is JSX. - -### How to use React - -Ready to get started? I'll go step-by-step through two options for using React in your app: - - * Adding its content delivery network (CDN) to your HTML file - * Starting a blank React app with Create React App - - - -#### Add its CDN to your HTML file - -You can quickly use React in your HTML page by adding its CDN directly to your HTML file using the following steps: - -**Step 1:** In the HTML page you want to add React to, add an empty `
` tag to create a container where you want to render something with React. For example: - - -``` -<!-- ... old HTML ... --> - -<[div][10] id="button_container"></[div][10]> - -<!-- ... old HTML ... --> -``` - -**Step 2:** Add three `