diff --git a/_articles/es/metrics.md b/_articles/es/metrics.md index 2d9833ebd34..970b4030785 100644 --- a/_articles/es/metrics.md +++ b/_articles/es/metrics.md @@ -47,7 +47,7 @@ Si tu proyecto está hosteado en GitHub, [puedes ver](https://help.github. * **Contenido popular:** Te informa sobre las partes del proyecto que la gente más visita. -[GitHub stars](https://help.github.com/articles/about-stars/) puede brindarte una línea base para medir popularidad. No necesariamente tiene que ver con uso o cantidad de decargas, si no más bien según la cantidad de notoriedad de tu proyecto. +[GitHub stars](https://help.github.com/articles/about-stars/) puede brindarte una línea base para medir popularidad. No necesariamente tiene que ver con uso o cantidad de descargas, si no más bien según la cantidad de notoriedad de tu proyecto. Quizás también quieras [rastrear la forma que te descubren desde lugares específicos](https://opensource.com/business/16/6/pirate-metrics): por ejemplo, Google PageRank, tráfico que hace referencia a tu página web del proyecto, o referencias desde otros proyectos. diff --git a/_articles/es/starting-a-project.md b/_articles/es/starting-a-project.md index fa4cf1b910e..8810fc58b07 100644 --- a/_articles/es/starting-a-project.md +++ b/_articles/es/starting-a-project.md @@ -43,7 +43,7 @@ Realicemos una comparación: un proceso de código cerrado ser&iacut * **Colaboración:** Los proyectos de código abierto pueden aceptar cambios efectuados por cualquier persona alrededor del mundo. [Exercism](https://github.com/exercism/), por ejemplo, una plataforma para ejercicios de programación con más de 350 colaboradores. -* **Adopción y remezcla:** Los proyectos de código abierto puedne ser usados por cualquiera para casi cualquier própósito. Las personas pueden usarlos hasta para construir otras cosas. [WordPress](https://github.com/WordPress), por ejemplo, comenzaron como un "fork" de un proyecto existente llamado [b2](https://github.com/WordPress/book/blob/HEAD/Content/Part%201/2-b2-cafelog.md). +* **Adopción y remezcla:** Los proyectos de código abierto pueden ser usados por cualquiera para casi cualquier própósito. Las personas pueden usarlos hasta para construir otras cosas. [WordPress](https://github.com/WordPress), por ejemplo, comenzaron como un "fork" de un proyecto existente llamado [b2](https://github.com/WordPress/book/blob/HEAD/Content/Part%201/2-b2-cafelog.md). * **Transparencia:** Cualquiera puede inspeccionar un proyecto de este tipo, ya sea para encontrar errores como inconsistencias. La transparencia es de importancia para gobiernos como el de [Bulgaria](https://medium.com/@bozhobg/bulgaria-got-a-law-requiring-open-source-98bf626cf70a) o [United States](https://sourcecode.cio.gov/), para industrias reguladas como la bancaria o la del cuidado de la salud, y para la seguridad del software como [Let's Encrypt](https://github.com/letsencrypt). @@ -71,7 +71,7 @@ Si no estás convencido todavía, toma un momento para pensar acerca de cu Los objetivos pueden ayudarte a detectar puntos en los que continuar trabajando, a qué decirle que no, y a dónde recurrir por ayuda. Comienza preguntándote, _¿Por qué estoy haciendo "código abierto" a mi proyecto?_ -No hay nunca una respuesta correcta a la ésta pregunta. Puedes tener múltiples objetivos para un solo proyecto, o diferentes proyectos con diferentes objetivos. +No hay nunca una respuesta correcta a esta pregunta. Puedes tener múltiples objetivos para un solo proyecto, o diferentes proyectos con diferentes objetivos. Si tu único objetivo es mostrar al mundo tu trabajo, quizás no necesites ni quieras contribución, y quizás digas eso en el README. Por otra parte, si quieres ayuda, invertirás tiempo en clarificar la documentación y en hacer sentir a los recién llegados bienvenidos. @@ -103,11 +103,11 @@ Si necesitas un presupuesto dedicado o personal para la promoción, operac Si tu meta es aprender cómo contribuir con otros o entender cómo funciona el "código abierto", considera contribuir en proyectos existentes. Comienza con proyectos que ya has estado usando y que te gustan. Contribuir a un proyecto puede ser tan simple como arreglar "typos" o actualizar documentación. -Si no sabés como comenzar a contribuir, mira esto [Guía sobre cómo contribuir](../how-to-contribute/). +Si no sabés como comenzar a contribuir, mira esta [Guía sobre cómo contribuir](../how-to-contribute/). ## Lanzando tu propio proyecto de Código Abierto -No hay momento prefecto para abrir el código de tu trabajo. Puedes abrir el de una idea, el de un trabajo en progreso, o después de varios años de ser un proyecto cerrado. +No hay momento perfecto para abrir el código de tu trabajo. Puedes abrir el de una idea, el de un trabajo en progreso, o después de varios años de ser un proyecto cerrado. Generalmente, puedes abrir el código de tu proyecto cuando te sientas cómodo de que otras personas vean y te aconsejen sobre tu trabajo. @@ -183,9 +183,9 @@ Por ejemplo, [Active Admin](https://github.com/activeadmin/activeadmin/) comienz > Primero, muchas gracias por considerar contribuir a Active Admin. Son personas como ustedes las que la hacen una gran herramienta. -En las primeras etapas del proyecto, tu archivo CONTRIBUITNG puede ser simple. Siempre debes explicar cómo reportar bugs o issues, y cualquier requerimiento técnico (como tests) para hacer una contribución. +En las primeras etapas del proyecto, tu archivo CONTRIBUTING puede ser simple. Siempre debes explicar cómo reportar bugs o issues, y cualquier requerimiento técnico (como tests) para hacer una contribución. -Con el tiempo, quizás debas agregar otras "preguntas frecuentes" a tu archivo. Escribir ésta información significa que menos personas te preguntarán nuevamente la misma pregunta. +Con el tiempo, quizás debas agregar otras "preguntas frecuentes" a tu archivo. Escribir esta información significa que menos personas te preguntarán nuevamente la misma pregunta. Para más información sobre este tema, puedes acceder a @nayafia's [contributing guide template](https://github.com/nayafia/contributing-template/blob/HEAD/CONTRIBUTING-template.md) o @mozilla's ["How to Build a CONTRIBUTING.md"](https://mozillascience.github.io/working-open-workshop/contributing/). @@ -211,7 +211,7 @@ Además de comunicar _cómo_ esperas que se comporten los participan Como muchas licencias de código abierto, existen estándares emergentes para códigos de conducta para que no debas escribir uno propio. El [Contributor Covenant](https://www.contributor-covenant.org/) es un código de conducta usado por [más de 40000 proyectos de código abierto](https://www.contributor-covenant.org/adopters), incluyendo Kubernetes, Rails, and Swift. Debes estar preparado para redefinir el tuyo cuando sea necesario. -Copia el texto directamente en el archivo CODE_OF_CONDUCT dentro de tu repositorio, en el directorio raíz, y vinculalo desde tu README. +Copia el texto directamente en el archivo CODE_OF_CONDUCT dentro de tu repositorio, en el directorio raíz, y vincúlalo desde tu README. ## Dando un nombre y una marca a tu proyecto @@ -232,7 +232,7 @@ Considera claridad por sobre todo. Los chismes son divertidos,pero recuerda que Busca proyectos con el mismo nombre, o similar, especialmente si compartes el mismo ecosistema o idioma. Si tu nombre coincide con algún otro proyecto popular, puede confundir a las personas. -Si quieres una página web, manejo de Twitter, u otros ítems que representen tu proyecto, asegurate de que puedas asignar el nombre que quieras. En lo posible, [reserva tu nombre ahora](https://instantdomainsearch.com/) para estar tranquilo, aunque aún no lo vayas a usar. +Si quieres una página web, manejo de Twitter, u otros ítems que representen tu proyecto, asegúrate de que puedas asignar el nombre que quieras. En lo posible, [reserva tu nombre ahora](https://instantdomainsearch.com/) para estar tranquilo, aunque aún no lo vayas a usar. Tu nombre no debe infringir ninguna marca (trademark), de ser así la compañía puede pedirte que des de baja a tu proyecto, o puede tomar acciones legales en tu contra. No vale el riesgo. diff --git a/_articles/ja/starting-a-project.md b/_articles/ja/starting-a-project.md index 2161de540af..54821747e37 100644 --- a/_articles/ja/starting-a-project.md +++ b/_articles/ja/starting-a-project.md @@ -249,7 +249,7 @@ README に CONTRIBUTING ファイルへのリンクをすることで、より 暖かく、排他的でない言葉遣い(一人の人を指すときであっても「彼ら」を使う、といったような)をすることで、あなたのプロジェクトで新しいコントリビューターが歓迎されていると感じてもらうことに繋がります。シンプルな言葉遣いをすることにこだわりましょう。あなたのプロジェクトを見る人の多くは英語のネイティブスピーカーではないかもしれません。 -あなたがどう文書を書くかに加えて、あなたのコーディングスタイルもプロジェクトのブランドの一分になるかもしれません。 [Angular](https://github.com/johnpapa/angular-styleguide) と [jQuery](https://contribute.jquery.org/style-guide/js/) の2つは厳密なコーディングスタイルとガイドラインを持つプロジェクトの例です。 +あなたがどう文書を書くかに加えて、あなたのコーディングスタイルもプロジェクトのブランドの一部になるかもしれません。 [Angular](https://github.com/johnpapa/angular-styleguide) と [jQuery](https://contribute.jquery.org/style-guide/js/) の2つは厳密なコーディングスタイルとガイドラインを持つプロジェクトの例です。 かならずしもプロジェクトを始める際にスタイルガイドを書く必要はありませんし、とにかく異なるコーディングスタイルを盛り込むのが楽しいと思うかもしれません。しかし、あなたの文書やコーディングスタイルが異なるタイプの人々を惹きつけることもあれば落胆させることもあるということを予期しておくべきです。プロジェクトの最初期はあなたが望む先例を作る良い機会です。 diff --git a/_articles/pl/best-practices.md b/_articles/pl/best-practices.md index 3fed2f2d00f..51c2dba8991 100644 --- a/_articles/pl/best-practices.md +++ b/_articles/pl/best-practices.md @@ -52,7 +52,7 @@ Zapisywanie zasad może być denerwujące. Czasami możesz mieć wrażenie, że Napisane i rzetelnie egzekwowane dobre zasady, jednak upoważniają opiekunów. Zapobiegają wciągnięciu cię w robienie rzeczy, których nie chcesz robić. -Większość ludzi, którzy natkną się na twój projekt, nie wie nic o tobie ani twoich okolicznościach. Mogą założyć, że zarabiasz za pracę nad tym, zwłaszcza jeśli jest to coś, z czego regularnie korzystają i na którym polegają. Może w pewnym momencie poświęcisz dużo czasu na swój projekt, ale teraz jesteś zajęty nową pracą lub członkiem rodziny. +Większość ludzi, którzy natkną się na twój projekt, nie wie nic o tobie ani twoich okolicznościach. Mogą założyć, że zarabiasz za pracę nad tym, zwłaszcza jeśli jest to coś, z czego regularnie korzystają i na czym polegają. Może w pewnym momencie poświęcałeś dużo czasu na swój projekt, ale teraz jesteś zajęty nową pracą lub członkiem rodziny. Wszystko to jest w porządku! Upewnij się tylko, że inni wiedzą o tym. @@ -161,7 +161,7 @@ Jeśli widzisz, że ktoś jest entuzjastycznie nastawiony do twojego projektu, a ## Wykorzystaj swoją społeczność -Nie musisz robić wszystkiego sam. Społeczność twojego projektu istnieje bez powodu! Nawet jeśli nie masz jeszcze aktywnej społeczności współautorów, jeśli masz wielu użytkowników, włącz ich do pracy. +Nie musisz robić wszystkiego sam. Społeczność twojego projektu nie istnieje bez powodu! Nawet jeśli nie masz jeszcze aktywnej społeczności współautorów, jeśli masz wielu użytkowników, włącz ich do pracy. ### Udostępnij obciążenie pracą diff --git a/_articles/ru/how-to-contribute.md b/_articles/ru/how-to-contribute.md index e3723e4be1b..89fbc588238 100644 --- a/_articles/ru/how-to-contribute.md +++ b/_articles/ru/how-to-contribute.md @@ -478,14 +478,14 @@ related: * Сделать незначительное исправление (например, исправить опечатку, неработающую ссылку или очевидную ошибку) * Начать работать над тем, о чём уже было договорено или что обсуждалось в ишью -Пул-реквест не обязательно должен представлять законченную работу. Обычно лучше пул-реквест на раннем этапе, чтобы люди могли наблюдать за вашим прогрессом или оставлять отзывы о нем. Только в названии таком пул-реквесте укажите "WIP" (от англ. Work in Progress — в процессе выполнения). Всегда позже можно отправить дополнительные коммиты. +Пул-реквест не обязательно должен представлять законченную работу. Обычно лучше открывать пул-реквест на раннем этапе, чтобы люди могли наблюдать за вашим прогрессом или оставлять отзывы о нем. Только в названии таком пул-реквесте укажите "WIP" (от англ. Work in Progress — в процессе выполнения). Всегда позже можно отправить дополнительные коммиты. Если проект находится на GitHub, выполните следующие шаги, чтобы создать пул-реквест: * **[Форкните репозиторий](https://guides.github.com/activities/forking/)** и склонируйте его к себе локально. Затем в этом локальном репозитории добавьте оригинальный (upstream) репозиторий. Почаще загружайте изменения из исходного репозиторий, чтобы ваш локальный репозиторий оставался в актуальном состоянии, — это снизит появление конфликтов при создании пул-реквеста. (См. более подробные инструкции [здесь](https://help.github.com/articles/syncing-a-fork/).) * **[Создайте ветку](https://guides.github.com/introduction/flow/)** для ваших правок. * **Ссылайтесь на любые относящиеся к делу ишью** или подтверждающую документацию в своем PR (например, «Closes #37»). -* **Добавьте скриншоты до и после**, если ваши изменения включают затрагивает файлы HTML/CSS. Перетащите изображения в текстовую область пул-реквеста. +* **Добавьте скриншоты до и после**, если ваши изменения затрагивают файлы HTML/CSS. Перетащите изображения в текстовую область пул-реквеста. * **Протестируйте свои изменения!** Например, если есть, запустите тесты, и при необходимости напишите новые. Даже если нет тестов, проверьте сами, что после ваших изменений всё работает, как и раньше. * **Соблюдайте стиль написания кода проекта** в меру своих возможностей. Это может быть использование отступов, точек с запятой или комментариев иначе, чем вы привыкли, но мейнтейнерам это упросит слияние вашего пул-реквеста, а другим — облегчит понимание и поддержку в будущем. @@ -505,7 +505,7 @@ related: **Не** обращайтесь напрямую к этому человеку; помните, что публичное общение жизненно важно для опенсорс-проектов. -Если после вежливого напоминания, так и никто не ответил, есть вероятность, что никто и никогда не ответит. Это не самое приятное ощущение, но пусть оно вас не расстраивает. Такое с каждым случалось! Есть множество возможных причин, по которым вам не ответили, в том числе личные обстоятельства, на которые вы можете повлиять. Попробуйте найти другой проект или способ участия. Во всяком случае, нет больше смысла вкладываться в такие проекты, по крайней мере до того момента, когда объявляться другие члены сообщества. +Если после вежливого напоминания так и никто не ответил, есть вероятность, что никто и никогда не ответит. Это не самое приятное ощущение, но пусть оно вас не расстраивает. Такое с каждым случалось! Есть множество возможных причин, по которым вам не ответили, в том числе личные обстоятельства, на которые вы можете повлиять. Попробуйте найти другой проект или способ участия. Во всяком случае, нет больше смысла вкладываться в такие проекты, по крайней мере до того момента, когда объявятся другие члены сообщества. ### 🚧 У вас могут запросить внести изменения. @@ -517,7 +517,7 @@ related: ### 👎 Ваш вклад не принят. -В итоге ваш вклад может быть принят или нет. Надеюсь, вы не потратили слишком много усилий на него. Если для вас не было понятно, почему он не был принят, разумно попросить мейнтейнера дать пояснения. В конечном итоге, однако, вам нужно стоит понять и смирится с их решением. Не спорьте и не злитесь по этому поводу. В случае чего вы всегда можете форкнуть репозиторий, чтобы работать над своей собственной версией продукта! +В итоге ваш вклад может быть принят или нет. Надеюсь, вы не потратили слишком много усилий на него. Если для вас не было понятно, почему он не был принят, разумно попросить мейнтейнера дать пояснения. В конечном итоге, однако, вам стоит понять и смирится с их решением. Не спорьте и не злитесь по этому поводу. В случае чего вы всегда можете форкнуть репозиторий, чтобы работать над своей собственной версией продукта! ### 🎉 Ваш вклад принят. diff --git a/script/ebooks b/script/ebooks deleted file mode 100755 index b9372a28de3..00000000000 --- a/script/ebooks +++ /dev/null @@ -1,196 +0,0 @@ -#!/usr/bin/env node - -// Generate EPUB and MOBI ebooks - -const fs = require('fs'); -const path = require('path'); -const exec = require('child_process').exec; -const fastmatter = require('fastmatter'); -const mkdirp = require('mkdirp'); -const slug = require('slug'); -const unified = require('unified'); -const parse = require('remark-parse'); -const stringify = require('remark-stringify'); -const visit = require('unist-util-visit'); -const download = require('download'); -const ebrew = require('ebrew'); - -const processor = unified() - .use(parse) - .use(replaceAsides) - .use(replaceCheckboxes) - .use(fixImages) - .use(downloadImages) - .use(stringify); - -buildBooks([ - '_articles/how-to-contribute.md', - '_articles/starting-a-project.md', - '_articles/finding-users.md', - '_articles/building-community.md', - '_articles/best-practices.md', - '_articles/leadership-and-governance.md', - '_articles/getting-paid.md', - '_articles/code-of-conduct.md', - '_articles/metrics.md', - '_articles/legal.md', -]); - -function buildBooks(files) { - const out = 'assets/ebooks/open-source-guide'; - const tempFile = '_ebook.md'; - - mkdirp.sync('assets/ebooks'); - mkdirp.sync('.asset-downloads'); - - let source = files.map(readFile).join('\n\n'); - const { text, promises } = downloadImages(source); - fs.writeFileSync(tempFile, text); - - promises - .then(() => markdownToEpub(tempFile, `${out}.epub`)) - .then(() => epubToMobi(`${out}.epub`, `${out}.mobi`)) - .then(() => fs.unlinkSync(tempFile)) - .catch(err => console.error(err)); -} - -function readFile(file) { - const md = fs.readFileSync(file, 'utf8'); - - // Replace frontmatter with chapter title - const { attributes, body } = fastmatter(md); - let text = `# ${attributes.title}\n\n${body}`; - - return processor.process(text).contents; -} - -function markdownToEpub(mdFile, epubFile) { - return new Promise((resolve, reject) => { - console.log(`Building ${epubFile}...`); - - const manifestFile = '_ebook.json'; - fs.writeFileSync(manifestFile, JSON.stringify({ - tocDepth: 1, - title: 'Open Source Guides', - subtitle: 'Open source software is made by people just like you. Learn how to launch and grow your project.', - author: 'GitHub', - publisher: 'GitHub', - rights: 'CC-BY-4.0', - date: (new Date()).toISOString().slice(0, 10), - contents: path.resolve(mdFile), - })); - - ebrew.generate(manifestFile, epubFile, err => { - fs.unlinkSync(manifestFile); - if (err) { - reject(err.stack || err); - } else { - resolve(); - } - }); - }); -} - -function epubToMobi(epubFile, mobiFile) { - return new Promise((resolve, reject) => { - console.log(`Building ${mobiFile}...`); - - const kindlegen = require.resolve('kindlegen/bin/kindlegen'); - exec(`${kindlegen} ${epubFile} -c2 -verbose -o ${path.basename(mobiFile)}`, (err, stdout) => { - if (err && stdout.includes('MOBI file could not be generated because of errors!')) { - reject(stdout); - } else { - resolve(); - } - }); - }); -} - -function downloadImages(text) { - function image(processor) { - return ast => visit(ast, 'image', node => { - if (node.url.startsWith('http')) { - const url = node.url; - const filename = slug(path.basename(node.url)); - const filepath = `./.asset-downloads/${filename}.jpg` - node.url = filepath; - if (fs.existsSync(filepath)) { - promises.push(Promise.resolve()); - } else { - const promise = download(url) - .then(data => { - fs.writeFileSync(filepath, data); - }); - promises.push(promise); - } - } - }); - } - - let promises = []; - const processor = unified() - .use(parse) - .use(image) - .use(stringify); - - text = processor.process(text).contents; - - return { - promises: Promise.all(promises), - text, - }; -} - -/* -Replace asides with Markdown blockquotes: - -*/ -function replaceAsides(processor) { - return ast => visit(ast, 'html', node => { - if (node.value.startsWith(']*>/, '![]($1)\n') - .replace(/\(\/assets\//, '(./assets/') - .replace(/<\/?(aside|p).*?>/g, '') - .trim() - .replace(/(^|\n) */g, '\n> '); - } - }); -} - -/* -Replace checkboxes with unordered lists: -
- - -
-*/ -function replaceCheckboxes(processor) { - return ast => visit(ast, 'html', node => { - if (node.value.startsWith('/g, '') - .trim() - .replace(/^/, '* '); - } - }); -} - -/* -1. Remove image alts, otherwise they will be visible in a book -2. Fix asset paths -*/ -function fixImages(processor) { - return ast => visit(ast, 'image', node => { - node.alt = null; - node.url = node.url.replace(/^\/assets\//, './assets/'); - }); -} \ No newline at end of file diff --git a/test/package.json b/test/package.json index 030274bc158..f04cd907f11 100644 --- a/test/package.json +++ b/test/package.json @@ -3,14 +3,9 @@ "devDependencies": { "async": "^2.0.0", "dictionary-en-us": "^2.0.0", - "download": "^5.0.3", - "ebrew": "^0.2.3", - "fastmatter": "^1.1.1", "glob": "^7.0.5", "ignore": "^3.1.3", "js-yaml": "^3.6.1", - "kindlegen": "^1.1.0", - "mkdirp": "^0.5.1", "remark-frontmatter": "^1.1.0", "remark-lint": "^6.0.0", "remark-lint-blockquote-indentation": "^1.0.0", @@ -56,10 +51,8 @@ "retext-syntax-mentions": "^1.1.0", "retext-syntax-urls": "^1.0.0", "retext-words": "bkeepers/retext-words", - "slug": "^0.9.1", "to-vfile": "^2.1.0", "unified": "^6.1.0", - "unist-util-visit": "^1.1.1", "vfile-reporter": "^4.0.0", "vfile-statistics": "^1.0.0" }