The next important step in my project is creating an upload tool.
This tool will take every single bear one by one and upload it.
How will I do this?
Simple. Say we are in coala-bears/bears/. Now here’s where the script is. I basically want to create an upload/ folder, where I will have all the bears ready to upload. The tool takes every bear, one by one, creates a subdirectory in the upload/ folder, that subdirectory having the bear’s name, where it will place the setup.py file and the requirements for that bear, and then uploads it.
Let’s say we have bear Test. We will create upload/Test/setup.py, upload/Test/Test/Test.py, upload/Test/requirements.txt. This way we will have the bear done and ready to be uploaded on PyPi.
The setup.py and the requirements.txt files will be automatically generated based on each bear’s requirements and name, fitting it perfectly.
By week 1 I finally got a part of the hardest thing regarding this project: a way of maintaining the requirements for the bears easily.
To help myself with that, I created a PackageRequirement class. Now each bear can have a REQUIREMENTS tuple made of instances of the PackageRequirement class.
To automatize working, I worked on two separate things:
- creating a “multiple“ method, which helps you instantiate multiple instances of that class instead of calling out the same class again all over and over again
- creating subclasses, such as PythonRequirement and NPMRequirement, which have the manager already set to “pip“, respectively “npm“.
These classes receive 3 arguments: manager, package name and version.
However, there’s more: you can also avoid specifying the version, and this way, the latest will automatically be specified.
On the other hand, I am working on a bearUploader tool. This will upload a MockBear (which I chose to be cpplintbear for the basic functionality it provides) to provide continuous integration. This is still work in progress, as the tool only creates a setup.py file for the bear right now, but it’s going to be done the next week.
So for the next week: More on the bearUploader tool!
So this weekend has 2 huge things. First of all, as most may know, this weekend announces the end of the Community Bonding period. This means that the coding session begins on Monday. However, this is not the only thing that happens. Two days ago I just found out that I’m going to be sponsored by Europython with a ticket there!
What is Europython?
EuroPython was the first major Python programming language community conference ever organized by volunteers. It started 2002 in Charleroi, Belgium, which attracted over 200 attendees.
It now is the largest European Python conference (1200+ participants in 2014 and in 2015), the second largest Python conference world-wide and a meeting reference for all European programmers, students and companies interested in the Python programming language.
I have already bought tickets and I’m planning to go there this year. It will be held from 17 to 24 July and it’s probably gonna be one of the most amazing experiences in my life. I’m going there with the amazing coalaians that I’ve been working with on the coala project (see https://github.com/coala-analyzer/coala for more information about what coala is) including (hopefully) my mentor. I’m so hyped about the conferences, the talks, the workshops and especially the coding & drinking sessions I will be having alongside my co-stayers.
So for this part of the project, called “Community bonding”, I have to prepare the things for my project. What is a better way of doing this besides talking to my mentor? Probably none. Today I had my first project-only related online conversation on Skype, and it was amazing. I got to talk to this man that is going to help me finish my project throughout this summer.
What do I have to do?
I have to get my stuff done in this pre-coding part. And what does it involve? Well, as written in my proposal, I will have to settle two things:
- how will I make the installation as great as possible, so basically the user experience must be amazing
- decide how to make the package managing as convenient as it can be
How will I do it?
This is where I go into what was being discussed today. The answer for the first one is quite debatable. We both had many ideas, but after brainstorming a little and deciding better, we ended up with an amazing solution. Old installation wizard experience.
The installation script will have at first 3 options:
- Install all the bears
- Install the recommended bears (which will probably include the general ones and a few for, let’s say, Python, C maybe? this is an easy aspect and not so important)
- Custom installation
So basically the custom installation will throw a numbered list with all the bears in the terminal interface, and the user will have to input the numbers of bears that he wants. This will probably be the one that will take the most time, but I still think it’s cool, giving the user the liberty of having anything he wants.
For the second question, there’s no optimal solution reached yet. But we still have a lot of time, right? 13 more days. However, we didn’t want to call it a day without having at least a solution. And there it is:
Package managing will be done by simply updating the requirements for each bear upon the time the requirements are updated. Sure, there may be some bears in worst case scenario that use many. But that is rare. Well, this is a solution after all, and whether it may not be so efficient, there’s still time, and it works, which may be enough for what we need for this project.
The day I have waited for so long has finally come. Yesterday noon the results were shown and my project with PSF (Python Software Foundation) & coala was accepted. This is probably my biggest life achievement so far, and as I am inside so happy, I feel such a huge responsability on my personal progress and work. I have compromised my summer by having to work hard on finishing this project.
The project I got accepted on is called Decentralizing Bears. This implies making bears, which are basically plugins for coala, independent packages. This allows for easier management and improvements upon them.
Right now the period is called Community Bonding, and lasts until 23th of May, when the actual work starts. This is when students and mentors get to know each other and talk about implementing the project.
It is going to be hard.
I am roughly a student in my first year of Computer Science, starting to learn programming @October last year. This project will be a real challenge for myself, one which I am planning to finish, one which I am planning to work hard on.
Over the next month, it will be a challenge to me to be able to manage all the homework from my college and also get prepared for this project. What is worse, the first 3 weeks after the work period on GSoC starts, my exam session starts. Yes, it’s going to be hard. But nothing comes in easy, does it?
This blog post intends to thank everyone from coala who has helped me achieve this. With the help of that amazing community, I was able to achieve something I never thought I would.
What is GSOC? Google Summer of Code is a global program that offers students stipends to write code for open source projects. We have worked with the open source community to identify and fund exciting projects for the upcoming summer. (source: https://www.google-melange.com/gsoc/homepage/google/gsoc2015)
I’ve currently been in touch with coala for a few weeks. It’s been one of my best professional experiences so far. They’re amazing people, helped me a lot during my trial, while trying to get some of my first experiences with the open source world.
Right now i’m trying so hard to get my applications right. It seems that they are counting a lot on GREAT applications. I think this is my most important step in this process right now.
It took me a lot of time to find the right organization for me, been to a lot so far and they were either cold or just unhelping. But here, I received help from the first question until my last. It has been a bit over a week from my first contribution, when i was struggling with typos, until they gave me write rights. A few days later, I started writing Tutorials for them (see http://coala.readthedocs.org/en/latest/Getting_Involved/Newcomers.html and http://coala.readthedocs.org/en/latest/Users/Tutorials/Git_Help.html), just to give back to this organization what it gave me at start: help. Now I am doing it all out of pleasure, the pleasure to develop professionally while loving what you do.