Kushal Das

FOSS and life. Kushal Das talks here.

kushal76uaid62oup5774umh654scnu5dwzh4u2534qxhcbi4wbab3ad.onion

IRC and me

During college days when I started using Linux for the time, one of my favorite past time was to click on every application icon on my computer. By random clicking, I tried to learn the usage of the applications. Once I managed to open a tool called xchat in the similar fashion, but after seeing the big list of servers I was lost. Never managed to find any guide which I could follow. I learned it is for IRC, but nothing more.

Using the first time

I learned a lot of things at foss.in. The 2005 edition was the first conference I ever attended. A fresh graduate from college awes struck by meeting so many people whose names I read on the Internet. It was a super big thing. During the conference, I met Till Adam, a KDE developer who taught me various important things throughout the conference. Things we count as first steps these days, like how to create a patch, how to apply a patch, and how to compile a big application (KDE in this case), etc. After the conference is over, he invited me to have dinner with him, and some friends. When I reached his hotel room he told me to wait while he checked if there was any message for him, and also who else were coming down. I don’t remember which application he was using. While I was waiting, Till asked me if I stay in the same IRC channel. “I don’t know what is IRC” was my reply. Till took his time to explain the basic usage of IRC to me in the hotel room. Before we came down for dinner, I already got a full overview and was eagerly waiting to start using it. There are many funny stories, and great memories from the dinner, but maybe in a later post.

Initial days

Pradeepto founded KDE India during foss.in, and we got an IRC channel to stay and talk to all the new friends we made during the conference. I also found ##linux-india where I managed to meet many other ilug guys whom I talked before only on a mailing list. It was a fun time. After coming back from office, joining IRC was the first thing to do every day. Stay up very late, talk to people, make new friends was part of it. Meanwhile, I also started contributing to Fedora and started staying in all the Fedora channels too. First time saw how meetings can be arranged on IRC. There were too many new things to learn from so many people. I got hooked into Freenode server.

Effects in my life

IRC became an integral part of my life. I stay in touch with most of my friends over IRC, even with many friends who lives nearby :) The Durgapur Linux Users Group became synonyms to #dgplug channel over Freenode server. I landed in few of my previous jobs because of IRC. If I have any question about any new technology, or about a new place I am going to visit, I know I can go to IRC, and ask my friends. I still have many friends whom I never met in real life. I managed to meet more people after I started going out to more conferences. Like I met tatica only after 8 years of IRC chat during Flock 2013, there were too many other Fedora developers whom I met for the first time in a single conference. Same thing happened in PyCon 2013 where I suddenly found Yhg1s aka Thomas Wouters. I don’t know how many times he helped me over IRC before, and there suddenly I met him in the conference. In my current job, most of the meetings happen over IRC only. PSF board meetings also use IRC as a recording medium, and we vote on the agendas in IRC. Sometimes Anwesha complains that I can stay happy in a big city or in a remote village as I only need my IRC connection to work :)

How to get funding for your new users group?

Over the years I met many students who want to start a new Users Group in their college, sometimes it is a Linux Users’ Group, sometimes it is related to any other particular technology. They all have one common question: how to find funding for the group? In this post I am going to talk about what did we do for Durgapur Linux Users Group, and how are we managing currently.

The domain name and the whole back story

Back in 2004 when I started the group, I started a page in Geocities. For the young kids, Geocities was a service from Yahoo! where you can create static HTML pages and was one of the easiest ways to have a website. After a few weeks, I found another service which was providing .cc domains for free. So, we moved to dgplug.cc for few months. Meanwhile, we kept searching for a way to get our own domain name. We found one Indian provider where we could get a domain and some space for around Rs.750 annually. That was the cheapest we managed to find. It may not sound too much money for a year, but in 2004 none of us had that much money. We could not even raise that much money among all the regular participants.

I called my uncle Dr. Abhijit Majumder (Assistant Professor, IIT Bombay), then a Ph.D. student in IIT Kanpur, if he could help me with Rs.1500 (for the first 2 years funding). He generally supported all my crazy ideas before, and he also agreed to help this time. But then the question came how to get the money. Online money transfer was not an option for us. Luckily during the same week, my college senior Dr. Maunendra Sankar De Sarkar (he was an M.Tech student in the same institute as Abhijit) was coming down to Durgapur. He agreed to pass me the money in cash and later collect it from Abhijit after he goes back to Kanpur.

