https://raw.githubusercontent.com/PyAr/wiki/master/images/GSoC2022.png

GSoC 2022 PyAr projects

The following are the Python Argentina projects that could participate in Google Summer of Code 2022 (under the PSF org).
Ideas are tentative, please engage with the community strongly to present and improve your original proposals.

PyZombis

https://raw.githubusercontent.com/PyAr/PyZombis/main/_sources/lectures/img/TWP_small.png

A Community course, completely online and interactive, to teach Python to everyone! http://pyar.github.io/PyZombis

The original Brazilian MOOC "Python for Zumbies" created by Fernando Masanori has +800k views on Youtube and has taught over 70K students basic Python. In this Spanish adaptation, all lectures and exercises are done fully online. There is no need for the student to install python on their computer or to run their own server.

Expected outcomes:
Some lectures still need further work to be ported to the web (via Brython, a client-side Python interpreter on top of Javascript), so they can run interactively in the browser (databases, games) using native JS libraries.
Playwright end-2-end automated web tests are mandatory for new contributions (+Pull Request checklist & documentation)
Refactors to the upstream educative platform (Runestone) should be continued and extended, for further information see PR#1208 (a new component: interactive python interpreter for advanced exercises)
  • Project information:
  • Project ideas:
    • Entry-level smaller enhancements for coding exercises and examples (see ticket link for more details)
      • Refactor modular programming chapter #216
      • Modernize MVC & exceptions example app #217
      • Modernize multimedia app & Object-Oriented Programming lecture #218
      • Improve Web development sample with an SPA #219
      • Refactor GUI wrapper for Brython #220
    • Interactive SQL python lectures using javascript (SQLite.js): full details in #193 (including: refactor of lessons code, add new demo databases, explore IndexedDB, improve & extend exercises with automatic grading / unit tests)
    • Interactive PyGame lectures using a javascript "wrapper" like pyjsdl, gamejs and/or resurrecting brython-pygame / fork (tip: see Brython demos: bricks & 3D walker, a zombie educative game would be great!)
    • BONUS TRACK: Interactive Web development intro lectures using web2py educative framework (capstone project for peer-review final course assignment); this includes a full revision of the lesson and a Kubernetes deployment script to provide a full web2py multi-tenant server where the students can log-in and develop/execute their web exercises
  • Project Length: 175 hr each; prefer a full 350 hr proposal including upstream contributions + UI/UX functional revamp and extensive testing
  • Difficulty level: Intermediate (basic Python and Web programming experience expected, some gaming + HTML5 design background recommended)
  • Technologies involved: Python (sphinx, runestone, pygame, sqlite, pytest-playwrigth, pytest-vcr), Javascript (ajax, DOM)
  • Potential mentors: @reingart (coordinator) + @NicolasSandoval et al., please contact all mentors in PyAr GSoC Telegram group
  • Past GSoC Students projects wrap-up (for reference):

PyEmpaq

https://raw.githubusercontent.com/facundobatista/pyempaq/main/resources/logo-256.png

PyEmpaq is a simple but powerful Python packer to run any project with any virtualenv dependencies anywhere. You can convert any Python project into a single .pyz file with all the project's content packed inside. It will run ok in Linux, Windows, Mac, or whatever. The only requirement is Python to be already installed.

Expected outcomes:
Both the packaging and execution improvements should be fully multiplatform (see GitHub Actions CI infrastructure).
Contributions should have proper documentation and testing coverage (unit and integration)
  • Project information:
  • Project ideas:
    • Milestone Control on packed content : Specify exactly what to include in the project's config
    • Milestone Testing: Implement logged_exec in unpacker, instead of subprocess.run
    • Milestone Stabilization: GUI; Windows GitHub Actions; Ubuntu (Snap); support setup.py / setup.cfg & pyproject.toml
  • Project Length: 175 hr to 350 hr (preferred, comprising several ideas)
  • Difficulty level: Easy to Intermediate (some ideas possibly doable by an advanced beginner with some python experience)
  • Technologies involved: Python Packaging, Virtual environments & Testing (setuptools, pip, wheels, venv, pytest)
  • Potential mentors: @facundobatista (coordinator) + @eamanu et al., please contact all mentors in PyAr GSoC Telegram group

OpenLex

https://raw.githubusercontent.com/PyAr/OpenLex/master/static/logoOpenLex.png

Legal Case Management Software for Attorneys and Small Law Firms

OpenLEX was developed as part of an Open Source Specialization Program, to provide free legal software for lawyers and small law firms (in a market with no Open Source alternative for the Continental Law System and local regulations)

Expected outcomes:
OpenLex is a project to facilitate the work of lawyers and small law firms. It would be great if the app could be usable from mobile phones and tablets (i.e. from Tribunals, Courts, etc.) The project should be easy to install, even for non-technical users (lawyers), its main intended audience.
  • Project information:
  • Project ideas:
    • Classic Desktop app #20 & Responsive for mobile #14
    • Installers for Windows #13, Linux #15 & MacOS #16
    • Invoice integration #12
  • Project Length: 175 hr (medium) per idea/ticket; for a 350 hr project you might want to plan to go beyond and combine/extend ideas, to see if you can improve our current code.
  • Difficulty level: Easy (minimal web programming experience, legal knowledge is a plus)
  • Technologies involved: Python (web2py, pytest-playwright), HTML5, JavaScript, mobile (Android/IOS, optional)
  • Potential mentors: @marian-vignau (coordinator) + @eamanu et al., please contact all mentors in PyAr GSoC Telegram group)
  • Past GSoC Students projects wrap-up (for reference):

