Pour ½ cup warm water, 2 tbsp. sugar and the yeast into a large bowl. Set aside for 10-15 minutes until thick and bubbled. (If the mixture does not bubble, it means your yeast is probably dead and your challah will not rise, so you'll need to start over.)
After the mixture has bubbled, add the eggs, oil, honey, salt and the rest of the sugar and warm water. Mix until just combined.
Add the whole wheat flour first and mix well. Add the bread flour a few cups at a time and keep mixing until you have a soft ball of dough.
The more you knead the dough, the better. If you're using a mixer, the machine can do the kneading for you. Just leave it turning on a low speed for 5+ minutes. If you're kneading by hand, turn the dough out onto a table to counter and knead for a good 10 minutes.
Put the dough in a bowl, cover tightly with saran wrap and leave to rise. You can put it in a warm place to rise for 2-2½ hours, or in the fridge overnight for a slow rise.
When the dough has finished rising, do the mitzvah of separating challah. Then tip it out and divide into 5-6 pieces. Each of the pieces will become 1 challah. If the dough feels a little sticky, dust your hands with flour so you can work with it easily.
Divide each piece of dough into either 3 or 6 strands (depending on whether you want to do a traditional 3-braid challah or a more complex 6-braid.) If you want to make an onion challah, rub each strand with the onion mixture before braiding. Then smear more onion mixture over the top when done. To make a plain challah, brush the top with beaten egg.
Place the challahs on a pan. Use 11x17 cookie sheets (2 challahs per pan), or put them in loaf pans. Let the loaves rise for 15-20 minutes after braiding, then bake on 350°F for 45 minutes.