Even after we found the way to fund us for the first time, we got a new problem. To pay the domain register we have to use a credit card or use HDFC’s cheque. I started asking around all of my Computer Science department professors if anyone can help. Finally, with the help of Prof. Baijant we managed to deposit the cheque to the bank.

For the first two years, that was the only point for which we required money. For the meetings, there was no other expenditure. We never provided any food or drinks in the meetings. If anyone wanted to eat anything, they did that after the meetings by paying for themselves. Not having any recurring costs was a huge benefit. I would suggest the same to everyone, try to minimize the costs as much as possible. Though in a big city it is much easier to get sponsorship from different companies or organization for the meetups, remember it is someone’s money. Spend it like it is your own money. Find out what the bare minimum requirements are, and only spend money on those.

How do we currently fund dgplug?

Before we answer this question, we should identify the expenses. Because all of our meetings happen over IRC we don’t have any recurring costs for meetings. The only things we are spending money for are:

  • The domain name
  • The web hosting (we use Dreamhost for static hosting)
  • Various bots (running in containers)

After I started working, I started paying for the first two expenses. The containers run beside my other containers in my personal servers, so no extra cost there. Among dgplug and friends now we have many volunteers who are working professionals. We know that we can manage any extra cost that comes up among ourselves. For example, this year, during PyCon India we gave a scholarship to Trishna so that she can attend the conference. We had a quick call, and the funding was arranged in a few minutes. We also had group dinners at a few previous PyCon(s), and provided lodging for women student participants, that was also handled among the group members.

But all of this never came from the start. It took time to grow the community, to have friends who take dgplug as important as I do. We still try to cut costs wherever possible. If you are starting a new group, and try to spend as little as possible, many members from the existing communities will notice that. The group will be in a much better shape to ask for any required funding when it is really necessary. People will help you out, but first, the volunteers have to earn the trust from the community. That comes from work done at the ground level. Be true to yourselves, and keep doing the good work. Good things will happen.

10 years of dgplug summer training

In 2017 dgplug summer training will be happening for the 10th time. Let me tell you honestly, I had no clue that we will reach here when I started this back in 2008. The community gathered together, and we somehow managed to continue. In case, you do not know about this training, dgplug summer training is a 3 months long online IRC based course where we help people to become contributors to upstream projects. The sessions start around 6:30PM IST, and continues till 9PM (or sometimes till very late at night) for 3 months. You can read the logs of the sessions here.

The beginning

I remember looking at how people were trying to apply for Google Summer Code back in 2008, but many of them never had minimum experience with software development in Open Source world. dgplug started in 2004, and I think our motto “Learn yourself, teach others” is still as relevant now, as it was back in 2004. I was thinking about one online training where we can teach the basics of using Linux, and also basics of programming in Linux. How to create, and submit patches etc. I chose to use IRC as the place of the training because of bandwidth issue. Looking at how we conducted regular Fedora meetings on IRC, I was sure it would be doable. Of course there were many self doubts, too many open questions for which I never had any answer. When I shared this idea in different mailing lists, and asked for volunteers, Shakthi Kannan (irc: mbuf) also jumped in to mentor in the training. This gave me some hope. We had around 10+ participants in the first year of this training. Mailing lists guidelines, and how to communicate online were important from the beginning. Python was my primary language back then, and we choose to use that in the training too. With help from Prasad J. Pandit (irc: pjp) we had sessions on programming using C. But we found out that debugging segfaults over IRC was just not possible. We can try to do that if there were 2 or 3 people, but for a large group it was just not possible. As I mentioned earlier, contribution is the keyword for this training, we had other sessions than programming from the very first year. Máirín Duffy took a session on Fedora Arts, Paul Frields (then Fedora Project leader) took a session on Documentation. Debarshi took the sessions on shell scripting, and few of our sessions went up to 2AM (starting at 6pm).

Continuing & experimenting

