And, as someone who licenses all of his code as GPL or AGPL v3, well, I would say that the LGPL is a feature, not a bug. But we can save that religious war for another day ; )davispuh wrote:About Libcoin I don't like that they forked Bitcoin codebase, used it as base but changed to LGPL license (Bitcoin is using MIT license). Thus they made it more restrictive and I always prefer to contribute least restrictive license, thus MIT over LGPL.
These are cogent points but they they can be applied in relation to namecoind vs Libcoin too: Libcoin is being actively developed by experienced developers, the core code has solid testing and it is written by the developer who found the last major security bug which caused a hard-fork. It is far more secure and better tested than what we can produce right now.davispuh wrote: Another reason why I think it would be better to use original Bitcoin is that it's very actively developed by experienced Bitcoin developers, it's tested very thoroughly (Namecoin currently doesn't really have tests and Libcoin have very little). Also Bitcoin will be first place where any security fixes will be implemented.
Again, the same comparison can be made between Libcoin and namecoind, this is based on Namecoin so it is easier to extend to our needs than reimplementing Namecoin from scratch. Libcoin has been refactored to be coin independent, meaning we can easily reuse parts between Bitcoin and other altcoins.davispuh wrote: As Namecoin is based on Bitcoin's implementation it would benefit from all Bitcoin fixes and those could be very simply merged in. Also there might be some cases when Namecoin improvements could also be useful for Bitcoin and merged there. For example some parts of Bitcoin code could be refactored to be coin-independent and then easily reused between Bitcoin and Namecoin (and possibly other altcoins) so wouldn't need to manage whole copy of Bitcoin fork.
The biggest problem with the Bitcoin codebase was written by academics, not programmers. They made really strange engineering choices, like not cleanly separating the GUI from the rest of the code that really slows us down. From what I have heard from the devs, there's a lot of "magic" in the code that's hard to reason about.
Because Libcoin is more modular than Bitcoin, we don't need to worry about the Bitcoin specific implementation details. And because it's being backed by a commercial venture, they will keep the other parts of the code up to date while we just focus on making Namecoin better.
A big piece everyone here is missing is that Bitcoin has a foundation which is paying programmers to work on Bitcoin full time. We don't have that, we have what some students can churn out between assignments and a few hours a week from professional programmers. With something this complex, chopping it up into small time slices wrecks your efficiency. And, of the core development team, only a 2 or 3 people are comfortable writing in C++.
Yup, it's basically a reimplement on Bitcoin .9 or spend 6-12 months trying to catch up. That's the rub: we've already failed at maintaining a pure Bitcoin fork. Maybe we can think about a full reimplementation in the future, but we could have a full Libcoin port up and running in a few weeks if we could get a dedicated programmer on it.davispuh wrote: While it definitely requires huge work I think it gives way more benefits in future as after it should be quite easy to follow up. I'm not sure how much were changed for Namecoin but if it's diverged a lot from Bitcoin codebase then it might be easier to just re-implement Namecoin back on top of Bitcoin, rather than trying to rebase current code.