There is a famous say in Economics: "There's not such thing as a free lunch". Passengers are paying for the meal they eat aboard, whether it was prepaid at the time the ticket was purchased, or during the flight. From a customer service and marketing perspective, adding the cost of the in-flight meals to the total ticket price is a smart move, because it gives customers the sense that they are getting something for nothing.
We pay enough for airline tickets that a meal should be free on a long flight. Airlines have cut pretty much everything and still make incredible profits. Oil prices continue to drop and airlines continue to make more money. Passengers should absolutely get a free meal on a long flight.
The average person eats three meals per day. If we can assume (based on the overall average) that these meals are eaten at 8 am, 1 pm, 6 pm, then we see that there is 5 hours in between each of these meals. Any airline flight over 5 hours (lengthy) then should include a meal, or at least offer a free meal. If a person is not hungry, they are not forced to eat, but traveling is also extremely stressful which increases our calories burned and makes us even hungrier.
It's not that hard to pack a couple of granola bars or a sandwich to bring on a flight, people can pretend they are going camping for the length of their flight. Once you factor in the cost of ordering, purchasing, storing meals, getting rid of waste, the cost of a ticket goes up by $50 for a $3 meal. In that sense it isn't free at all.