The Neo blockchain has seen many iterations, but none has been as anticipated beforehand as version 3.0, known as Neo3. Neo’s July 2017 update to Neo 2.X brought full smart contract functionality to the previously limited Antshares 1.0 platform and either caused, or perfectly coincided with, a major breakout of publicity. The net effect of these developments was the onboarding of much of Neo’s Western communities in the Americas and Europe.

Now, more than two years and three million blocks of experience later, the Neo blockchain prepares for another protocol upgrade, planned for launch in the year 2020. Over a year of development has yielded the first “Preview 1” builds and public Neo3 preview net.

Neo News Today’s Colin Closser reached out to Ricardo Prado, Neo3’s product owner and a Neo core developer, from his office in Brasil. The pair discussed putting the customer first, Neo’s user experience, and the challenges of working with a heavily distributed team of individual contributors.

Neo News Today – Colin: I’m told that you’re the product manager of Neo3. What is the product manager? I’ve heard of a project manager before, is that the same?

Ricardo Prado: Product manager and product owner are the same. I do project management too, but software development is different from product manufacturing for example, where you may need people doing different roles. Usually project managers are more worried about resources and deadlines and are less flexible.

NNT – Colin: What was your entry into the universe of Neo, and eventually becoming the product owner?

I’ve started working with Neo, like many people, because of Fabio Canesin. After I sent a pull request to neo-cli he invited me to contribute to a City of Zion project. In this period, my team and I made contributions to many Neo projects and went to some events, introducing Neo to educational institutions and government meetings. One day Grace [Gui] came to me; she was looking for someone with the same capabilities as me to work on the job [as Neo3 product owner]. I was a little worried so I asked her if I could answer later in the week. My partners agreed that I was really suitable for the job and I would be very helpful for Neo and benefit both me and my company with our objective on blockchain development.

NNT – Colin: So, you’re involved with the development of Neo3. I see that you’re a core developer, you’ve opened issues [in GitHub]. But you’re more involved on a management level with Neo3 than writing individual lines of code.

Ricardo: Yes. What I try to bring to Neo is more of a product development mentality. Because today, it’s more like open-source development. We have many people who want to contribute but they don’t know how. There are some issues — we may know the people but don’t know what they specialize in.

We now have NGD Shanghai community, the development team is growing with more developers to help in the Neo projects.

We need research teams working with the core developers to build solutions to complicated problems. Maybe we need to study what the market has done, and bring these ideas to Neo, to discuss with the core developers how this can be implemented in our platform.

NNT – Colin: You’re coordinating with open-source developers, individual developers, worldwide contributors — you’re coordinating their code or contributions with NGD Shanghai, with Neo Foundation, and then anything that NGD Seattle adds as well?

Ricardo: Yes, also City of Zion. I try to be where I can hear demands, because my mentality is very customer-driven. I see that many of these developer communities, except NGD Shanghai, are developers who wanted to use the platform. They started using it, and they stayed. And so, I think that they are customers as well and we should hear what they need.

My role: I try to be accessible, for these communities including the team in Shanghai, the team in Seattle, people from open-source, people from City of Zion, and be available to say “What do you need, what do you want” and then try to introduce this to Neo program development.

In the past, since Neo didn’t have a product manager, we didn’t have this project development mentality. So this changes how things work in a very large way, because you need to be playing with the process, maybe have task assignments, do testing, or have people to make reviews.

NNT – Colin: That makes sense, someone has to herd all the cats, to use a term from Ethereum.

Ricardo: Yes, and not only that, right, because we have the products running on Neo. From my perspective as a product manager, these are the most important assets that we have — our customers. It’s very important that it is easy for them to use the platform. So, I’m trying to make this change as well, of mentality.

NNT – Colin: Let’s talk about Neo3. How do you feel the development of Neo3 is progressing and when do you think people will start to notice the improvements in the platform?

Ricardo: I think that for Neo3, we have two features that I’m certain will come. They are oracles and decentralized storage. They will exist, and I’m certain because we’ve had the discussion, we’ve seen the development, we’ve seen live demos. These are being developed by groups of people. NSPCC from Russia is developing the distributed storage, and Red4Sec and some guys from Shanghai are developing the oracle solution.

However, we still have this middle part of the software — so what will happen is there’s nothing for you to see. If you open the current release [Neo3 Preview 1], there’s no get block or show transaction. You can maybe open it and show state and see if there’s nodes connected.

From the product development perspective, it’s like this. We did this first Preview 1, with some major features — the account model [for NEO and GAS], how we pay fees, and other important things.

However, some very large features are coming and will be provided by the communities: NGD Shanghai, Red4Sec, and NSPCC. I’m not including developer tools, I’m just talking about the core node software.

These will be implemented quite fast because they are already implemented in an isolated way. We’re planning to merge them. We are going to have maybe one or two months of some node development tools, changes, like how the fees are paid — things that are open, but not very visible. And then we are going to start to add major features for Preview 3. For Preview 3, we are going to have the oracles and NeoFS already kind of working with the platform.

