Finishing some development documentation, training more developers
-
Must admit that this is a complex system. Sometimes I think some of the new features, Most of the time, I’ll go check Bitcoin information,But we have a lot of different codes with them.so I do not know where to start writing code.
Who can provide some information for the development ? Bushnell , Tonny or wellenreiter
-
I just can tell how I do it…
I’m mainly fixing code, or implement small enhancements only.
The way I work is:
-
I see a problem
-
I branch and download the code from Github
-
I try to read the code (C/C++, python, java, …)
-
Them I try to implement my changes.
I’m always learning by doing, as I’m no professional programmer and my first real contact with python was, when I setup and used p2pool. Then Stratum support for neoscrypt was needed and I learned a lot about python, while trying to fix the stratum problem.
The same is true for C/C++ (long ago) and java, where I wanted to modify existing code and that way learned a bit of the languages.
Nevertheless I agree with you, that the crypto system is very complex and it is not easy to understand code written by somebody else, especially, as most sources do have little or no comments in the code describing what a procedure/subroutine/statement is doing.
If you want to enhance existing code, I suggest you follow the Github process: fork/branch code-> modify/implement enhancement-> test-> create pull request to get your changes into the main branch/upstream project.
What we could do to enable other developers to join is the following:
-
Always have a subscripive readme.md file on Github.
-
Place comment lines in the code, describing at least the function of a procedure, may be where is is called from, and where in the workflow it is used.
-
Optional: create a delevopers information on the github wiki, include flow diagrams, object description and object relationship.
to be honnest, I don’t believe, that we ever will get 3) ;)
-
-
Nicely explained thanks.
I agree 3 is likley never to happen but with good comments you can usually figure out what’s happening. Another good thing to know is where the code is launched from / starting code is. As starting from the beginning usually helps. :) -
Hi all,
Well I’m a bit of a fan of doxygen - which with a few tweaks to the comments, you can use this to autogenerate html or even .pdf documentation on the code and hey presto, done (although you have to take the time to understand the code and add the comments to the classes/methods and variables).
The comment formats are pretty easy to follow - I have used it over the years to document as I go.
Cheers
Dave
Links - Doxygen main page http://www.stack.nl/~dimitri/doxygen/
Example of doxygen comments : http://www.stack.nl/~dimitri/doxygen/manual/docblocks.html
-
Just cloned the feathercoin source - I see a doxygen config file in the /docs directory. Going to run doxygen on the source and see what I get.
Cheers
Dave
-
Re: Software development notes:
As a manager / specifier / QA / tester / hacker - when I worked at the Manchester University developing software, there are different levels and skills needed in software development, testing and deployment.
All programmers need to “know” how to program in different languages. Also, proper code design and interface design are specific skills.
Where as, understanding someone else’s complex code and hacking that with fixes updates is a different skill, in some ways harder.
I think Wellenreiter underestimates the importance of what he has achieved for Feathercoin, in packaging support and development particularly.
I’m learning Github as well, in the past such systems were unreliable and version control was done by hand. Absolutely amazing and state of the art and anyone can get involved and learn it.
apart from that : most things are new to me - I’ve used FORTRAN BASIC Clipper SQL Delphi Pascal DBASE and Java. Now I’m hacking/ reading pascal C++ python Javascript BitcoinAPI JSON .
It is virtually essential to bring in an expert in niche areas - especially if developing a whole new “module” or “function.”
Happy to help investigate particular problems.
-
Hi all.
I have generated doxygen documentation based off of the current master branch on github. It seems like bitcoin started to use doxygen but it was then discarded after a while.
If anyone is interested I have uploaded the generated documentation to an old unused website of mine:
http://www.bishop-morrison.com/feathercoin/index.html
The documentation includes class hierachy diagrams and also the source with hyper-text links.
http://www.bishop-morrison.com/feathercoin/inherits.html
http://www.bishop-morrison.com/feathercoin/files.html
As I will be going through the code anyway to understand it, I could document as I go (in a light way, not with heavy detail at this point).
Thoughts?
Cheers
Dave