Homebrew Proposed SD directory restructuring for homebrew

  • Thread starter Thread starter TheCruel
  • Start date Start date
  • Views Views 25,045
  • Replies Replies 243
  • Likes Likes 54
I'm 100% for a change in the directory structure used by developers, and the sooner the better.

--------------------- MERGED ---------------------------

Not sure if it's appropriate to suggest here. But it feels related
Maybe developers could also start to release their stuff in the same structures.
On github for example instead of a zip/rar with the executables in folders or however people do it:
- 1 .cia file if it is supported
- 1 .3dsx file
- 1 .sdmh file
- 1 zip/rar with the sd card contents required for this app, starting from root (if you need a png in the same folder as homebrewname then 3ds/apps/homebrewname/image.png)

This way it would be easier for homebrew downloading applications, and for guides to give straightforward and correct guidelines.
 
I'm 100% for a change in the directory structure used by developers, and the sooner the better.

--------------------- MERGED ---------------------------

Not sure if it's appropriate to suggest here. But it feels related
Maybe developers could also start to release their stuff in the same structures.
On github for example instead of a zip/rar with the executables in folders or however people do it:
- 1 .cia file if it is supported
- 1 .3dsx file
- 1 .sdmh file
- 1 zip/rar with the sd card contents required for this app, starting from root (if you need a png in the same folder as homebrewname then 3ds/apps/homebrewname/image.png)

This way it would be easier for homebrew downloading applications, and for guides to give straightforward and correct guidelines.
There's not much point in having .3dsx and .smdh uploaded individually. Better to have .cia and .zip, with the file layout of the .zip being from SD root (/3ds/apps/homebrewname/homebrewname.3dsx). Which from my experience is how a lot of homebrew already does it.
 
Why don't we just have one file (zip) and you extract that zip to root, so you have /3ds/apps/example/example.3dsx /3ds/apps/example/example.smdh /3ds/cia/example.cia and stuff in /3ds/cia folder gets automatically installed (or maybe we could have ticket and .app in there, then just install ticket and place+encrypt .app in the right spot)
 
Why don't we just have one file (zip) and you extract that zip to root, so you have /3ds/apps/example/example.3dsx /3ds/apps/example/example.smdh /3ds/cia/example.cia and stuff in /3ds/cia folder gets automatically installed (or maybe we could have ticket and .app in there, then just install ticket and place+encrypt .app in the right spot)
The reason devs release a .cia, and a .zip separately, is because it's extremely rare somebody wants both. Having the .cia standalone means QR codes can be generated to automatically install using FBI or any other homebrew that supports them.
 
There's not much point in having .3dsx and .smdh uploaded individually. Better to have .cia and .zip, with the file layout of the .zip being from SD root (/3ds/apps/homebrewname/homebrewname.3dsx). Which from my experience is how a lot of homebrew already does it.

Uploading individual .3dsx and .smdh alongside the .zip could be useful for 3DSX homebrew to self-update.

Why don't we just have one file (zip) and you extract that zip to root, so you have /3ds/apps/example/example.3dsx /3ds/apps/example/example.smdh /3ds/cia/example.cia and stuff in /3ds/cia folder gets automatically installed (or maybe we could have ticket and .app in there, then just install ticket and place+encrypt .app in the right spot)

The .cia is separated from the .zip so homebrews can be installed via QR code.
Also users don't need to download the whole package just to extract the CIA.

EDIT: Looks like @Drakia was faster than me xD
 
  • Like
Reactions: Drakia
Uploading individual .3dsx and .smdh alongside the .zip could be useful for 3DSX homebrew to self-update.
I'm assuming there's some sort of Zip library for the 3DS, having the files be zipped shouldn't be a show stopper for auto updating.
 
Uploading individual .3dsx and .smdh alongside the .zip could be useful for 3DSX homebrew to self-update.
3dsx/HBL currently supports an embedded smdh, so not really necessary any more.

Though I agree it'd be nice for people to have more predicable release structure. I enforced this with BrewMan lol, though I need to go back and update and revise that, just don't have time.
 
I think arm9 devs could see the benefits of using something like /3ds/arm9/<app>, but the current /3ds/ destination just isn't inviting for any non-3dsx devs. In fact, this was almost by design. The devs of the 3dsx launcher/format were largely anti-CFW and really didn't want people using CIA or arm9 software. This should come to no surprise to anyone aware of all the private work that was kept from the public.

That said, wouldn't the HBL show the existing folders too ("arm9", "appdata", etc) and therefore take up space that shouldn't be used?
Or are you planning to change the default dir to sdmc:/3ds/apps or something like that? I'm all up for the change, but it'd be highly appreciated if paths were to be kept short, preferably with each level folder taking up less than 8 chars (so please no "applications" or "homebrew", they're kinda long).

So, as an example, in BootAnim9 instead of using the folder "/anim", I'd use "/3ds/arm9/anim"? Just want to see if I got the point correctly :3
 
  • Like
Reactions: Billy Acuña
That said, wouldn't the HBL show the existing folders too ("arm9", "appdata", etc) and therefore take up space that shouldn't be used?
Or are you planning to change the default dir to sdmc:/3ds/apps or something like that? I'm all up for the change, but it'd be highly appreciated if paths were to be kept short, preferably with each level folder taking up less than 8 chars (so please no "applications" or "homebrew", they're kinda long).

So, as an example, in BootAnim9 instead of using the folder "/anim", I'd use "/3ds/arm9/anim"? Just want to see if I got the point correctly :3
Sounds like that's what he's proposing. It would be compatible with the current release of HBL off the bat (It would just show an "apps" folder you could navigate in to). And if/when HBL switches to defaulting to "/3ds/apps/", you would still be able to go up one directory if for some reason an app requires itself to be in /3ds/.
 
So, as an example, in BootAnim9 instead of using the folder "/anim", I'd use "/3ds/arm9/anim"? Just want to see if I got the point correctly :3
Yeah. And yes, current HBL would show a few unnecessary directories, but I would open a PR (or fork) for HBL to change it to /3ds/apps/. If people are annoyed by the directories, they could use that, but it won't fundamentally break how people currently load homebrew and will open up the /3ds/ dir for more devs.
I don't see anything wrong with the current folder struct, each app having a folder inside /3ds is enough.
That's only 3dsx homebrew. Anything else has no place in /3ds/ and that's the problem. If all homebrew, including CIA-only and arm9 software or CFWS, all put their stuff in /3ds/ subdirectories, it would be a jumbled mess for the HBL, that's why they're all resorting to make new directories in root.
 
Originally I was opposed to @Shadowhand's proposed /homebrew/3ds/ idea, since it deviated from the norm, but after reading this thread, I would push for it too if we could get more people to do it.

I think the root of any drive should not be cluttered too much. Meanwhile lots of devs, even on Windows, use the root as if the only reason you have the drive is to use their program, or out of sheer laziness.
 
  • Like
Reactions: Shadowhand
/homebrew/3ds sounds really convenient: using /homebrew/ as a "root" and having just 2 folders on your real root. That's an extra work for a number of devs however
 
Meanwhile lots of devs, even on Windows, use the root as if the only reason you have the drive is to use their program, or out of sheer laziness.

Well, if we don't have a standard to follow, everyone would make up their own and we'd all be doomed, basically ^_^

I can already imagine it: "/homebrew/luma", "/3ds/anim", "/hb/decrypt9", etc.
 
Why don't we just put everything on the root, like we usually do?
That way, less folders = less inodes = less recursing etc
And then we have plain text with the list of files a homebrew is using...

Root of the drive is easiest for devs. Devs will always stick with the default
 

Site & Scene News

Popular threads in this forum