Many participants from the 2008 session were regulars in the IRC channel. A few of them were already contributing in upstream projects. We decided to continue with the training. The number of participants grew from 10 to 170+ (in 2016). We did various kinds of experiments in between these years. Many of our ideas failed. Many ideas have gone through iterations until we found what works better. Below are few ideas we found difficult to implement in a training like this:

  • Teaching C programming over IRC is not an easy task.
  • We have to be regular in the sessions, start at the right hours every day. Changing session timings are bad.
  • Do not give any longer break than 5 days. Participant rate will drop if there are no sessions for more than 5 days.
  • Doing video session is difficult (even in 2016).

Lessons learned (the good points)

Start from scratch

Every year we start from scratch. There are always many participants who does not know much of command line tools, or how to reply inline to a mail in the mailing list. This is why we start from communication tools, basic shell commands, and using editors (we teach Vim). From there the sessions slowly start becoming more intense.

IRC works well on low bandwidth

IRC is still the best medium for a training where people are joining in from all over the world. It works in 2G connection too. Breaking the first entry barrier is difficult, but once we breach that, people generally stays back on the channels.

Stay in touch

Stay in touch with the participants even after the course is finished. Most of the regular participants in the #dgplug channel are actual ex-participants of the summer training. Some were trainees, some were trainers. Talking about other things in life is important to increase the participation in IRC.

Have documentation

We were slow in this point. Even though from the first year we had logs of each session, we never had one single place for the participants to learn from. Now we maintain a Sphinx docs. It is always nice to be able to point people to one link from where they can start.

Meet in real world

Every year we meet during PyCon India. This meeting is known as staircase meeting as we used to block most of the staircase at the venue in Bangalore. Meeting people face to face, talking to them in real life, sharing food & thoughts help to break many hidden barriers. It is true that not all of us can meet in one place, but we try to meet at least once every year. In 2017 we will be meeting during PyCon Pune in February in Pune, then once again in PyCon India in Delhi.

Give them hope, give them examples

Other than our regular sessions, we also get sessions from other known upstream contributors in various projects. They talk about how they have started their journey in Open Source world. Sometimes they sessions on their field. We had sessions from documentation, art work, experiences of past participants, Creative Commons licenses, leaders from various communities. This year Python creator Guido Van Rossum also joined in, and took a very interactive session.

Automate as much as possible

We now have a bot which helps the trainer during the sessions. This helps to reduce chaos during the sessions. As we all know the nature of IRC, it is very common that 10 people can try to talk at the same time. Stopping that was a big win for us. We still do not upload the logs automatically, as we go through the logs once manually before uploading.

Have a group of volunteers whom the community can trust

Most of the volunteers of dgplug are ex-participants of this summer training. They stayed back in the channel after their training is over. They help people almost 24/7 (depending their availability). There are the people whom we all trust. They become leaders by their own effort, no one comes and announces new leaders. Delegation of various work is important, getting fresh blood in the volunteer pool is very important. We constantly look for new volunteers. But at the same time you will need some people who can come in at the time of any emergency (with authority).

Enforce some rules

Rules are important for any community, call it Code of Conduct, or something else. But without these maintained rules, any community can get into chaos. Enforce these rules. We generally force people to write in full English words all the time (instead of sms language). The participants do pull legs of anyone who types u or r in the IRC channel. We also try to push people for inline reply than top posting in the mailing list.

Solve real life problem

Do not try to stay in only examples from books while teaching something. Always try to solve problems which are closer to the hearts of the participants. These solutions will give them much more encouragement than anything else. It can as small as finding photos in their computer, or building a full scale application to manage one’s video pool. We try to use Python to solve many of these issues, as we have experienced Python programmers in the channel . Python3 is our default language to do anything on the sessions.

Outcome of the training

I think we are the highest concentration of upstream contributors in one community in India. We had participants from Singapore, South Korea, to Afghanistan, Pakistan, to Nigeria (a big shoutout to Tosin), to many parts in US and Canada. We had school teachers, college students, lawyers, sys-admins, housewives, school students, music students, participants from various backgrounds in the last 10 years. We have companies personally inquiring about ex-participants before hiring them. Many of the participants are now my colleague in Red Hat. We have people in the channel who are willing to help anyone, everyone learns from everyone else. People are part many other communities, but #dgplug binds us all.

Communication tools and submitting weekly reports

I work for Fedora Engineering team. There are around 17 people in my team, and we cover Australia to USA geographically. Most of us are remote, only a hand few members go to the local offices. I did a blog post around 3 years back just after I started working remotely. In this post, I am trying to write down my thoughts about our communication styles.

