Inti FAQ
Frequently Asked Questions, with Answers.
Why is it called Inti?
Inti is a Quechuan (and also Incan, apparently) deity. Abel Werner
suggested this
link to learn more about Inti the Incan sun god. There's also
some stuff in Britannica online that isn't linkable.
I needed a short, untrademarked, reasonably-positively-connotated
word; there aren't many of them left. Inti was the best one I
could find.
What are the goals of the Inti project?
Inti is intended to be an easy-to-use, consistent, integrated C++
application development platform. It's a set of libraries, rather than
a single library; you aren't required to use all of them. But they are
documented as a whole and follow a single set of conventions, so it's
easy to use the ones you want.
Some of the priorities of the project:
- Stable interfaces, with an easy upgrade path between releases.
You can install, use, and develop against multiple versions of Inti
simultaneously. And even though you'll never be forced to upgrade,
porting your apps from one version of Inti to another will be
straightforward.
- Use of the standard C++ library features; your generic algorithm
code won't be tied to Inti, because Inti uses standard types such as
std::string and std::vector.
- Consistency; to make Inti easier to learn, the interfaces
religiously follow strict conventions.
- Modularity; you don't need to link your app with Inti modules you
aren't using.
- Ease of use; we hope Inti will attract lots of new developers to
Linux, who may be intimidated by the bewildering array of libraries
available. Inti gives you a single integrated package, with all the
interfaces you need.
- Documentation; stable releases of Inti will have excellent documentation.
- Timely releases; Inti should come out fairly quickly after the
next version of GTK+.
- Maturity; Inti will not be maintained as a "bleeding edge" library; it will
support features as they become mature.
Who's behind Inti?
Inti is being developed by Red
Hat Advanced Development Labs, but there isn't anything Red Hat
specific about it. The primary maintainer right now is Havoc Pennington.
How is Inti licensed?
It's under the GNU Lesser
General Public License, similar to most libraries on the Linux operating
system. In general terms, this means that it's OK to develop proprietary
software with Inti; however you should read the license yourself (or have your
lawyers read it), in order to get all the details about your rights and
responsibilities.
What does Inti include besides a GUI toolkit?
For the first release, the main nongraphical interfaces in Inti are in the
"libinti-base" library and the "libinti-pango" library. The interfaces include:
- Internationalization/unicode infrastructure
- Main loop support
- Calendrical calculations
- Signal system
Eventually, Inti will probably contain useful code such as:
- File handling interfaces (higher-level than the standard UNIX ones)
- Convenient networking interfaces
- A database API, and database-connected widgets
- A library for printing
The base library will remain relatively small, large new features will be
in their own module, so you won't need to link to things you don't use.
These interfaces will all use consistent conventions and integrate nicely with
the rest of the Inti package.
What's the relationship between Inti and GTK+?
Inti is a collection of libraries; one of them, "libinti-gtk", is a GUI toolkit
implemented in terms of the GTK+ GUI toolkit. However, the interface presented
is entirely C++; there's never any need to use GTK+ directly.
How does Inti improve on plain C GTK+?
Inti adds a number of features:
- Namespace support
- Type safety, no need for type casting
- Use of C++ native types such as string and vector
- Derivation of new widgets using standard C++ mechanisms
- Deprecated and legacy interfaces that have built up over the years in GTK+
are not included in Inti
- Typesafe C++ signal system
- Full wrapper for all C types, including enumerations and GDK types
Why does Inti contain yet another C++ binding for GTK+?
Because Inti::Gtk's technical goals are not compatible with existing
bindings. I spent quite a bit of time and effort talking to the gtk--
maintainers about merging the projects, but in the end we decided that
a merger would involve abandoning the design goals of one project or
the other, and neither of us were willing to give up the features we
wanted to avoid duplicating a few thousand lines of code. Inti is a
genuinely different project from gtk--. However, it is based on a
thorough study of gtk--, and the gtk-- developers strongly influenced
the Inti::Gtk design.
One somewhat philosophical difference between Inti and Gtk-- is that
the Inti::Gtk module presents a smaller API with less programmer
flexibility than Gtk--. For example, Inti::Gtk widgets have a
single model for memory management (equivalent to objects with
manage() called on them in Gtk--); you can't select at runtime
what sort of memory management you want as you can in
Gtk--. Inti::Gtk doesn't try to present an STL container interface
to GtkContainer, because that adds complexity but doesn't add
end-user-visible functionality. The general idea is that Inti
tries to provide one good way to do something, and no more,
because the Inti focus is on a short learning curve rather than on
maximum programmer flexibility.
For more details I'd encourage you to read about the goals and
features of Inti mentioned elsewhere in this FAQ, and then look at
the code itself. You should be able to get a pretty good idea how
Inti works and how it compares to Gtk--.
And before you flame me on this topic, remember that we're talking
10,000 lines of code; significant, but not a giant
project. Inti::Gtk represents only a month or so of work.
Does Inti run on Windows?
No, not yet anyway. It's probably possible to get it running with gcc
and Cygwin without
too much hassle, and I'll take those patches if you send them to
me. However, Inti has no chance of compiling with Visual C++, because
Visual C++ doesn't support large chunks of the C++ standard. I'm not
really interested in breaking Inti in order to support this compiler.
Does Inti run on UNIX-like systems other than Linux?
I have no idea. ;-) In principle, it runs on any system that has either gcc or a reasonably up-to-date C++ compiler. But
I don't have any of these systems, and haven't tried it. If you try it and make
Inti run, please send me any patches you had to apply.
Does Inti include GNOME support?
It doesn't link with gnome-libs, but it does include everything you need to
write an application that works nicely with the GNOME desktop.
How does Inti::Gtk do signals/callbacks?
It supports two different approaches; you can either connect slots to
signals or you can override virtual methods. Signals and slots are
done entirely with C++, as in Gtk--, so there's no preprocessor as
with Qt.
|