rozniak / xfce-winxp-tc

Windows XP stuff for XFCE
Other
1.11k stars 37 forks source link

Join forces? #357

Open hcsubser opened 1 month ago

hcsubser commented 1 month ago

Hello, I've been working on my own clones of XP components when I came across your repository. I noticed that majority of the work here was done on the shell components(desktop, panel, explorer) while I was previously using standard Xfce for those I switched to your panel recently and will probably switch to the rest of components when they are done. I have made programs for Image Viewer, Calculator, Task Manager, Command Prompt and am planning on doing minesweeper and notepad next. Here is a picture(components are WIP, also ignore window borders I took this screenshot on a different desktop): 20240926_09h28m33s_grim Most of these are forks of some other FOSS Linux programs that have been adapted, apart from task manager which while it borrows code from lxtask has a lot more code written from scratch.

So as the title suggests I was thinking we could join forces in some way, and use this repository to brainstorm how to merge these projects.

There are a couple of things that I would like to change if you are okay:

  1. It would probably be for the best to divide this repo into multiple repositories for different components as it would make it easier to manage and package for distros. This current system seems very complex and non-standard to me as someone who has not worked on the code, I also had problems compiling it as it is not as straightforward as it seems.
  2. I was thinking that every GUI program(picture viewer, calculator, paint...) should have its own repository. Plymouth theme, lightdm theme, gtk theme, icons should also have their own repos.
  3. I would also cut down the number of these shared libraries, instead of having like 10 of them, would be easier to merge them together to have 2 or 3, as it is very impractical to have shared libraries that have only one function.
  4. I used meson, and you used cmake, it would make sense to use just one build system if we were to join projects
  5. I noticed you created a clone of XP's registry editor but it uses its own registry, I thought it would be better to have it use gsettings instead as in that case it would become useful for a lot more linux applications instead of just for a few apps in this project
  6. There is already a perfect lightdm theme for web-greeter(nody-greeter) on github here I was wondering if we could use that instead as to not waste time reimplementing something that is already done

Maybe for start we could even each have our own separate repos, just with division of obligations(you could keep working on shell components and I would work on applications)

I have not uploaded my apps anywhere yet, I will wait to see what will come out of this so that I can make major changes if needed before I upload it. If you feel like we could work something out let me know.

rozniak commented 1 month ago

Alright mate? I have thought for a while about how other people might be able to work on the project, and I had tossed around the idea that working on the bundled programs could be a good place to start. Minesweeper was one of the easier targets that I was thinking of actually :thinking:

I haven't been too keen on forking existing programs - pretty much everything you find in this repo have taken an approach more like you have done on your taskmgr. Things are written from scratch, but I do have a poke around similar free software sources for references on some stuff. Helps keep everything consistent that way.

Some responses to your ideas:

  1. I purposefully made the project a monorepo - sometimes it is easier/tidier that way. If you were to separate out every component in the project into separate repos, you'd end up with a mess of submodules everywhere having to keep commits in sync. Take for instance the most recent #339 , comctl, winver, run, desk.cpl, sysdm.cpl, and the shared theme build were all touched - in this monorepo structure the changes are all included together. If they were separate repos, keeping the commits together would quickly become annoying - and also you'd lose the association with a central issue tracker.
  2. Essentially covered by 1.
  3. They are subject to change - at the moment I've prioritised separating things out to avoid having one library become a 'dumping ground'. I expect each one to gain more APIs as more programs are written, it would be worth revisiting them to see if it makes sense to consolidate libraries once the use cases are clearer. :magic_wand:
  4. I don't really want to change the build system in here. The process as a whole has evolved a fair bit to get where it is, it's relatively stable now.
  5. regsvc is more akin to xfsettingsd/xfconf ... I did look into gsettings and whatnot at the time. Something to think about maybe because I never wrote down the entire rationale of it. :thinking:
  6. I don't really want to just lift-and-shift other people's work, but also the greeter in here has some work done on the classic logon, not just the welcome screen. There's other things I had in mind to implement on it for improving support for other logon methods etc. that make sense to have a custom implementation.

To be fair, I think a lot of it comes down to the fact I haven't written any documentation on how the project is developed (or even installed :weary: ). Producing a build of everything should be easy as described in the README, at least those are the steps I use when getting up and running on a new system... :thinking:

