Skip to content

Instantly share code, notes, and snippets.

@freakboy3742
Last active May 17, 2016 01:51
Show Gist options
  • Save freakboy3742/20e202167cb3a00ff854019bda2c175c to your computer and use it in GitHub Desktop.
Save freakboy3742/20e202167cb3a00ff854019bda2c175c to your computer and use it in GitHub Desktop.
MOSS Mission Partner Grant application

MOSS Mission Partner Grant application

Project name

BeeWare

Your name

Russell Keith-Magee

Endorser's Name

You need to give the name of someone well known and respected in your spoken language's open source community who will vouch for you and your project.

Nick Coghlan, CPython core developer

Project website

http://pybee.org

Project description

BeeWare is an umbrella project that provides tools and libraries to aid the development of software using Python.

Most of the components of BeeWare are in an early stage of development. However, they are all sufficiently advanced to demonstrate the technical feasability of the approach being employed.

The five subprojects that are a particular focus at present are:

  • Toga, a cross platform widget native toolkit with support for desktop platforms, iOS, Android, and native web
  • VOC, a transpiler enabling the use of Python on Android devices and on the JVM
  • Batavia, enabling the use of Python in the browser
  • Colosseum, an implementation of the CSS Box model and rules engine that can be used for layout tasks other than HTML.
  • Briefcase, a tool to package Python code so it can be easily deployed as a native application.

With these tools, it is possible to use Python to develop 100% native desktop, iOS and Android applications, often from a single codebase.

BeeWare has also demonstrated an experimental capability to target the native web as a deployment platform [1]. With this tooling, you could use the same codebase as you would use for a native mobile application to generate a website that presents a comparable user experience.

In the longer term, BeeWare hopes to use these libraries to expand into the development of open source tools that support the development of software - debuggers, test runners, coverage tools, and editors - that adhere to the UNIX philosophy of doing one thing well. Prototypes of some of these tools have already been developed, and were introduced at PyCon AU 2013 [2], but need to be ported to Toga.

Python has been chosen as the focus of this project because it has been repeatedly proven to be a language that is sufficiently simple for beginners to comprehend, but provides sufficient power for experts to express complex ideas. It has a successful record of being used in university-level courses on Computer Science, as well as being used extensively in the scientific community as a data analysis, image and pattern recognition, and machine learning tool. It is well established as a language for development of web technologies. Python is also an Open Source programming language, with a community driven development process.

[1] https://opbeat.com/events/djangocon-eu-2016/#beyond-web-2-0-django-and-python-in-the-modern-web-ecosystem

[2] https://www.youtube.com/watch?v=yI7NYgP54sw

Project legal status

OTHER: Currently an individual person; would seek coverage under umbrella organization (likely Python Software Foundation or Linux.org.au) in event of a grant award.

Project jurisdiction

What country would we need to send money to, and in what currency?

Australia; payment in AUD or USD

Requested Amount

USD$120k

What are the concrete, specific outputs and outcomes this grant would produce, and how do those activities further the Mozilla Mission?

Please describe what you would use the funds for - what you are going to build, hack or fix. Also, explains how it furthers our mission, perhaps tying your activities to items in the Manifesto - https://www.mozilla.org/about/manifesto/. (Max 8k chars)

To date, work on BeeWare projects has been entirely a "spare-time" activity for all participants. A MOSS grant would allow me to focus full time on BeeWare development activities for a period of 12 months, as well as funding travel costs to attend conferences and other events, allowing me to spread the word about BeeWare and engage contributors in the project. The grant would also cover incidental costs like project hosting and promotional materials.

From a technical perspective, the aim of the project would be to focus on the three specific tasks:

  • Develop Colosseum to the point where it is ACID2 compliant, preferably with support for CSS3 FlexBox as well; and
  • Develop Toga APIs to cover the range of widgets needed for common purposes; and
  • Develop VOC to the point where it provides enough coverage of the Python 3.4 language specification to be used for non-trivial apps.

This work would also include tutorials and documentation that will allow end users to develop applications and deploy them to their phones, or publish them to an app store.

At the completion of this work, the aim would be to host a tutorial event at a major conference (e.g., PyCon US), and introduce a large group of Python users to the BeeWare toolchain as a platform for developing native mobile applications. If the project is successful, this tutorial would enable people to leave and develop their own mobile applications on top of the BeeWare toolchain.

However, the aim of BeeWare is not just to provide mobile development tools for experienced programmers. The Mozilla Manifesto extols the virtue of the Internet as a free an open platform. The BeeWare project believes that this is not just limited to the Internet as a "cloud" of technologies accessed through a browser - it extends to the devices and tools that we use to access that "cloud". A key principle of BeeWare is that it should enable people from non-technical backgrounds to exploit the power of the mobile devices that have become ubiquitous in our lives; that they should be able to do this with simple, powerful tools, provided freely and openly; and that they must be given the power to contribute back to the development of those tools - including the knowledge that such contribution is both possible and desirable.

Once the initial technical tutorial has proven successful, the aim would be to extend or modify the tutorial for use with non-technical audiences. DjangoGirls is an ideal model of what can be acheived in this area. DjangoGirls [1] is an initiative where women with no technical background spend a day with mentors working through a tutorial that introduces them to programming, and Django in particular. At the conclusion of a day, most attendees have deployed their own database-backed blog to a public web host where it can be viewed by others. The aim for an analogous BeeWare event would be for attendees to leave the tutorial with an app on their phones that they themselves have written.