Communication Tools

IRC is our primary communication medium. I am in around 42 channels dedicated to various sub-projects inside Fedora. We have a few dedicated meeting channels. As all meetings involve community members, the meeting timings are based on the availability of many other people. This is the only thing which is difficult as I have many meetings which go after midnight. Any other discussion where we need more participation and also to keep a record, we use our mailing lists.

A few of us also use various video chat systems regularly. It is always nice to see the faces. As a team, we mostly meet once during Flock, and some get a chance to meet each other during devconf.

Weekly reports

All of our team members send weekly work status updates to the internal mailing list. Sometimes I lag behind in this particular task. I tried various different approaches. I do maintain a text file on my laptop where I write down all the tasks I do. A Python script converts it into a proper email (with dates etc.) and sends it to the mailing list. The problem of using just a plain text file is that if I miss one day, I generally miss the next day too. The saga continues in the same way. Many of my teammates use taskwarrior as TODO application. I used it for around 6 months. As a TODO tool it is amazing, I have a script written by Ralph, which creates a very detailed weekly report. I was filling in my text file by copy/pasting from the taskwarrior report. Annotations were my main problem with taskwarrior. I like updating any TODO note on a GUI (web/desktop) much more, than any command line tool. In taskwarrior, I was adding, and ending tasks nicely, but was not doing any updates to the tasks.

I used Wunderlist few years back. It has very a nice WEB UI, and also a handy mobile application. The missing part is the power of creating reports. I found they have nice open source libraries to interact with the API services, both in Python and also in golang. I have forked wunderpy2, which has a patch for getting comments for any given task (I will submit a PR later). Yesterday I started writing a small tool using this library. It prints the report on STDOUT in Markdown format. There is no code for customization of the report yet, I will be adding them slowly. My idea is to run this tool, pipe the output to my report text file. Edit manually if I want to. Finally, I execute my Python script to send out the report. In the coming weeks I will be able to say how good is this method.

Atomic Working Group update from this week's meeting

Two days back we had a very productive meeting in the Fedora Atomic Working Group. This post is a summary of the meeting. You can find all the open issues of the working group in this Pagure repo. There were 14 people present at the meeting, which happens on every Wednesday 5PM UTC at the #fedora-meeting-1 channel on Freenode IRC server.

Fedora 26 change proposal ideas discussion

This topic was the first point of discussion in the meeting. Walters informed that he will continue working on the Openshift related items, mostly the installer, system containers etc, and also the rpm-ostree. I have started a thread on the mailing list about the change idea, we also decided to create a wiki page to capture all the ideas.

During the Fedora 25 release cycle, we marked couple of Autocloud tests as non-gating as they were present in the system for some time (we added the actual tests after we found the real issue). Now with Fedora 25 out, we decided to reopen the ticket and mark those tests back as gating tests. Means in future if they fail, Fedora 25 Atomic release will be blocked.

The suggestion of creating the rkt base image as release artifact in Fedora 26 cycle, brought out some interesting discussion about the working group. Dusty Mabe mentioned to fix the current issues first, and then only jump into the new world. If this means we will support rkt in the Atomic Host or not, was the other concern. My reaction was maybe not, as to decide that we need to first coordinate between many other teams. rkt is packaged in Fedora, you can just install it in a normal system by the following command.

$ sudo dnf install rkt -y

But this does not mean we will be able to add support for rkt building into OSBS, and Adam Miller reminded us that will take a major development effort. It is also not in the road map of the release-infrastructure team. My proposal is to have only the base image build officially for rkt, and then let our users consume that image. I will be digging more on this as suggested by Dusty, and report back to the working group.

Next, the discussion moved towards a number of technical debts the working group is carrying. One of the major issue (just before F25 release) was about missing Atomic builds, but we managed to fix the issue on time. Jason Brooks commented that this release went much more promptly, and we are making a progress in that :) Few other points from the discussion were

  • Whether the Server working group agreed to maintain the Cloud Base image?
  • Having ancient k8s is a problem.
  • We will start having official Fedora containers very soon.

Documentation

