Lean IPFS implementations

There is a kind of reciprocal relationship between profiles and “lean” or “subset” implementations of IPFS-- if you only need support for one profile, you might not need all of kubo or helia, which could make all the difference in the implementability of IPFS in your use case!

@Mosh recommended breaking out this thread inside another one and I think it’s a worthwhile mini-research project to do an inventory of lean-client prior art.

  1. The most recent commit to the Debian package seems to not build as configured and thus fail CI – but that could be for a lot of reasons, and the last commit is over a year old.
  2. One of the underlying rust crates built into this^ package is ipfs-cid, which hit v2.0.0 6 months ago, and is maintained by an unfamiliar face. This crate seems worth tracking independently from the debian package, IMHO, since many architectures require a CID-only library to run in resource-constrained corners just as a checksum/security check for CIDs and referents they get from other services.
  3. MarshalX/python-libipld (features list from readme) - seems load-bearing for all of AT Proto
  4. David Buchanon’s CBRR library might also qualify

For what it’s worth, Helia is already a lot more minimal than Kubo.

The helia module doesn’t ship with UnixFS, or DAG-CBOR, or CAR files or anything.

It only has the hash functions that are provided by the runtime (e.g. the implementation is provided by node crypto or webcrypto), so these do not impact on the size of the application.

If you want the one that just does HTTP retrieval and doesn’t do libp2p or any fancy networking, use @helia/http

The idea is very much that you extend it according to your use-case which seems to align nicely with the thoughts in the OP.

1 Like

Oh, that’s an entirely valid point-- it’s awesome that helia was architected so modularly already! I guess the goal is what to tell people that need, say, Go or Rust or some other language what the equivalent is. Helia might be a good benchmark here, since it already is architected for lean subsets.

I hope that the reference to giFT is not off-topic.

I think that this is a good idea, especially to increase peers of people who are on P2P file sharing networks, such as Gnutella.

Another approach would be to incorporate IPFS in current projects such as giFT giFT download | SourceForge.net which other software would subsequently support IPFS as well.

There are at least ten software that utilize giFT, and most of them are not packaged in most Linux distributions.

Once giFT would support for IPFS, it might revive some projects, or would insentivize to create a new giFT-based software which would allow us, IPFS, to enjoy more content from FastTrack, Gnutella and OpenFT (current supported networks by giFT).

$ buku -t brand:gift

1. KCeasy [28765]
   > http://www.kceasy.com/
   + KCeasy is a windows filesharing application which uses giFT as backend.                       
   # brand:gift,interface:gui,niche:p2p,niche:transfer,protocol:fasttrack,protocol:gnutella,protoc
     ol:openft,software:kceasy                                                                     

2. LokiPoki [28767]
   > http://lokipoki.sourceforge.net/
   + What is LokiPoki, you ask? LokiPoki is a giFT frontend, written entirely in Python 2.2 and    
     pyQT 3.x.
   # brand:gift,code:python,interface:gui,protocol:fasttrack,protocol:gnutella,protocol:openft,sof
     tware:lokipoki,toolkit:qt                                                                     

3. :: giFToxic - a GTK2 client for giFT :: [28768]
   > https://giftoxic.sourceforge.net/
   + giFToxic is a GTK2-based client for giFT. At the moment it is under heavy development.        
   # brand:gift,interface:gui,license:gpl,niche:p2p,niche:transfer,protocol:fasttrack,protocol:gnu
     tella,protocol:openft,software:giftoxic,toolkit:gtk                                           

4. giFTcurs - a cursed giFT client [28770]
   > https://www.nongnu.org/giftcurs/
   + giFTcurs is a cursed frontend to the giFT daemon and has been described as “seriously slick”. 
     It won’t work that well without giFT, which you should have already. The version in CVS
     always works with the daemon in CVS. The latest giFTcurs release also works with the latest
     giFT release, and there are very rarely any incompatible changes in the protocol.
   # brand:gift,intreface:tui,niche:p2p,niche:transfer,protocol:fasttrack,protocol:gnutella,protoc
     ol:openft,software:giftcurs                                                                   

5. GiftBoX (by taco_kampstra) [28771]
   > https://sourceforge.net/projects/giftbox/
   + Frontend for the giFT file sharing daemon, implemented in Objective C. Manages downloads,     
     searches, daemon preferences and control and daemon version checking in one application.
   # brand:gift,code:objective-
     c,license:gpl2,niche:p2p,niche:transfer,protocol:fasttrack,protocol:gnutella,protocol:openft, 
     software:giftbox

6. Apollon download | SourceForge.net [28772]
   > https://apollon.sourceforge.net/
   + Download Apollon for free. Apollon - the greek god of music, mp3s, and videos! Apollon is a   
     KDE-based client for the p2p-protocol giFT (OpenFT, FastTrack(Kazaa!),..).
   # brand:gift,niche:p2p,niche:transfer,protocol:fasttrack,protocol:gnutella,protocol:openft,soft
     ware:apollon                                                                                  

7. giFTwin32 - a giFT client [28773]
   > http://www.runestig.com/giFTwin32.html
   + giFTwin32 is a Windows client for the filesharing (peer-to-peer or otherwise) server/daemon   
     giFT. It is written in C, using Visual C++ 6.0. As anyone can see, it looks pretty much like
     Markus Kern's KCeasy (without the Internet Explorer and Media Player integration, and the
     shared files manager), but I needed some inspiration on the GUI :-)
   # brand:gift,code:c,interface:gui,niche:p2p,niche:transfer,protocol:fasttrack,protocol:gnutella
     ,protocol:openft,software:giftwin32                                                           

8. giFTui: A giFT User Interface [28774]
   > http://giftui.tuxfamily.org/
   + giFTui is a graphical user interface to giFT using GTK+2. giFTui was designed to be easily    
     usable, somehow using the same logic as other well-known peer-2-peer clients.
   # brand:gift,interface:gui,license:gpl,niche:p2p,niche:transfer,protocol:fasttrack,protocol:gnu
     tella,protocol:openft,software:giftui,toolkit:gtk2                                            

9. WebgiFT - a giFT client [28775]
   > http://webgift.sourceforge.net/
   + WebgiFT is a webbased front-end to giFT, a filesharing program. WebgiFT tries to offer the    
     same functionality found in other giFT clients, with minimum reloading of pages.
   # brand:gift,code:php,intreface:html,niche:p2p,niche:transfer,protocol:fasttrack,protocol:gnute
     lla,protocol:openft,software:webgift                                                          

10. The Poisoned Project - Poisoned [28776]
   > http://gottsilla.net/poisoned.php
   # brand:gift,niche:p2p,niche:transfer,protocol:fasttrack,protocol:gnutella,protocol:openft,soft 
     ware:poisoned