RFC: StartAllBack interoperability going forward #71
Replies: 7 comments 10 replies
-
No, only the DLL with the listed hash. And it probably will never be. It's not a feature I want to keep supporting, it was there until I ported over the 2 settings which I was interested in. I haven't yet pushed the commits containing this port because I don't really know if it's something I should really do. It's a much broader discussion; the port for these 2 functions and some other small snippets is obtained from the disassembly of the StartAllBack DLL. I did it just because I want a few features that are implemented there, and also generally to learn how things are done. I have learned indeed a lot from it and not only from it. I usually disassemble a variety of binaries to inspect how they work and enhance them, and also very much to learn. For my personal use, dynamically loading the library or porting over the disassembled code is fine, as I already have a StartAllBack license, for example, and also, idk, it is something I am okay with doing. Of course I prefer integrating the code in the main code base, but when the disassembly is too big or don't have time to port it over, I usually just dynamically link. The problem with publicly releasing this is that, idk, it reimplements a subset of features which are available only in StartAllBack, and that is paid for... also, the EP project is an original idea, having come out before the first betas of StartAllBack. And these features are not really "core", or "essential", or "must have", these are more like "nice to have", so there's an even weaker argument there regarding them. It is just that I liked these 2 features from SB mainly, and linked to them, and also looked on the disassembled DLL to learn stuff and improve my methods. But yeah, releasing this publicly is not a problem from my side, but idk, may be from StartAllBack's side. The project is paid for, and there's some overlapping between the features that offers vs the features of ExplorerPatcher, kind of an interest conflict. I obviously don't have the time or resources for writing specifications, assembling teams of clean and tainted developers and doing clean room reverse engineering, so... I don't want to be caught in offside. I don't want to piss anyone off, or to take down the project because I went above someone's radar. The disassembly of course is different from the original source code, but obviously it comes from the binaries distributed. As a matter of fact, even messing up with Microsoft's libraries is not okay from a license perspective, but they obviously probably won't bother. I mean, I am not talking about civil lawsuits, I am talking about the mere fact of receiving a take down notice which one would really have to comply with, as this is not 100% clean room, so to say. On the flip side, what other fucking place to learn from other than the disassembly, as there is no documentation, but whatever, these are the laws and how the judicial system works... it's mainly good to stay under the radar, in my opinion, rather than to fight a questionable battle. So yeah, I don't know how to proceed, so it's simply on hold. I was thinking about removing the features all together, or maybe just go along and publish them anyway. For me personally, I am now reorganizing the project, moving forward I don't want to maintain interoperability with SB, as I don't use many of the features from there, and also because I don't want to answer a "does it work with SB v xyz?" question every time SB releases a new version. And no, I also cannot redistribute their binaries, I don't think it is allowed from what I read on their web site and I also don't want to do it. It's a gray area so to speak and it's more problematic now since this project is getting quite some attention. If it were just a regular GitHub project of my own that almost no one knows about, it would just sit there happily and be done with it, no one would notice anything anyway. I could also make this private, and move on with the port and just backport from time to time things in the public repo, but I don't want to do that either: I don't want to maintain 2 repos, nor do I want to make this private, as I want to publicly publish some new capabilities developed 100% in-house. The need to disassembly comes mainly from the necessity of reenabling the old functionality and the lack of any kind of documentation on this topic. In the end, no resolution yet, what's the opinion of the community on this? |
Beta Was this translation helpful? Give feedback.
-
I will have StartAllBack forever installed alongside ExplorerPatcher since both fix some unique core usability issues for the Windows taskbar so I don't really care about having the DLL in EP's folder or its interoperability that way. |
Beta Was this translation helpful? Give feedback.
-
I think there is no right or definitive answer to @valinet's extremely well thought matter. The basis of this project is obviously fruit of the hard work of reverse engineering MS' implementation to improve it - almost like doing work for them, for free! There are countless other legitimate examples which do the same: console and game emulators, jailbreaks on closed systems, vulnerability research, etc. IMHO, all of those -- including this project -- perfectly fall into fair use as there are no EULA'd binaries being distributed or internal industrial secrets being leaked. At the same time, I don't think you should be overly concerned about competition. Open/LibreOffice are literal alternatives (competitors) to the proprietary Microsoft Office package and I am sure their work (especially on the not-well-documented binary legacy Regardless, I would say that it's absolutely legit for @valinet to decide to not maintain interoperability with StartAllBack, as that requires taking away time that could be dedicated to implement new things of his liking or to actually fix the interoperability with Windows! I would also not hold back features because a competitor is also implementing them. However, I would definitely try to avoid to use directly disassembled code, as that could be considered violation of intellectual property -- simply basing off disassembled code, though, should be mostly fine, as long as you keep a certain degree of originality. Again, I am not a lawyer, just a mere opinionated developer, so my opinions might be terribly wrong. I do strongly support the development of this project though. In the end, I don't think that a cautious approach would be wrong either -- if @valinet doesn't feel comfortable releasing those features anyway to avoid any headache, it's his project, provided as-is and open source, so anyone desperately in need of any feature could technically attempt to replicate the same amazing work he's done here. People will also have different opinions based on what they need or use. I am a simple person and just need my good ol' taskbar back -- once I had it, I was happy and called it a day! People with different needs, instead, will obviously be more pushy to have other features, especially if that means they won't have to pay to get them. Still, I am simply amazed at the speed this is evolving, and would like to iterate a shout out to @valinet for polishing this to extreme degrees! |
Beta Was this translation helpful? Give feedback.
-
I have thought about it, have taken into consideration the replies here and have come to a conclusion: I have decided to remove the StartAllBack interoperability code from the library. I will try to explain as best as I can the reasons below:
So, with the above being said, moving forward, public builds of ExplorerPatcher won't include that functionality. The The good thing is that now the upstream is yet again in sync with my development local clone. I don't have to keep 2 folders to build into, so yeah, it saves me a headache. I hope this does not turn this into some people creating forks, maintaining download links for old versions which had this functionality etc. Also, please make me aware if I ever leak and upload a private build of ExplorerPatcher in the releases section. Thank you all for the support and for the suggestions and opinions provided. It helped me a lot to develop a decision on the problem, and I hope you all understand the reasons outlined, and that we are all fine and we can meet together happily and enjoy new experiences coming up in ExplorerPatcher. Thanks, |
Beta Was this translation helpful? Give feedback.
-
I have a somewhat related question. Even if in the future suppose there is no plan to support StartAllBack DLL (nor do I expect such interoperability), but let's say I paid for a StartAllBack license and have it installed side by side along with ExplorerPatcher (not the DLL in %appdata%\ExplorerPatcher, which is a different approach). Now naturally since both are more or less focused on the same enhancements, some conflicts, or functionality in either one not working as intended is bound to happen. But then should I report such issues - as in - is it a supported configuration for this project? Or it depends in each feature or setting's case? I certainly don't wish to be annoying about every incompatibility created because of coexistence of both projects. But I do care about ExplorerPatcher functionality working right in maximum scenarios. For example, just casually I discovered recently that Open Start to All apps by default does not work when StartAllBack is enabled. It does not bother me the least bit since I use Open Shell anyway. But should I report it since I will definitely have this particular configuration only for the foreseeable future - EP+SAB and I happened to notice it? Or it is an unsupported configuration anyway so I shouldn't annoy you with such issues created by both of them enabled? 🙂 Update: It's now working fine even with SAB enabled! The Windows 11 menu is opening to All Apps by default. I don't know what happened. I swear it wasn't working for quite some time and then it started working. Anyway the question remains - should I report or shouldn't I - such issues arising from both being enabled? |
Beta Was this translation helpful? Give feedback.
-
Well right now there are 2 main features why I use StartAllBack on Windows 11/StartIsBack++ on Windows 10. I wouldn't need it if not for those 2 features, because for the Start Menu I use Open Shell and I will always have ExplorerPatcher installed anyway. Here are those 2 features:
Notice how the active window button looks pressed down/pushed down up to Vista and then Windows 7/8/10/11 break it. Windows 10 does not even bother to draw vertical lines separating the buttons.
I am not requesting that you implementing those features :) just stating why I use them side by side. If while having fun with Explorer code, you discover some easy way around these issues, that would be golden. |
Beta Was this translation helpful? Give feedback.
-
is the latest version of startallback dll supported? cause I saw the hash of the dll in the readme.md and it doesn't match.
@valinet edit: let's turn this into a request for comments; please read my post below and help me reach a resolution regarding this issue. Thank you.
Beta Was this translation helpful? Give feedback.
All reactions