Just recently, four talented individuals finished summer internships with Hyperledger. We’re proud to congratulate them on a job well done!
Here, they share details about their projects and advice for students considering an internship in open source software.
About the Projects
Nikhil Chawla from India, mentored by Jiang Feihu from Huawei Technologies, worked on deploying Hyperledger Fabric on Kubernetes using Hyperledger Cello. Nikhil’s approach was twofold. First, it involved manually running Hyperledger Fabric on Kubernetes. Second, it involved automating the deployment using Hyperledger Cello. Nikhil says, “There were a long trail of issues I got to address via this internship. But identifying the levels was a good idea and subdividing the tasks helped me a lot. Moreover, the community channels like Slack and Rocket.Chat were a huge help. I used a variety of measures that can be adapted to reach each sub-task and eventually, solving them optimally.”
Indirajith Vijai Ananth from Italy, mentored by Baohua Yang from IBM, worked on improving and implementing features in Hyperledger Cello. Indirajith says, “The approach can be categorised into three major steps. First, to learn basics and get acquainted to the technology and the domain. Then, to learn deeper by going through the code to understand where and what to work on. The last step was to get involved from writing code and reporting bugs. The outcome of my project was the implementation of a health check feature in Hyperledger Cello for Hyperledger Fabric v1.0 network. This involved restructuring and updating image downloading scripts for Hyperledger Fabric and the respective documentation.”
Ezequiel Gomez from Mexico, mentored by Makoto Takemiya from Soramitsu, worked on anonymous transactions in Hyperledger Iroha. Ezequiel says, “The approach was to first look at how projects that currently have the ability to issue anonymous transactions work. Given that there is a small number of projects that achieve this efficiently, we based our work on Zcash and their usage of zk-SNARKs. The next step was to fully understand the different parts in the Zcash protocol and how this could be implemented on top of the Hyperledger Iroha ledger. I became acquainted with the development community of Zcash Company which helped me understand the academic papers that motivated the project. Given that the core of the project was usage of different cryptographic protocols, most of my research was focused on things such as key establishment, digital signatures and zero knowledge proofs. Since one has to be very careful when working with cryptographic protocols, researching the specifics on each part of the protocol was necessary to avoid mistakes when implementing cryptographic primitives.”
The project depended on staying in sync with the team of developers working on Hyperledger Iroha. Ezequiel says, “The outcome of the project was a standalone service with the functionality needed to implement anonymous transactions into the Hyperledger Iroha distributed ledger. Given that v1.0 of Hyperledger Iroha is still under development, the team decided to have me work on the anonymous transaction part as a standalone service while the team implements an unspent transaction output (UTXO) transaction model into Hyperledger Iroha after v1.0 is released. Without a UTXO model anonymous transactions would not be possible, since the current account model has no way of hiding who the owner of the assets is. The standalone service is not yet finished, and some parts of this service will be developed depending on how the UTXO model gets implemented into Hyperledger Iroha but it currently has two contributors on GitHub working on finishing its components.”
Attila Klenik from Hungary, mentored by László Gönczy from Quanopt and Budapest University of Technology and Economics (BUTE), worked on contract-based business process execution. Attila says, “The goals of the project were 1) to evaluate whether Hyperledger Fabric smart contracts (chaincodes) can fulfill the roles of a business process execution engine, and 2) to develop a methodology for the (almost) automatic migration of business process models (BPM) to the Hyperledger Fabric framework. This approach will enable the merge of existing sophisticated methods in business process modeling with the sound basis of blockchain frameworks.”
The complete coverage of Business Model Process and Notation (BPMN) is still a future work but according to Attila’s expectations, it can follow the approach and technology developed. Attila says, “The core result of the project is a conceptual proof of concept of using BPMN for designing smart contracts. This complements evolving technologies like incorporating business rule systems into blockchain applications by using the Hyperledger Fabric for communication and synchronization purposes. The feasibility of the general approach is proven by a pilot transformation of core BPMN elements to chaincode frames and an ongoing activity targets the re-use of the code developed in traditional BPMN frameworks. The subset implemented is sufficiently rich to support the most common applications.”
Advice to Students Considering an Internship in Open Source Software
As you can see from the experiences above, summer internships in open source software are serious internships that come with the prize of greater knowledge, skills, and connections to the technical community.
If you, or someone you know, is planning to pursue an internship in open source software, here’s a collection of tips they can use from Hyperledger’s 2017 summer interns: Nikhil, Indirajith, Ezequiel, and Attila.
- Starting work on an open source project can be a little overwhelming. It’s easy to lose yourself in the details due to a desire to know everything. This is a good thing of course, but not right at the start. To get around this, use a top-down approach when exploring such a project. Focus on the parts you need to work on (or use), and treat everything else like a black box. Once you get familiar with the top, you may take a step toward the bottom.
- Don’t be afraid to jump into chat rooms with the project community and ask away! Open source project communities are eager to help new developers and work very hard to make sure future contributors have the resources necessary to understand the codebase. Reading white papers is a good first step before diving into the code. Large open source projects may seem intimidating at first because of their size, but after a higher-level understanding on how the project works, looking at its individual parts will become much easier!
- Another way to get started is by cloning the repository of the particular project of interest and start fixing the basic bugs. Slowly, progress can be made by submitting patches and test codes. Eventually, this leads to contributing to an open source project that is going to leave a mark of its own in this technology-driven world.
- Before contributing to open source, look at the guidelines for contributing. Going through each and every document is a must, without it you’ll definitely fall into trouble.
- There’s a huge variety of projects for all different genres in open source, so choosing the right project is must. Never follow the crowd.
- Don’t lose hope if you struggle at first. Soon, you can master open source!
There is plenty of work to be done in open source. Be sure to let the talented students in your life know about this exciting career path.