Then the discussion moved to documentation, the biggest pain point of the working group in my mind. For any project, documentation can define if it will become a success or not. Users will move on unless we can provide clearly written instructions (which actually works). For the Atomic Working Group, the major problem is not enough writers. After the discussion in the last Cloud FAD in June, we managed to dig through old wiki pages. Trishna Guha is helping us to move them under this repo. The docs are staying live on https://fedoracloud.rtfd.io. I have sent out another reminder about this effort to the mailing list. If you think of any example which can help others, please write it down, and send in a pull request. It is perfectly okay if you publish it in any other document format. We will help you out to convert it into the correct format.

You can read the full meeting log here.

Looking back at Fedora 25 Atomic release

We have Fedora 25 released a few days back. Along with various editions, we also have the Atomic edition out. This release is special for few points, one of them is being the first release from the Atomic Working Group. The another major point is a release where Cloud Base image, and the Atomic image + Vagrant boxes were fully tested by Autocloud project in the whole release cycle.

Sayan did a tremendous work in redoing the Autocloud front-end, which many of us use to keep an eye on the builds. Yes, we do test our nightly builds on Autocloud. You can also keep an eye on this by using Fedora Notifications system. This automated testing was the major reason behind finding no surprises during Cloud/Atomic test day in the F25 cycle. Through the development cycle of Fedora 25 Autocloud kept finding the network related issues, or whenever the image refused to boot cleanly. Dusty Mabe, and our excellent QA team helped us to mark those issues into right bugs, and then with help from the developers, we managed to get them fixed on time. Adam Williamson also has an OpenQA setup where the ISO image gets automatically tested.

The test cases for the same are written as Python 3 unit tests. You can find them here. Feel free to come to the #fedora-cloud channel, and suggest any changes, or you can directly submit Pull Requests.

Another on-going work is related to documentation. We are trying to get all the docs here for our users. But we need more eyes on this. If you have any use case in mind, feel free to send us a patch/PR. Trishna Guha (IRC: trishnag) is another person whom you may want to talk about any queries you have.

Updates from PyCon Pune

PyCon Pune

This will be the first year for PyCon Pune. This will give us a chance to meet our friends, discuss, and work on the language we all love :)

Event date: 16-19th February, 2017.

Location: Pune, India

Format: 2 days of main conference, 2 days of devsprints.

All Keynote speakers have been announced

We finally managed to announce all of our keynote speakers. I am putting up the names below. But you can learn more about them from the speakers page.

CFP is still open for two more days

We have our CFP still open for 2 more days, till 30th November, 2016. Feel free to submit any talk you think you want to present. The event is a single track event, means everyone will get a chance to see all the talks. This also means we have a tougher job in selecting talks :)

Registration is also open

The registration for the conference is also now open. As expected, the 4 days tickets (including devsprints) were sold out super fast. We still have main conference tickets left. Currently the only way to register for devsprints is through supporter ticket, which is also very limited in number. So remember to register fast :)

Upgraded to Fedora 25

Generally I used to upgrade after the Alpha releases, but this time I decided to wait till the final release. Reason: just being lazy. The other point is of course the nightly cloud images, which I am using for a long time.

Before I upgraded my laptop, the first step was to sync the gold release of Everything repo, and then the updates repo for x86_84. The Everything repo is around 55GB, and the updates was 14GB+ when I synced. After I managed to get the local mirror at home fully synced, I upgraded using dnf system-upgrade.

There were a few small hickups due to random rpms I had on my F24 box. After removing those packages, the upgrade followed the standard path. Everything looks normal with the reboot. As I use i3wm, there is not much change for me visually other than the nice new wallpaper.

Science Hack Day India 2016

Few months back Praveen called to tell me about the new event he is organizing along with FOSSASIA, Science Hack Day, India. I never even registered for the event as Praveen told me that he just added mine + Anwesha's name there. Sadly as Py was sick for the last few weeks, Anwesha could not join us in the event. On 20th Hong Phuc came down to Pune, in the evening we had the PyLadies meetup in the Red Hat office.

On 21st early morning we started our journey. Sayan, Praveen Kumar, and Pooja joined us in my car. This was my longest driving till date (bought the car around a year back). As everyone suggested, the road in Karnataka was smooth. I am now waiting for my next chance to drive on that road. After reaching Belgaum we decided to follow Google maps, which turned out to be a very bad decision. As the maps took us to a dead end with a blue gate. Later we found many localities also followed Google maps, and reached the same dead end.

