diff --git a/.github/ISSUE_TEMPLATE/osf-guest-invite.yml b/.github/ISSUE_TEMPLATE/osf-guest-invite.yml index ae40e09..9099063 100644 --- a/.github/ISSUE_TEMPLATE/osf-guest-invite.yml +++ b/.github/ISSUE_TEMPLATE/osf-guest-invite.yml @@ -1,5 +1,5 @@ -name: OSF Guest Invite Issue -description: Use this form to invite a guest to Open Source Friday or have guests submit their information. +name: Open Source Friday Guest Request +description: Complete this form to request to be a guest on Open Source Friday title: Open Source Friday - [PROJECT NAME] - [MM-DD-YYYY] labels: ["open-source-friday", "open-source", "twitch", "pending"] assignees: ["LadyKerr", "AndreaGriffiths11"] @@ -25,6 +25,13 @@ body: description: Your GitHub handle placeholder: "@LadyKerr" + - type: textarea + id: about_you + attributes: + label: Tell us about yourself + description: Please share a bit about yourself and your background + placeholder: "I'm a developer who..." + - type: input id: project_name_1 attributes: @@ -35,7 +42,7 @@ body: - type: input id: project_repo_1 attributes: - label: Project Repo + label: Project Repo Link description: The github repository of your project placeholder: "github.com/repo-url" @@ -46,9 +53,7 @@ body: description: Did you schedule a date for your stream? options: - label: "Yes" - required: true - label: "Not yet" - required: true - type: input id: dates_1 diff --git a/.github/ISSUE_TEMPLATE/viernes.yml b/.github/ISSUE_TEMPLATE/viernes.yml new file mode 100644 index 0000000..b980251 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/viernes.yml @@ -0,0 +1,68 @@ +name: Solicitud de Invitado para Open Source Viernes +description: Complete este formulario para solicitar ser invitado en Open Source Friday +title: Open Source Friday - [NOMBRE DEL PROYECTO] - [DD-MM-AAAA] +labels: ["open-source-viernes", "open-source", "twitch", "pending", "spanish"] +assignees: + - AndreaGriffiths11 +body: + - type: markdown + attributes: + value: | + ## Formulario de Invitación para Invitados de Open Source Friday + #### :sparkles: Por favor, complete la siguiente información para ser invitado a Open Source Viernes. La fecha de la transmisión ser confirmada al aprovar el invitado :sparkles: + - type: input + id: nombre + attributes: + label: Nombre + description: Su nombre + placeholder: "Kedasha Kerr" + - type: input + id: github_user + attributes: + label: Usuario de GitHub + description: Su nombre de usuario en GitHub + placeholder: "@LadyKerr" + - type: textarea + id: acerca_de_ti + attributes: + label: Háblanos de ti + description: Por favor, comparte un poco sobre ti y tu experiencia + placeholder: "Soy un desarrollador que..." + - type: input + id: nombre_proyecto_1 + attributes: + label: Nombre del Proyecto + description: El nombre del proyecto que te gustaría mostrar y sobre el que quieres hablar + placeholder: "Proyecto Increíble" + - type: input + id: repo_proyecto_1 + attributes: + label: Enlace al Repositorio del Proyecto + description: El repositorio de GitHub de tu proyecto + placeholder: "github.com/url-del-repo" + - type: checkboxes + id: fecha_transmision + attributes: + label: Fecha de Transmisión + description: ¿Has programado una fecha para tu transmisión? + options: + - label: "Sí" + - label: "Aún no" + - type: input + id: social_twitter + attributes: + label: URL de Twitter + description: Tu perfil de Twitter + placeholder: "@itsthatladydev" + - type: input + id: social_linkedin + attributes: + label: URL de LinkedIn + description: Tu perfil de LinkedIn + placeholder: "linkedin.com/in/tu-perfil" + - type: textarea + id: mas_info + attributes: + label: Información Adicional + description: Por favor, comparte cualquier detalle adicional que quieras que sepamos sobre tu proyecto + placeholder: "Me gustaría hablar sobre..." diff --git a/.github/label-rules.yml b/.github/label-rules.yml new file mode 100644 index 0000000..cae3c46 --- /dev/null +++ b/.github/label-rules.yml @@ -0,0 +1,24 @@ +January: + - '/\d{4}-01-\d{2}/' +February: + - '/\d{4}-02-\d{2}/' +March: + - '/\d{4}-03-\d{2}/' +April: + - '/\d{4}-04-\d{2}/' +May: + - '/\d{4}-05-\d{2}/' +June: + - '/\d{4}-06-\d{2}/' +July: + - '/\d{4}-07-\d{2}/' +August: + - '/\d{4}-08-\d{2}/' +September: + - '/\d{4}-09-\d{2}/' +October: + - '/\d{4}-10-\d{2}/' +November: + - '/\d{4}-11-\d{2}/' +December: + - '/\d{4}-12-\d{2}/' diff --git a/.github/workflows/label-all-issues.yml b/.github/workflows/label-all-issues.yml new file mode 100644 index 0000000..59f5291 --- /dev/null +++ b/.github/workflows/label-all-issues.yml @@ -0,0 +1,107 @@ +name: Label All Issues + +on: + schedule: + - cron: '0 0 * * 0' # Run at midnight every Sunday + workflow_dispatch: + +jobs: + label-issues: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + + - name: Label All Issues + uses: actions/github-script@v6 + with: + github-token: ${{secrets.GITHUB_TOKEN}} + script: | + const fs = require('fs').promises; + + async function parseYaml(filePath) { + const content = await fs.readFile(filePath, 'utf8'); + const lines = content.split('\n'); + const result = {}; + let currentKey = null; + + for (const line of lines) { + const trimmedLine = line.trim(); + if (trimmedLine === '' || trimmedLine.startsWith('#')) continue; + + if (trimmedLine.includes(':')) { + [currentKey, value] = trimmedLine.split(':').map(s => s.trim()); + result[currentKey] = []; + if (value) { + result[currentKey].push(value.replace(/^['"]|['"]$/g, '')); + } + } else if (trimmedLine.startsWith('-') && currentKey) { + let value = trimmedLine.slice(1).trim(); + value = value.replace(/^['"]|['"]$/g, ''); + result[currentKey].push(value); + } + } + + return result; + } + + async function getIssues(octokit, owner, repo, page = 1) { + const response = await octokit.rest.issues.listForRepo({ + owner: owner, + repo: repo, + state: 'all', + per_page: 100, + page: page + }); + return response.data; + } + + async function addLabelsToIssue(octokit, owner, repo, issueNumber, labels) { + await octokit.rest.issues.addLabels({ + owner: owner, + repo: repo, + issue_number: issueNumber, + labels: labels + }); + } + + async function labelAllIssues() { + try { + console.log('Reading label rules file...'); + const labelRules = await parseYaml('.github/label-rules.yml'); + console.log('Parsed label rules:', JSON.stringify(labelRules, null, 2)); + + let page = 1; + let issues; + do { + issues = await getIssues(github, context.repo.owner, context.repo.repo, page); + for (const issue of issues) { + const title = issue.title.toLowerCase(); + const labelsToAdd = []; + for (const [label, keywords] of Object.entries(labelRules)) { + if (keywords.some(keyword => { + if (keyword.startsWith('/') && keyword.endsWith('/')) { + const regex = new RegExp(keyword.slice(1, -1), 'i'); + return regex.test(title); + } + return title.includes(keyword.toLowerCase()); + })) { + labelsToAdd.push(label); + } + } + if (labelsToAdd.length > 0) { + await addLabelsToIssue(github, context.repo.owner, context.repo.repo, issue.number, labelsToAdd); + console.log(`Added labels to issue #${issue.number}: ${labelsToAdd.join(', ')}`); + } else { + console.log(`No matching labels found for issue #${issue.number}`); + } + } + page++; + } while (issues.length > 0); + } catch (error) { + console.error('Error in workflow:', error.message); + console.error('Error stack:', error.stack); + core.setFailed(error.message); + } + } + + labelAllIssues(); diff --git a/.github/workflows/label-new-issues.yml b/.github/workflows/label-new-issues.yml new file mode 100644 index 0000000..4375fbb --- /dev/null +++ b/.github/workflows/label-new-issues.yml @@ -0,0 +1,90 @@ +name: Label New Issues + +on: + issues: + types: [opened] + +jobs: + label-new-issue: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + + - name: Label New Issue + uses: actions/github-script@v6 + with: + github-token: ${{secrets.GITHUB_TOKEN}} + script: | + const fs = require('fs').promises; + + async function parseYaml(filePath) { + const content = await fs.readFile(filePath, 'utf8'); + const lines = content.split('\n'); + const result = {}; + let currentKey = null; + + for (const line of lines) { + const trimmedLine = line.trim(); + if (trimmedLine === '' || trimmedLine.startsWith('#')) continue; + + if (trimmedLine.includes(':')) { + [currentKey, value] = trimmedLine.split(':').map(s => s.trim()); + result[currentKey] = []; + if (value) { + result[currentKey].push(value.replace(/^['"]|['"]$/g, '')); + } + } else if (trimmedLine.startsWith('-') && currentKey) { + let value = trimmedLine.slice(1).trim(); + value = value.replace(/^['"]|['"]$/g, ''); + result[currentKey].push(value); + } + } + + return result; + } + + async function addLabelsToIssue(octokit, owner, repo, issueNumber, labels) { + await octokit.rest.issues.addLabels({ + owner: owner, + repo: repo, + issue_number: issueNumber, + labels: labels + }); + } + + async function labelNewIssue() { + try { + console.log('Reading label rules file...'); + const labelRules = await parseYaml('.github/label-rules.yml'); + console.log('Parsed label rules:', JSON.stringify(labelRules, null, 2)); + + const issue = context.payload.issue; + const title = issue.title.toLowerCase(); + const labelsToAdd = []; + + for (const [label, keywords] of Object.entries(labelRules)) { + if (keywords.some(keyword => { + if (keyword.startsWith('/') && keyword.endsWith('/')) { + const regex = new RegExp(keyword.slice(1, -1), 'i'); + return regex.test(title); + } + return title.includes(keyword.toLowerCase()); + })) { + labelsToAdd.push(label); + } + } + + if (labelsToAdd.length > 0) { + await addLabelsToIssue(github, context.repo.owner, context.repo.repo, issue.number, labelsToAdd); + console.log(`Added labels to new issue #${issue.number}: ${labelsToAdd.join(', ')}`); + } else { + console.log(`No matching labels found for new issue #${issue.number}`); + } + } catch (error) { + console.error('Error in workflow:', error.message); + console.error('Error stack:', error.stack); + core.setFailed(error.message); + } + } + + labelNewIssue(); diff --git a/.github/workflows/notify-guests.yml b/.github/workflows/notify-guests.yml index 5bfe056..7702a20 100644 --- a/.github/workflows/notify-guests.yml +++ b/.github/workflows/notify-guests.yml @@ -10,8 +10,10 @@ jobs: steps: - name: Check if stream date is not yet scheduled id: check-date + env: + ISSUE_BODY: ${{ github.event.issue.body }} run: | - echo "::set-output name=not_yet::$(echo '${{ github.event.issue.body }}' | grep -q 'Not yet' && echo 'true' || echo 'false')" + echo "::set-output name=not_yet::$(echo '$ISSUE_BODY' | grep -q 'Not yet' && echo 'true' || echo 'false')" - name: Comment on issue if: steps.check-date.outputs.not_yet == 'true' uses: actions/github-script@v5 diff --git a/.github/workflows/send-stream-reminder.yml b/.github/workflows/send-stream-reminder.yml deleted file mode 100644 index 2283d84..0000000 --- a/.github/workflows/send-stream-reminder.yml +++ /dev/null @@ -1,36 +0,0 @@ -name: Send Stream Reminder 1 day before - -on: - issues: - types: [opened, edited] - -jobs: - send-reminder: - runs-on: ubuntu-latest - steps: - - name: Extract date and GitHub handle from issue body - id: extract-date-and-handle - run: | - DATE=$(echo '${{ github.event.issue.body }}' | grep -oP '\d{4}-\d{2}-\d{2}') - HANDLE=$(echo '${{ github.event.issue.body }}' | grep -oP '@\w+') - echo "::set-output name=date::$DATE" - echo "::set-output name=handle::$HANDLE" - - name: Wait until one day before date - run: | - DATE="${{ steps.extract-date-and-handle.outputs.date }}" - REMINDER_DATE=$(date -d "$DATE - 1 day" +'%Y-%m-%d') - while [[ $(date -u +'%Y-%m-%d') < "$REMINDER_DATE" ]]; do - sleep 86400 # Sleep for 24 hours - done - - name: Comment on issue - uses: actions/github-script@v5 - with: - github-token: ${{secrets.GITHUB_TOKEN}} - script: | - const issueComment = { - owner: context.repo.owner, - repo: context.repo.repo, - issue_number: ${{ github.event.issue.number }}, - body: `This is a reminder that the event is scheduled for tomorrow. ${'{{ steps.extract-date-and-handle.outputs.handle }}'}` - }; - github.rest.issues.createComment(issueComment); diff --git a/.github/workflows/standardize-issue-titles.yml b/.github/workflows/standardize-issue-titles.yml new file mode 100644 index 0000000..4982367 --- /dev/null +++ b/.github/workflows/standardize-issue-titles.yml @@ -0,0 +1,84 @@ +name: Standardize Issue Titles + +on: + workflow_dispatch: # Allows manual triggering + +jobs: + standardize-titles: + runs-on: ubuntu-latest + permissions: + issues: write + + steps: + - name: Set up Python + uses: actions/setup-python@v4 + with: + python-version: '3.10' + + - name: Create standardization script + run: | + cat > standardize_titles.py << 'EOF' + import os + import requests + import time + + # Authentication + token = os.environ.get("GITHUB_TOKEN") + headers = { + "Accept": "application/vnd.github.v3+json", + "Authorization": f"token {token}" + } + + # Repository details + repo_owner = os.environ.get("REPO_OWNER") + repo_name = os.environ.get("REPO_NAME") + + # Issue updates mapping + issue_updates = [ + {"number": 138, "title": "Open Source Friday - Nuxt and AI - [05-23-2025]"}, + {"number": 137, "title": "Open Source Friday - SupermemoryAI - [05-16-2025]"}, + {"number": 136, "title": "Open Source Friday - Effection - [TBD]"}, + {"number": 135, "title": "Open Source Friday - Cluecumber - [TBD]"}, + {"number": 133, "title": "Open Source Friday with OSPO - Td Bank - [04-04-2025]"}, + {"number": 129, "title": "Open Source Friday - supervision - [03-28-2025]"}, + {"number": 127, "title": "Open Source Friday - Convex - [05-09-2025]"}, + {"number": 125, "title": "Open Source Friday - Dagger AI Agents - [TBD]"}, + {"number": 117, "title": "Open Source Friday - Oqtane - [04-11-2025]"}, + {"number": 116, "title": "Open Source Friday - Daytona - [04-18-2025]"}, + {"number": 115, "title": "Open Source Friday - Ushahidi - [TBD]"}, + {"number": 111, "title": "Open Source Friday - Connecting Workers and Public AI - [TBD]"} + ] + + # Update each issue + for update in issue_updates: + try: + issue_number = update["number"] + new_title = update["title"] + + print(f"Updating issue #{issue_number} with title: {new_title}") + + url = f"https://api.github.com/repos/{repo_owner}/{repo_name}/issues/{issue_number}" + payload = {"title": new_title} + + response = requests.patch(url, json=payload, headers=headers) + + if response.status_code == 200: + print(f"Successfully updated issue #{issue_number}") + else: + print(f"Error updating issue #{issue_number}: {response.status_code} - {response.text}") + + # Add a short delay to avoid rate limiting + time.sleep(1) + except Exception as e: + print(f"Error updating issue #{issue_number}: {str(e)}") + EOF + + - name: Install dependencies + run: pip install requests + + - name: Run standardization script + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + REPO_OWNER: githubevents + REPO_NAME: open-source-friday + run: python standardize_titles.py diff --git a/README.md b/README.md index 9e7f8c0..4f53346 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,13 @@ -![Open Source Friday Banner](/admin/stream-assets/open-source-friday-banner.png) +![OSF Thumbnails](https://github.com/githubevents/open-source-friday/assets/20666190/7c9b074d-4b77-43ca-818c-93b7184eb3b4) -## Open Source Friday - Livestream ✨ -_weekly on Fridays at 1pm EST_ -Join us on Fridays to learn about Open Source from Maintainers of the most popular projects on GitHub! +## Open Source Friday - Live Stream Event ✨ +_Every Friday at 1 PM EST_ + +Join [Andrea Griffiths](https://www.instagram.com/alacolombiadev/) and [Kedasha Kerr](https://www.instagram.com/itsthatlady.dev/) for Open Source Friday, where we dive into engaging discussions with maintainers from some of GitHub's most popular projects. Interested in participating? Start by checking out our [project criteria](https://github.com/githubevents/open-source-friday/blob/main/admin/project-criteria.md) and then open an issue using our [guest invite template](https://github.com/githubevents/open-source-friday/issues/new?template=osf-guest-invite.yml&assignees=AndreaGriffiths11%2CLadyKerr&labels=open-source%2Copen-source-friday%2Cpending%2Ctwitch). + +Don't miss this chance to explore the world of Open Source every Friday. We're live on [Twitch](https://www.twitch.tv/github), and you can catch up on previous sessions on our [YouTube playlist](https://www.youtube.com/playlist?list=PL0lo9MOBetEFmtstItnKlhJJVmMghxc0P). Join the community and expand your Open Source knowledge! + -We stream live on **https://www.twitch.tv/github** you can also watch past recordings on [Youtube](https://www.youtube.com/playlist?list=PL0lo9MOBetEFmtstItnKlhJJVmMghxc0P). diff --git a/SECURITY.md b/SECURITY.md new file mode 100644 index 0000000..77d7986 --- /dev/null +++ b/SECURITY.md @@ -0,0 +1,31 @@ +Thanks for helping make GitHub safe for everyone. + +# Security + +GitHub takes the security of our software products and services seriously, including all of the open source code repositories managed through our GitHub organizations, such as [GitHub](https://github.com/GitHub). + +Even though [open source repositories are outside of the scope of our bug bounty program](https://bounty.github.com/index.html#scope) and therefore not eligible for bounty rewards, we will ensure that your finding gets passed along to the appropriate maintainers for remediation. + +## Reporting Security Issues + +If you believe you have found a security vulnerability in any GitHub-owned repository, please report it to us through coordinated disclosure. + +**Please do not report security vulnerabilities through public GitHub issues, discussions, or pull requests.** + +Instead, please send an email to opensource-security[@]github.com. + +Please include as much of the information listed below as you can to help us better understand and resolve the issue: + +- The type of issue (e.g., buffer overflow, SQL injection, or cross-site scripting) +- Full paths of source file(s) related to the manifestation of the issue +- The location of the affected source code (tag/branch/commit or direct URL) +- Any special configuration required to reproduce the issue +- Step-by-step instructions to reproduce the issue +- Proof-of-concept or exploit code (if possible) +- Impact of the issue, including how an attacker might exploit the issue + +This information will help us triage your report more quickly. + +## Policy + +See [GitHub's Safe Harbor Policy](https://docs.github.com/en/github/site-policy/github-bug-bounty-program-legal-safe-harbor#1-safe-harbor-terms) diff --git a/admin/approved-guest.md b/admin/approved-guest.md new file mode 100644 index 0000000..cca711a --- /dev/null +++ b/admin/approved-guest.md @@ -0,0 +1,19 @@ +Dear Guest, + +Thank you for agreeing to join us on Open Source Friday! We're excited to have you share your project with our community. + +Your session will be hosted by Andrea Griffiths and/or Kedasha Kerr and will stream live on Twitch at 1 PM EST on your scheduled Friday. To get you set up: + +1. Please select an upcoming Friday from our streaming calendar: [calendar link](https://gh.io/osf-booking) + +2. After selecting your date, please open an issue titled: + "Open Source Friday - [Your Project Name] - [DD-MM-YYYY]". + using our guest template at this [issue link](https://gh.io/osf-issue). + +Once both steps are completed, we'll send you additional details about the stream setup and what to expect. + +Looking forward to having you on the show! + +With gratitude, + +Andrea and Kedasha diff --git a/admin/guest-assets/guia-stream.md b/admin/guest-assets/guia-stream.md new file mode 100644 index 0000000..558f27d --- /dev/null +++ b/admin/guest-assets/guia-stream.md @@ -0,0 +1,56 @@ +¡Gracias por aceptar hablar sobre tu proyecto en Open Source Viernes! Aprecio mucho que hayas dedicado tiempo a formar parte de la discusión, ¡y estoy muy emocionado de escuchar tu historia y mostrar tu proyecto! ¡Realmente va a ayudar a mucha gente! + +# Guía de Transmisión para Invitados +Todas las entrevistas se transmiten en vivo en el [Canal de Twitch de GitHub](https://twitch.tv/GitHub) (usando Streamyard) y se editan para estar disponibles en YouTube como contenido compartible. + +[Grabaciones anteriores de OSF](https://www.youtube.com/playlist?list=PL0lo9MOBetEFi42pe4LGeWK0sqNaErM2i) + +## Software y Equipamiento de Grabación: +Utilizaremos Streamyard para tran)smitir en Twitch. + +**Los invitados remotos necesitarán tener micrófonos y auriculares separados para reducir el ruido ambiente.** + +## Formato y Ejemplo de Preguntas: + +La transmisión tendrá un formato relajado: + +1. Preséntate - 5 minutos +2. ¿Cuál es tu proyecto? +3. Demostración - 5-10 minutos (¿Qué hace? ¿Tienes un ejemplo/hola-mundo?) +4. ¿Cuál fue tu motivación para construir tu proyecto o cómo comenzó este proyecto? +5. ¿Cómo pueden las personas contribuir? +6. ¿Cuál fue lo último que subiste usando GitHub? ¿O qué es lo siguiente que te gustaría subir? +7. ¿Hay alguna pregunta de la audiencia? +### Preguntas de Cierre +- ¿Cuál es tu mejor consejo para nuevos colaboradores? +- ¿Cuál es tu canción favorita de todos los tiempos? +- ¿Qué emoji te describe mejor? +- ¿Cuál es tu sabor de helado favorito? + +### Despedida - toda la transmisión no debería durar más de 30-45 minutos + +## Directrices Generales para la Entrevista: + +Siéntete libre de ser específico sobre tus experiencias y proporcionar ejemplos sobre lo que estás hablando. Recuerda que la audiencia objetivo son personas interesadas en la programación, pero no todas son expertas, así que trata de definir cualquier término técnico y utiliza menos jerga cuando sea posible. 💡 + +## Iluminación: + +No hay un requisito específico aquí, pero por favor considera la iluminación. [Aquí tienes un gran artículo sobre la importancia de la iluminación y cómo configurarla para tu transmisión/webinario/video](https://livestream.com/blog/lighting-live-video-webinar). + +**Siempre se prefiere una conexión Ethernet por cable en lugar de Wi-Fi** + +## Preparación para la Demo: +¡Alegría - conoces tu proyecto mejor que nadie, así que elige qué y cómo demostrar! + +### Algunas otras cosas buenas que hacer: +- Borra el historial de tu navegador y oculta la barra de marcadores. (Si usas Chrome, podrías crear un nuevo perfil de navegador). +- Asegúrate de iniciar sesión y tener la autenticación de dos factores activada en las herramientas que vas a usar. +- Desactiva las notificaciones (el modo no molestar es el mejor). +- Desactiva cualquier complemento del navegador que no quieras ver en la grabación. +- Amplía la vista de tu navegador al menos al 125%. +- Cambia la resolución de tu pantalla a 1920:1080. +- Selecciona Configuración -> General -> Ocultar y mostrar automáticamente la barra de menú. +- Selecciona Configuración -> Dock -> Ocultar y mostrar automáticamente el Dock. +- Considera crear un repositorio de plantilla para la demo, así podremos repetirla fácilmente si es necesario. +- ¡Usa audifonos! +- ¡Disfruta de la entrevista! diff --git a/admin/guest-assets/preguntas-generales.md b/admin/guest-assets/preguntas-generales.md new file mode 100644 index 0000000..1fa48b2 --- /dev/null +++ b/admin/guest-assets/preguntas-generales.md @@ -0,0 +1,32 @@ +### Unirse a la Transmisión +Puedes unirte a la transmisión desde este enlace: + +La hora oficial de inicio es: 12:00 pm, hora del este (ET). Por favor, intenta unirte 10-15 minutos (alrededor de las 11:45) antes para que podamos probar el audio, el video y el intercambio de pantalla. + +## Formato + +1. Preséntate - 5 minutos +2. ¿Cuál es tu proyecto? +3. ¿Qué te inspiró a crear tu proyecto o a involucrarte en su mantenimiento? +4. Demostración - 5-15 minutos (normalmente las personas hacen una demostración sencilla de "Hola Mundo" o muestran una pequeña característica nueva que se ha añadido). + +#### Preguntas +- Como mantenedor, ¿qué desafíos has enfrentado? +- ¿Cuál ha sido la parte más gratificante de mantener un proyecto? +- ¿Cuáles son tus ideas sobre cómo podemos mejorar la diversidad en el código abierto? +- ¿Cómo pueden las personas contribuir a tu proyecto? +- ¿Algún consejo para aquellos que deseen obtener más colaboradores, patrocinadores y usuarios para sus proyectos de código abierto? +- ¿Hay preguntas de la audiencia? + +#### Preguntas de cierre (no técnicas): +- ¿Cuál fue el primer lenguaje de programación que aprendiste? +- Si el dinero no fuera un problema, ¿cómo te gustaría pasar idealmente tu tiempo? En el trabajo o no en el trabajo. +- ¿Qué has aprendido hoy? +- ¿Cuál es tu canción favorita de todos los tiempos? +- ¿Qué emoji te describe mejor? +- ¿Cuál es tu sabor de helado favorito? +- GIF - ¿pronunciación con "g" fuerte o "g" suave? +- Canción favorita de Beyoncé? +- ¿Cuál es tu cosa favorita sobre el código abierto? + +Fin de la transmisión... no debería durar más de 45 minutos. diff --git a/admin/guest-invite.md b/admin/guest-invite.md index 1cf2cb6..619f57b 100644 --- a/admin/guest-invite.md +++ b/admin/guest-invite.md @@ -6,7 +6,7 @@ We’re amped up for the upcoming Open Source Friday stream and would be thrille Here’s the simple rundown on how we'll work together: -1. First off, hit this [OSS Friday Calendar link](https://calendar.google.com/calendar/u/0/appointments/schedules/AcZssZ38jS6kHbRp2IfqBPTBnmP_z5L3A0bCMKEpcFPTTS5uOkBWE0z_2SZ422BG3Y_g0Yz9AAnq-7KS) to book a slot that works for you. 🗓️ +1. First off, hit this [OSS Friday Calendar link](https://gh.io/osf-booking) to book a slot that works for you. 🗓️ 2. Next, pop over to our [repo](https://github.com/githubevents/open-source-friday/issues) and create an issue with what you're keen on chatting about. 📝 3. Our friendly bot will nudge you to book a slot if you haven't yet, and once you do, we’ll mark your issue as "scheduled". ✅ 4. That label triggers a task list on our end, ensuring everything sails smoothly on the big day. 📋 diff --git a/admin/process.md b/admin/process.md new file mode 100644 index 0000000..45882a6 --- /dev/null +++ b/admin/process.md @@ -0,0 +1,5 @@ +## How we do Open Source Friday + +To learn how we create open source friday, please visit this doc: https://gh.io/osf-process + +This is a full guide to assets, sourcing guests and scheduling. diff --git a/admin/project-criteria.md b/admin/project-criteria.md new file mode 100644 index 0000000..bb93f82 --- /dev/null +++ b/admin/project-criteria.md @@ -0,0 +1,24 @@ +## Open Source Friday + +We are very grateful for your interest in participating in our Open Source Friday live streaming program! This initiative aims to showcase exciting open source projects and help grow their contributor communities. + +To be considered for the program, your project should meet the following criteria: + +1. Have a code of conduct, license and contributing guide in place. +2. Have a minimum of 100 stars and be hosted on GitHub. +3. Be open to new contributions from the greater developer community. + +Additionally, projects with the following characteristics will be given preference: + +- A community conversation channel (e.g., Discussion, Discord, or similar) +- A triage team or structured contributor onboarding process + +As a maintainer or contributor, you should be: + +1. Available to participate in the live stream on the designated Friday at 10am PST. We're also happy to accommodate exceptions for pre-recording sessions for certain projects. +2. Willing to receive and review the show notes and live streaming preparation guide. +3. Available for a live stream scheduled at least two weeks in advance. + +If your project meets these criteria and you're excited to showcase your work to a global audience, we'd love to have you on the show! Please fill out the [invitation request issue](https://github.com/githubevents/open-source-friday/issues/new?template=osf-guest-invite.yml&assignees=AndreaGriffiths11%2CLadyKerr&labels=open-source%2Copen-source-friday%2Cpending%2Ctwitch) to get started. + +We look forward to featuring your project and helping grow your contributor community! diff --git a/admin/stream-assets/OSF-social-photoshop.zip b/admin/stream-assets/OSF-social-photoshop.zip deleted file mode 100644 index a915b09..0000000 Binary files a/admin/stream-assets/OSF-social-photoshop.zip and /dev/null differ diff --git a/admin/stream-assets/open-source-friday-banner.png b/admin/stream-assets/open-source-friday-banner.png deleted file mode 100644 index 8a2b41a..0000000 Binary files a/admin/stream-assets/open-source-friday-banner.png and /dev/null differ