This is definitely an acquired taste. The canned/jarred stuff is, frankly uneatable. However, made fresh with a variety of fish it can be a revelation. Gefilte means “stuffed” in Yiddish. In its original it was a fish forcemeat that was stuffed back in to the whole skin of the fish and then cooked. After many years (centuries?), all that was left was the forcemeat, poached, much like French fish quenelles, but frankly, nowhere as delicate. One key to great gefilte fish is the poaching liquid. The better the fish stock, the better the fish.
I call for a mixture of carp, whitefish, and pike (it’s the mix my grandmother used). However any nice fresh water fish will work. Mixing varieties make for a more interesting mix. Fresh caught trout works very well. Avoid fish like bluefish or mackerel, they are too oily and strong tasting.
Make fish stock with the heads, bones, and skin from the fish. Add two of the onions, sliced 1 ½ t of salt, 1/4 t of pepper, and 5 C to 6 C. of water in large pot to cover. Bring to boil, turn down to simmer, skim, and cook. While stock is simmering (~30 to 45min). Strain.
Grind fish with remaining onion. This is best done in a meat grinder or best chopped by hand. However, if absolutely necessary you can use a food processor, but it must be done carefully in short pulses to avoid a too smooth paste-like texture.
Mix in the rest of the ingredients. Mix well by hand.
Wet hands and form into oval shaped patties. You should have 12 to 15.
Drop carefully into simmering stock, (add water as needed to cover fish) with sliced carrot and cook ~1hr. Let cool slightly and remove fish and carrot from pot.
Strain stock over fish and chill.
Serve fish with a piece of carrot, aspic, and horseradish.
(The stock should jell. I personally hate the aspic, but my grandparents and mother loved it. Many consider it the best part. I guess it depends on how you feel about fish flavored jello)