BitShares Delegate Proposal

My name is Peter Conrad and I propose to create a delegate for funding my work. Please support my proposal and vote for me: wallet_approve_delegate dev-pc.bitcube true

A. What I have to offer

I'm a freelance software developer and I would like to offer my expertise to the BitShares DAC. Read up on my professional background if you like. As you can see ;-) I'm not a GUI type. My preference is backend programming, network interfaces and console stuff.

I have done most of the backend work for porting PTS to PTS-DPOS. PTS-DPOS is basically a fork from BitShares-, so I'm already familiar with the BitShares codebase.

I see my activities mainly in these areas (in no particular order, priorities will be worked out together with the core devs on a case-by-case basis):

1. Infrastructure

For PTS I have implemented a dynamic list of seed nodes published via DNS. Porting this to BitShares should be simple. I will create and maintain such a list for BitShares (and DevShares) and publish it in the DNS. These DNS names can then be added to the static list of seed nodes built into the client. Every time the client is started, it will fetch a fresh list of seed nodes from DNS and use these. (Once set up, the list is updated automatically and requires hardly any manual maintenance.)

To my surprise, the current client does not work with IPv6. This is a no-go for a brand new networking application, IMO. I will work on porting the networking code to IPv6.

I will continue to provide my Linux packages of BTS (and DVS) for the current set of distributions (CentOS, Fedora, openSUSE), free of charge - I would do that anyway. I can work for pay on adding support for Debian, RHEL, Ubuntu and ArchLinux.

2. External APIs

The BitShares code already contains a very elegant mechanism for defining and generating the external RPC API (also used by the GUI wallet). The same mechanism also generates the command line interface.

The next logical step is to use this mechanism for generating a common API for external applications. I'm thinking of a BitShares-Java API, a Perl module, C library etc., similar to what Xeroc has already started for Python.

In addition to generating the plain method calls, the parameter types and return types should be formalized as well.

3. Code Quality

A delicate subject. This is not about bashing other people's coding style. It is also not about throwing everything away and starting from scratch (only better this time). Nevertheless, objective metrics on code quality exist, and application on the BitShares codebase suggests that there is room for improvement.

What is code quality and why is it important?

Clean code is simple in the sense that it is easy to read and easy to understand. It is highly modular and well-structured.

When code is easy to read it is also easier to see bugs. This leads to a better product.

Code that is easy to understand makes it easier for new developers to join the team, reducing the time (and cost!) to get them up to speed.

Well-structured code is also easier to maintain, reducing the time (and cost) to find and fix bugs.

Modular code facilitates adding new features to an existing program. It is easier (and cheaper) to add a new module than to fiddle with many details all over the codebase.

Modular code also facilitates code reuse. Reuse reduces the overall code size, which leads to more simplicity, fewer bugs and lower maintenance cost.

How to get there?

  1. Educate others. Not with long monotonous lectures, but by setting examples. By generating interest, explaining and giving pointers.
  2. Introduce tools. I plan to select tools and metrics for evaluating code quality to highlight problem areas and measure improvement over time.
  3. Apply the boy scout principle: Always leave the code cleaner than you found it.

4. Grunt work

There are currently (2015-01-31) 130 open issues in the main github repo. Some of these are more than 7 months old. This is not a sign of lazyness (there are more than a thousand closed issues), it's a sign of an overworked dev team. I can take up some of these issues, taking load off the core team.

In a similar way, I can investigate issues posted by forum users that never even make it into a github ticket.

B. Suggested mode of operation

1. Pricing

I can offer to work for the BitShares DAC for €55.00/hour including all expenses. (This is less than my usual rate, and more than 20% less than the average.) I will adapt the amount of work I'm doing to the exchange rate of BTS/EUR.

I will not charge for

2. Delegate Operation

I suggest that a 3rd party runs a 100% delegate on my behalf. This should be either an individual living outside the EU, or a business located outside Germany. This serves two purposes:

  1. It is a tax optimization - in this setup I don't have to charge VAT.
  2. It is an insurance to the DAC - the 3rd party can check that I'm actually working for my money, and withhold/burn the funds if I don't.

The 3rd party will have to make their identity (name and address) known to me, so I can send them a proper bill (for example on a monthly basis). These bills (excluding the 3rd party's identity) plus a more detailed report will be published here for you, the shareholders, to check.

The 3rd party should agree on a fixed price for their own service in this setup, which will also be paid from the delegate proceeds. Any remaining funds below a threshold (for example two weeks of delegate payment) will be carried over to the next month, the rest (above the threshold) will be burned.

The first two weeks of pay will be taken as compensation for the registration fee.

3. Delegate Operator

Cube has agreed to run the delegate for me. He's a long time member of our community and has been running very reliable PTS-DPOS delegates for a while now.

I am a IT consultant cum project manager by profession. I started as a developer and a system admin before moving on to a sys analyst, senior analyst and then the project manager role. My IT profession and experiences are over 20 years. I am one of the team members responsible for the release of PTS DPOS. I detailed my interest in crypto here.

- Cube

Cube will charge USD 135.00 per month for his services. This includes hosting, server maintenance and bookkeeping. At the current rate, USD 135.00 is roughly 10% of the total delegate earnings.

4. Vote for me!

wallet_approve_delegate dev-pc.bitcube true

Thank you very much!

Impressum / Imprint