The location of the event was Sankalp Bhumi, a very well maintained resort, full with greenery, and nature. We stayed in the room just beside the lake. Later at night Saptak joined us. Siddesh, Nisha + Ira also reached later in the evening.

Day 1

We had a quick inauguration event, all mentors talked about the project they will be working on, and then we moved towards the area for us. The main hall was slowly filled with school kids who had a build your own solar light workshop (lead by Jithin). Pooja also joined the workshop to help the kids with soldering.

I managed to grab the largest table in the hack area. Around 9 people joined me, among them we had college students, college professors, and someone came in saying she is from different background than computers. I asked her to try this Python thing, and by the end of the day she was also totally hooked into learning. I later found her daughter was also participating in the kids section. Before lunch we went through the basics of Python as a programming language. All of the participants had Windows laptops, so it was fun to learn various small things about Windows. But we managed to get going well.

Later we started working on MicroPython. We went ahead step by step, first turn on LED, later to DHT11 sensors for temperature+humidity measurements. By late afternoon all of us managed to write code to read the measurements from the sensors. I had some trouble with the old firmware I was using, but using the latest nightly firmware helped to fix the issue related to MQTT. I kept one of the board running for the whole night, Sayan wrote the client to gather the information from the Mosquitto server.

In the evening we also had lighting talks, I gave a talk there about dgplug summer training. The last talk in the evening was from Prof. Pravu, and during that talk I saw someone started a powerful gas stove outside the hut. I was then totally surprised to learn that the fire was not from gas, but using water and some innovative design his team managed to make a small stove which is having 35% efficiency of any biomass, the fire was blue, and no smoke. This was super cool.

After dinner, there was a special live show of laser lights+sound work done by Praveen. Teachers are important part of our lives. When we see someone like Praveen, who is taking the learning experience to another level while being in one of the small town in India, that gives a lot of pride to us. Btw, if you are wondering, he uses Python for most of his experiments :)

Day 2

I managed to move to the hack area early morning, and kept the setup ready. My team joined me after breakfast. They decided to keep one of the boards under the Sun beside the lake, and see the difference of temperature between two devices. I also met two high school teachers from a village near Maharashtra/Karnataka border. They invited us for more workshops in their school. They also brought a few rockets, which we launched from the venue :)

During afternoon Sayan, and Saptak worked on the web-frontend for our application, the following image shows the temperature, and humidity values from last night. The humidity during night was 70%, but during day it was around 30%. Temperature stayed between 20-30C.

Beside our table Nisha was working on her Cookie project. Near the dinning area, Arun, and his group created an amazing map of the resort in the ground using various organic materials available in the location. That project own the best science hack of the event. You can find more about various other details in the etherpad.

The impact of the event

We saw school kids crying as they don't want to go back from the event. Every participant was full with energy. We had people working with ideas on all kinds things, and they came in from all different background. Siddhesh mentioned this event as the best event in India he has even been to. Begalum as a city joined in to make this event a successful one, we found local businesses supporting by sponsoring, local news papers covered the event. The owner of the venue also helped in various ways. By the end of the day 2, everyone of us were asking about when can we get back for next year's event. I should specially thank the organising team (Hitesh, Rahul, and all of the volunteers) to make this event such a success. I also want to thank Hong Phuc Dang and FOSSASIA for all the help.

Dgplug contributor grant recipient Trishna Guha

I am happy to announce that Trishna Guha is the recipient of a dgplug contributor grant for 2016. She is an upstream contributor in Fedora Cloud SIG, and hacks on Bodhi in her free time. Trishna started her open source journey just a year back during the dgplug summer training 2015, you can read more about her work in a previous blog post. She has also become an active member of the local Pune PyLadies chapter.

The active members of dgplug.org every year contribute funding, which we then use to help out community members as required. For example, we previously used this fund to pay accommodation costs for our women contributors during PyCon. This year we are happy to be able to assist Trishna Guha to attend PyCon India 2016. Her presence and expertise with upstream development will help diversity efforts at various levels. As she is still a college student, we found many students are interested to talk to and learn from her. So, if you are coming down to PyCon India this weekend, remember to visit the Red Hat booth, and have a chat with Trishna.