Do you have any data to back up the claims in 1 and 2? As for lossless machines being completely denied by the system, there is absolutely nothing that stops you from taking the power coming in and storing it outside of the BC power framework and defining your own perdition calculator that would make the loss at the point it hands off the power to something very low like 0.000001 MJ/t (in other words, a loss of 1 MJ every 13.9 hours roughly)
For point 1:
Okay, so to receive BC power, you must have a PowerReceiver. This is non-negotiable. End of story.
Awesome, so you just add one to your class, and store in another structure or another type of energy? Oh no wait, it's private to PowerHandler. Also non-negotiable, end of story.
The only option you have is to add a PowerHandler. Meh, fair enough, just override the PowerReceiver and change the behavior to point to your custom structure. Oh wait, it's FINAL. Once again, end of story. There is literally one way to accept BC power. Talk to AlgorithmX2 at some point - he has to do a rather ugly hack to change the power stored and is not fond of doing it.
PowerHandler is a very large class, containing multiple SafeTimeTrackers and assorted helper gremlins. It literally requires 100+ bytes of memory to be able to accept MJ. Kinesis pipes are a special case it seems, as they can send to each other under a slightly lighter weight framework, but the wooden ones still need this rather large class.
As far as point 2...
You know how to use github. Trace through a power request and power receive for MJ. Then trace through the same for RF.
I'll help you out, here's how RF works:
"Hello RF-receiving tile, have some power."
"Why thank you. Here's how much I accepted."
"That concludes our transaction. Have a nice tick."
With MJ, there's a bit more involved.
The Facts, in chronological order:
- Severe designs flaws are noticed in the old API that result in a constant slew of bugs.
- API is refactored and cleaned up, using the old API as the foundation so that users of the new API wouldn't be required to rewrite their machines completely. Legacy constraints prevent a ground up rewrite.
- KL was asked for input about the new API, he asked for a couple minor things, they were added, even though they made it slightly less efficient.
- KL gives the thumbs up without expressing any indication that he was displeased with the API.
- API is finalized and released, ie can no longer be changed.
- KL jumps ship and the entire community turns against BC.
TE seemed to perform just fine considering point 1, but I'll concede that the variability meant that implementations were messed up at times.
Point 2...how legacy are we talking here? Changing a major version number - 3 to 4 in this case means that nobody should expect legacy anything to work. Should have done a clean reboot.
Point 3 is true. Although, my big request was the removal of "final." At the time I signed off on it, I was really attempting to prevent drama because of how my attention was brought to it. (A thread on here.)
The timeline does look about right though. I question the veracity of point 6, as the implication is that I hold tremendous sway over the community and/or actively pushed them away from BC. I do not and did not.