PyAfipWs

https://raw.githubusercontent.com/PyAr/pyafipws/py3k/plantillas/logo.png

Library for Developers (integrators and legacy languages interfaces) Tools for Accountants and SMEs (Odoo/OpenERP modules and Tryton Argentina's localization). Electronic Invoice, Agriculture, Foreign Trade, Taxes, Pharmaceutical, etc.

PyAFIPWs is a widespread standard reference implementation to communicate with Argentina’s government entities, with more than ~2K users group subscriptions, many bindings to other languages, and used in modules for Open Source ERP localizations (OpenERP, Odoo, Tryton, etc.)

The project has more than 10 years of development history and many accumulated features, covering several webservices and tools. Initial work has been completed to migrate and modernize the project, but there are many rough edges and enhancements opportunities.

Expected outcomes:

As it's multi-platform, used by a wide user base of developers (specially from other programming languages), special care must be taken to improve the code-base with backward compatibility.

Exhaustive Test coverage is a must to complete the transition. Also, installers for Windows users should be migrated and upgraded to support legacy applications (main use case). Finally, a webservice simulator could be helpful to ease integration testing and speed-up new developments.

  • Project information:
  • Project Ideas:
    • Unit Testing: extend unit tests coverage beyond 70% (including command-line tools, see pending Pull Requests and report.html in GitHub Actions workflow)
    • Automation: build windows installers in continuous integration (see Wiki: Install to automate)
    • Webservice simulator: fake implementation for testing, mimicking government servers (WSDL SOAP based, see server.py for an example, and web2py-app for a Proof of Concept)
  • Project Length: 175 hr (medium) to 350 hr (large, several ideas)
  • Difficulty level: Intermediate (basic knowledge in operating systems, network protocols, APIs & testing; Accounting / ERP experience recommended)
  • Technologies involved: Python (httplib, xml, webservices, pdf, dbf, pywin32, pytest, pytest-vcr, py2exe), Linux/Windows (packaging/installers/APIs/DLL)
  • Potential mentors: @reingart (coordinator) + @NicolasSandoval, please contact all mentors in PyAr GSoC Telegram group
  • Past GSoC Students projects wrap-up (for reference):

About Python Argentina

We are looking for new Pythonistas!

Help us to foster the development of several open-source community projects. Many are fun and innovative, others are challenging and resolve real-world requirements.

The association was founded aiming to help the Python devs, increase their diversity and outreach, especially overcoming minorities and cultural barriers (mainly socioeconomic, language, gender), serving as an umbrella organization to some ongoing efforts.

Spanish is one of the most spoken languages in the world, and many of our developed tools and libraries are aimed to fill the missing open-source gap. They can help to learn and further work with Python, either to enthusiasts, professional programmers, or even final users!

Experienced developers, teachers, and volunteers will assist you, guiding you throughout the process with well-defined goals (according to skills and tech background)

Contacting Us

We're in the Argentina time zone (GMT-3)

NOTE: Spanish is a requisite for many projects, as it is the language used for documentation and community communications. On the other side, if you do not speak English fluently, we can help you with translations and guidance (in Spanish, of course).

NOTA: Si hablás Español pero te cuesta el Inglés, te podemos ayudar con las traducciones y redacciones para que puedas participar! No te preocupes, el día a día y documentación en general están en Castellano.

Visitá nuestra GSoC Wiki en Español para más información: https://wiki.python.org.ar/gsoc/

We want our community to be more diverse: whoever you are, and whatever your background, we welcome you.

Queremos que nuestra comunidad sea más diversa: quienquiera que seas, sea cual sea tu origen, te damos la bienvenida

Getting Started

If you want to participate as a contributor, please follow the next guidelines:

Presenting yourself

Join the Telegram group and write to about you. Please send an introductory email to the Google Group and state clearly:

  • Why you want to participate in GSoC, shortly comment your background and expectations
  • What project would you prefer: look at this page for ideas
  • What is your previous experience, Python skills, Django, hg/git, js, etc.

Fixing a bug!

  • Ask for a simple non-trivial ticket. For example, take a look at CDPedia, PyAfipWs, OpenLex, PyZombis.
  • Create a user in GitHub (if you don't have one)
  • Fork the project repository and try to fix an issue of your desired project
  • Discuss with potential mentors your fix, creating a Pull Request as early as possible!

Writing a Proposal

  • Select a project idea and write a detailed proposal following this template using Google Docs (in advance!)
  • Plan your prepwork for the community bonding period (eg. a Proof-Of-Concept)
  • Define a milestones for each evaluation phase (i.e. Prototype, Pilot / Final Demo)
  • Plan you weekly work & deliverables (tasking out: high-level goals for each milestone)
  • Describe the acceptance criteria ("Minimum Viable Product" of each phase)

Share an early draft and discuss your approach in the group with mentors. Do not forget to submit your application to the Google system when ready, some days before the deadline (the server can be overloaded at last minute).

TIPs: read and follow the GSoC guide & PSF check-list

Some past draft proposals for reference:

Important notes

Late, incomplete, or low-quality proposals will not be considered at all. Mentor's time and available students slots are limited, so please ask intelligently for advice and feedback early.

Last-minute applications are generally a signal of further problems (for you and for us too, please avoid!). Proposals without any previous contribution in the repository (i.e. bug-fix issue) will be rejected.

You're expected to have an almost full-time dedication to the GSoC, so plan accordingly and disclose any potential commitment (exams, work, vacations, travels, etc.)