I'd be cool with integrating programs into the repo if you'd like - I don't want to be too much of a burden is all. I'm quite keen on keeping the components consistent across the project, so if you want to contribute something like taskmgr by 'throwing it over the fence' that is fine by me.

Hope this all makes sense... let me know if you want me to elaborate or clarify anything! :grin:

hcsubser commented 1 month ago

Alright, taking all differences in approach into an account, I think it will be the best if I were to upload my programs into a separate repositories, as I wish to use different repositories for different programs. I will make them minimal in terms of dependencies so that they can be used with your project, as that is how I will be using them. I do not plan to re-implement anything that you have already done as you have done a wonderful job so far :D. I am really just trying to make a fully-featured clone of winXP as soon as possible which is why i opted for forking and adapting other open-source programs instead of writing them from scratch as that would have taken a lot more time. Which is why they would be better off in my own separate repos rather than here as you wish to keep the code base clean. I will be uploading them as soon as I clean up the code in my apps, I will notify you here.

You are free to use them as is in your project, fork them or use them as a reference if you want to re-implement them yourself for the sake of code purity. I will try to help when I can if needed.

I will try to follow the standards set here( for example if an app had it's settings accessible from control panel I will make it interact with your control panel implementation(I have not checked the code, just assuming it is modular) or if they use regedit I will make them interact with the registry you choose here, though i still think we should use gsettings for that). We can probably work on these "standards" as I called them to make sure our programs are interoperable if you'd like.

Let me know if this was all understandable, these sentences I wrote are spaghetti like my code, and English not being my first language certainly does not help.

rozniak commented 1 month ago

Sounds good yeah, would also mean you can stick with meson in your own repos. I think if you would like me to merge any of your programs into this repo, you should let me know - I don't want to like, help myself to anything you're working on without your say on it. :sweat_smile:

There is some API documentation in the repo - it's quite rough because I have not used Doxygen before, but it's probably better than nothing: https://github.com/rozniak/xfce-winxp-tc/tree/master/docs/api (see the README on generating it locally)

Control Panel is pretty easy, you basically just need to put a desktop file in the <prefix>/share/wintc/cpl with stuff filled in for it to show up. Obviously you can have a look at the ones under /shell/cpl to reference from. Shell extensions are a little more complicated of course, /shell/cpl/printers is a simple barebones extension you can have a look at as an example. I'd probably leave shell extensions for later though, as I need to do a lot more work on the API first.

Registry is easy enough, at the moment it's only used by /shell/desktop and /shell/cpl/desk if you want to have a look at how it is used.

Your messages seem fine to me, and to be honest I'm not sure this repo sets a high bar on code quality so :stuck_out_tongue_closed_eyes:

BoQsc commented 1 month ago

For long-term, monolithic repository is easier to manage and for it to not dissolve. That's the reason for Linux Kernel.

I'm just a random person with some experience on having many personal repositories and many personal orgs, you can ignore me.

rozniak commented 1 month ago

Yeah I don't plan to change this repo's structure. I'm fine if someone wants to work on a program like Minesweeper or Calculator in their own repo, and then ask me to merge it into this repo's tree, if they would prefer to do that. Whatever makes it easier to contribute. :stuck_out_tongue:

hcsubser commented 1 week ago

https://github.com/hcsubser/xpde-calc https://github.com/hcsubser/xpde-picview

Sorry for the long wait, I had some things come up and couldn't get to this sooner. The links up there are for my calculator and Picture Viewer apps. Both are forks of other open-source software(galculator and gpicview respectively). I did not include readme files yet but compiling is straightforward with meson build, ninja -C build, ninja -C build install I will add the readme file some other time. Picview seems more or less feature complete while calc needs a bit more work but is pretty usable. My task manager app and command prompt will be uploaded when they are in a bit more usable state. I will be rewriting prompt from scratch while task manager is missing some tiding up regarding cpu and memory graphs will be uploaded when I get around to doing that.

Let me know what you think! :D

rozniak commented 1 week ago

No need to apologise, we all have our busy times - I've been quite busy myself with life stuff for like the past month so I'm still polishing off #8 :grin:

I will try to have a look soon enough.