So I believe that in Neo3 Preview 3, we are going to have the major changes. One thing that’s not confirmed yet, but I understand from your question that it’s very important. You can’t see the changes, the changes are mostly invisible. This is not very marketable, right? If you open the software, if you use it, it’s the same

NNT – Colin: [Laughs] I’ve run a Docker of Neo 2, as part of my own PrivateNet. I’m familiar with the experience of showing state <show state>. It’s pretty quiet.

Ricardo: Actually, if you’re using Docker, you’re probably using neo-python. You’re not using neo-cli. You’re actually using a community tool that exists because these features did not exist in the official software.

There’s one change in the preview for the users that was not highly visible, but in the backend it exists. That is, we don’t need UTXO, which requires indexing. When you received one transaction for GAS, and then you spent from it to another transaction, you couldn’t because it said “No Balance.” But you had balance. That was terrible for the user experience. So it’s easier to spend assets now.

I think that for the developers who are going to build on top of Neo, it will be easier because there are new features available.

NNT – Colin: Let’s talk about the organization. In my experience, I’ve seen some strengths in having a big team, and some strengths of having a small team. In your case, the team size is fairly large and it’s also totally global. Are there any tricks that you’ve learned in order to keep everyone on the same page, even though the sun never sets on Neo development?

Ricardo: There are a lot of changes that we are still trying to implement. It’s not easy, because many of the developers work independently. You can’t go to them and say, “You have to do this.” However, we need to create ways to make it easier to work as a team.

We went to the assembly and we discussed this problem with NGD. Their long-term plan is to get these people from NGD Shanghai to work on the core development. They have internal groups — say, protocol, research — and they want to train a few of them. They have this concept, where if it’s more centralized, we can make it more efficient. But there is still a challenge to reorganise the teams to work together seamlessly integrated.

NNT – Colin: Brett Rhodes [“Edge”] told me you worked over the GitHub. He said that “The whole organizational structure found on the GitHub today is all attributed to you.”

Ricardo: I see the Neo GitHub as the storefront of the Neo project. People are going to enter into the Neo repository to check it out. That’s why I think it should be very well taken care of. I don’t think it’s as good as I would like it to be. I don’t know if you are aware, but I am in favor of a single repository.

NNT – Colin: When I visit, basically just as a writer, if I’m looking at something: okay, let’s say I want to read about consensus node issues. Do I look at the neo-cli repository? Do I look at the Neo repository? Do I look at proposals?

Ricardo:  You should start from the developer webpage, there are good examples there.

NNT – Colin: It’s interesting to see people thinking on a meta level, not trying to streamline Neo, but trying to streamline how the developers interact with Neo. It’s like another — well, I guess that’s what a project manager is. You’re thinking not about building code of Neo, but building something so that people can efficiently contribute, and even understand the project.

Ricardo: Yes, and use it, and have a good experience. I think we should put ourselves in the body of the customer. I like to use personas, and empathy methods — I have all this introspection. In this perspective, Neo is growing up. We need to understand that if someone downloads the software but it doesn’t feel right, if they don’t trust it, or it feels weird, they’re not going to use, that is why there are many efforts to make Neo more user friendly.

This whole buying process that the customer goes through, from when they hear about Neo, to when they enter the webpage, the developer page, the GitHub, and then download it — It’s a funnel with several steps. And in many of the steps, I think we can improve and take better care of the customer. If we just build what we want, what the engineer wants, and we just don’t care about the customer, then they just won’t care.

NNT – Colin: It’s interesting that in my opinion, Ethereum, of course the dominant programmable blockchain, has a lot of the same issues with the users. Maybe just creating a programmable blockchain is such a difficult engineering task that user experience has, thus far, gone to the wayside.

Ricardo: Exactly. And I think this is my biggest responsibility with Neo. For the development part, we can help them to build their projects on Neo and even add features that they need for their projects.

NNT – Colin: If someone wanted to start with coding, or to start with Neo, where would they begin? I think that some of the most valuable contributors in five years have barely started at this point.

Ricardo: I think the best way to learn to code Neo is to use NEO-ONE. They have a playground and everything for a very good user experience, so this is the best place to start. However, we have some very good tools being launched in the next month, such as the debugger. So maybe that’ll change a little how C# development is done. But today, I think we should go for NEO-ONE.

NNT – Colin: Any other advice for young coders, who are looking to make a career out of their hobby, or a hobby out of their research?

Ricardo: Yes, I think that they should try to build smart contracts using Neo in a local chain, because this will teach you about Docker, about RPC, and about basic development. Smart contracts are not very complicated, so you can just use a class, you don’t need internet access. So I think that blockchain development in Neo that uses C#, or maybe Python or TypeScript, it’s a good place to start development because it’s going to take you around all these areas. It may seem a little complicated at the beginning, but it will cover all the important areas in computer science, including math and cryptography, remote access, and storage. Everything included in blockchain.


Ricardo Martin is Neo3’s product owner.