Learning Pains with EthereumJ Open Source Development: Release 0.2

Arsalan Khalid
3 min readApr 22, 2017

--

Hey Open Source World!

With my 0.2 release for my open source course I submitted the following PRs:
https://github.com/ethereum/ethereumj/pull/870
https://github.com/ethereum/ethereumj/pull/872

I’m working with the core dev team on the project to get 870 fixed, but I thought I would explore what I’ve done so far. This was a pretty cool learning experience and taught me a few things about open source development and this project.

First off — Open source development is hard! Especially when the community of that project isn’t very supportive and doesn’t respond right away, which was something I was constantly encountering. Around this time as well, the project managers also closed down the issues module on GitHub, not allowing anyone to view or open issues, and this was entirely because they had an issue spam attack. Which was basically an attack that would open a ton of random spam issues for the project!

So I had to take it upon my self to find the right task and work on it, for both my learning experience and the submission of this assignment. Eventually I found some cool tests to contribute towards, that I felt would be useful in helping me learn a thing or two about this project.

Now, this PR was slightly tough — even though the changes are minimal, because I had recall on some of the things I had learned about memory. Basically, I was finding that the test was failing when it was looking to expect a 32 byte array, but instead got 0 everytime. I did some digging, and then discovered that there was an if statement, in one of the function calls that set kept an initialized byte array at 0 rather than setting it to 32 for the given test case. After removing that line, I thought everything was well and good since the tests passed.

But sadly, I was wrong. When the TravisCI build came through, (since the build takes some time), I found some tests fail. Which I’m investigating with the core dev team to fix.

Some cool things I learned here: How to step through tests within this project (debugging), and most of all I had to remind my self how to read memory assignment operations again.

Probably one of the tougher aspects around this release was not getting much support, if I knew what I knew now (after the countless hours I put in), I would have been able to be a lot more efficient and taken from the time I spent to get more stable and better PRs. Oh well, that’s how you learn right?

Anyways, I think I’ll close out with how cool of a learning experience this was for me. I think it put me in the right direction for my next releases, and definitely help me live through a few growing pains. I was scared out of my mind, when I saw the issues window go down, but I was still devious enough to find my own work, and figure it all out on my own.

Which I’m actually pretty proud of being able to do, that’s a very tough skill to grow as a developer. Basically performing your tasks without any oversight, code reviews, or debugging assistance. I think doing these tasks, has allowed me to appreciate how difficult it is as well as motivated me to do more of them! I think these are the type of tasks that you actually learn a tremendous amount from.

Looking forward to more open source work!
Thanks,
Arsalan

--

--