In addition to providing a women-focused event, I would also like to provide focused classes for other demographics - for example, to engage youth in technology, or for the scientific community, to show them how they can use mobile technology to support citizen science and mobile data gathering.

The aim of the MOSS grant would not just be to fund the technical development of BeeWare toolchain. The grant would also enable me to continue and expand the program of outreach for first-time open source contributors. I believe that it is essential that even non-technical users have a tangible experience that they can contribute back to a larger software community, and BeeWare aims to be a model of that sort of participation.

I would also like to be able to expand into paid internships and other mechanisms that enable those without financial means to focus on FOSS development. While this is not a specific target for the MOSS grant funds, I would hope that the MOSS funds would provide the time and resources necessary to develop funding sources that could be used to fund internships.

Lastly, a MOSS grant would also provide a runway to explore and develop alternative, ongoing funding sources. Funding the open source infrastructure that is becoming the foundation of modern technological development is a problem that has received a lot of attention recently [2], and it's a topic that I have spoken about publicly [3]. I would hope that at the conclusion of the grant period, a repeat grant would not be necessary; the BeeWare project would be self sustaining, without compromising the Open Source principles of the project.

[1] https://djangogirls.org

[2] https://medium.com/@nayafia/how-i-stumbled-upon-the-internet-s-biggest-blind-spot-b9aa23618c58#.dmi5hpxwa

[3] https://www.youtube.com/watch?v=mY8B2lXIu6g

Please share an endorsement from your endorser

Ask your endorser to write a paragraph or two on why supporting your work via this grant is a great idea. (Max 4k chars)

BeeWare's Russell Keith-Magee is one of the key driving forces behind efforts to improve the Python ecosystem's support for mobile devices, presenting remotely on the topic at the 2015 Python Language Summit (as reported in LWN [1]). In addition to Russell's work on getting CPython itself running on mobile devices, I consider Beeware's cross-platform native widget GUI toolkit, Toga, and the bytecode transpiler, VOC, to be significant projects in ensuring developers targeting the mobile Android and iOS platforms are as well served by the Python community as those targeting Linux, Windows, and Mac OS X are in traditional desktop and server environments.

However, Russell's skills and expertise aren't limited to technical areas. Russell is keenly aware of the prevalence of burnout and other mental health issues in open source volunteer communities, and is working not only to ensure that the BeeWare umbrella project provides a welcoming environment for new open source contributors, but is also sustainable for the long term in its own right [2]. I think that's an incredibly important mindset to be encouraging in new open source contributors - that the opportunities created through open online collaboration are amazing, but that we still need to care for our health and well-being, both individually and collectively.

[1] https://lwn.net/Articles/640625/

[2] https://www.maxcdn.com/blog/beeware-be-sticky/

Have you ever applied for a grant from Mozilla before?

No

Please tell us more about how your project is managed. Please describe your core team

The BeeWare core team consists of two people; Russell Keith-Magee and Katie McLaughlin.

Russell has a 10 year history as a member of the Django core team and President of the Django Software Foundation. Since leaving academia 15 years ago (where he received a PhD), he has been involved in a number of startups, making extensive use of (and contributing to) open source tools.

Katie is best known for her work on the octohatrack project [1], highlighting the importance of all contributions to a project, not just the commits that make it to master (e.g., [2], [3]). She has been employed as a polyglot software and devops engineer for 10 years.

Project management currently follows the "Benevolent Dictator" model - one deeply engaged contributor who sets a broad course, and consults with community before setting direction. As the contributor community grows, the intention is to move away from the Benevelent Dictator model and towards community-driven processes.

[1] https://github.com/LABHR/octohatrack

[2] https://labhr.github.io/hatrack/#repo=pybee/batavia

[3] https://labhr.github.io/hatrack/#repo=pybee/voc

Please tell us more about your community

The BeeWare community is small - as would be expected from a young project.

However, the core team actively engages new contributors, providing [1] (and regularly renewing [2][3][4]) an open offer of mentoring for anyone who wants to become a contributor to an open source project. As a result of this policy, several dozen people have made their first contribution to an open source project.

As added encouragement, BeeWare has had Challenge Coins pressed; any contributor, however big or small, is entitled to receive a challenge coin. The idea behind the Challenge Coins is described in detail in a blog post written by MaxCDN [5], who provided funding for the coins.

[1] https://twitter.com/PyBeeWare/status/672921178907017216

[2] https://twitter.com/PyBeeWare/status/695406750279684101

[3] https://twitter.com/PyBeeWare/status/707792342238023680

[4] https://twitter.com/PyBeeWare/status/720173091565867009

[5] https://www.maxcdn.com/blog/beeware-be-sticky/

If you have participation guidelines / code of conduct please include pointers to them

BeeWare operates under a Code of Conduct, adapted from v1.3.0 of the Contributor Covenant [1]. We also have a general guide to contribution [2], as well as specific suggested paths for first time contributors to VOC and Batavia [3][4]

[1] http://contributor-covenant.org/version/1/3/0/

[2] http://pybee.org/contributing/

[3] https://github.com/pybee/batavia/wiki/Your-first-Batavia-contribution

[4] https://github.com/pybee/voc/wiki/Your-first-VOC-contribution

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment