Inti Logo
Mailing Lists

Modified: 2000/07/25 22:11:50
Hosted by: Sourceware
Sponsored by: Red Hat, Inc.

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.

Home | FAQ | Download | Mailing Lists | Documentation