Under The Bridge Under The Bridge

Tag: open source
OSS Internships: Summer Of Code 2020

All you student developers enrolled at some kind of institution of higher education, it’s That Time Of Year Again to start planning for what you’re doing this summer — specifically, if you take our advice for how to start building a career, you’d be well advised indeed to apply next month for the opportunities here:

Google Summer of Code 2020 mentoring orgs announced!

We are delighted to announce the open source projects and organizations that have been accepted for Google Summer of Code (GSoC) 2020, the 16th year of the program!

After careful review, we have chosen 200 open source projects to be mentor organizations this year, 30 of which are new to the program. Please see the program website for a complete list of the accepted organizations.

Are you a student interested in participating in GSoC this year? We will begin accepting student applications on Monday, March 16, 2020 at 18:00 UTC…

The full list of organizations is here:

ORGANIZATIONS; Find an organization to submit a proposal to

Naturally, we recommend that your first stop should be of course swift.org:

Swift to participate in GSoC 2020!

The official application to GSoC starts on March 16. Before then, we encourage all prospective participates to socialize their ideas on the respective Development forum categories. Please tag all posts with the GSoC 2020 tag so that they are easily discoverable by others (e.g., students and mentors) interested in GSoC.

There are several open project ideas available on Swift.org — but potential projects do not need to be restricted to these ideas. Regardless if you are looking into working on a suggested project or one of your own creation, you are strongly encouraged to engage on the forums before applications are accepted to help shape your idea and ensure a good alignment with a mentor.

Prospective Mentors
Several individuals have already volunteered to be mentors, but more mentors are welcome! If you have never mentored a GSoC project but are curious, it is not too late to volunteer!

And if you want to program in Swift rather than on Swift, here’s three interesting ones to check out for a start:

Catrobat: “Pocket Code allows you to create your own games, animations, interactive music videos, and many kind of other apps, directly on your phone or tablet.”

Ideas Page for Google Summer of Code 2020

Amahi: “Making Home Networking and Storage Simple”

Google Summer of Code Ideas

AOSSIE is a collection of Australian projects with multiple iOS app ideas

… or if you’d rather work on Mac tools, there’s Homebrew and MacPorts and all sorts of apps with Mac versions on the list…

… or if you’d rather do something completely different, everything from astronomy software to a DJ mixing application — something for everyone to start their resume out with, so start your application planning NOW!

Summer of Code 2018

Well, here’s some news that’s interesting and also apropos to our Letter To A Young Developer from last time: 

  1. Are you a student developer? (If you’re not, but you know any, keep reading)
  2. Are you interested in an open source internship? (Correct answer is: YES)
  3. Are you interested in SWIFT? (If you’re not, ok wrong blog you may go now)

OK then, here’s an opportunity for you to jump on:

Google Summer of Code 2018

2018SummerOfCode

13,000+ STUDENTS, 108 COUNTRIES
13 YEARS, 608 OPEN SOURCE ORGANIZATIONS

33,000,000+ LINES OF CODE

Google Summer of Code is a global program focused on bringing more student developers into open source software development. Students work with an open source organization on a 3 month programming project during their break from school…

Which is an interesting opportunity every year yes, but this year is particularly interesting if you have designs on the Apple ecosystem:

Swift to participate in GSoC 2018!

I am thrilled to announced that Swift has been selected as a participating open source project in Google Summer of Code 2018!

…  Student applications start on March 12, 2018

The official application to GSoC starts on March 12. Before then, we encourage all prospective participates to socialize their ideas on the respective Development forum categories. Please tag all posts with the GSoC 2018 tag so that they are easily discoverable by others (e.g., students and mentors) interested in GSoC.

There are several open project ideas available on Swift.org — but potential projects do not need to be restricted to these ideas. Regardless if you are looking into working on a suggested project or one of your own creation, you are strongly encouraged to engage on the forums before applications are accepted to help shape your idea and ensure a good alignment with a mentor.

… Key Dates
March 12 (16:00 UTC) – Applications open
March 27 (16:00 UTC) – Deadline to file your application
April 23 (16:00 UTC) – Accepted student proposals are announced
May 14 – Coding begins

Personally, we think a particularly useful place to help out would be the Swift Package Manager, and if that sounds interesting here is your mentor:

So, student developers, if you haven’t got a firm résumé-enhancing plan already in place for the summer, we strongly recommend you give very serious thought to the Summer of Code in general, and making Swift better for us all in particular!

Finding Open Source

So we note particular pieces of open source we stumble across pretty much daily, but we haven’t made a list of good places to be stumbling around in lately … as a matter of fact, not since mid-late 2009. And a good number of those haven’t been updated since. So let’s make a more current list, shall we?

The big change in the last couple years, of course, is that GitHub has pretty much taken over the open source world, particularly for iOS:

Objective-C is the #10 most popular language on GitHub

is about the best link to keep an eye on what of notability to the iOS programmer is trending there in general. Which is pretty close to “everything of importance everywhere” these days.

Now, if you want to be really comprehensive in your search, you could go through

Open Source Software: Top 59 Sites

which looks like as comprehensive a guide to the current state of the wider open source world as you’re likely to find.

There are some nice curated options too: far and away the most consistently updated that we’ve seen is

Cocoa Controls: Custom UI Controls for iOS and Mac OS X

You should also be following the fine, fine ManiacDev.com blog for frequently useful pointers, and keep tabs on their

Open Source iPhone Apps List – Real App Store Code Examples!

Some other iOS-focused sources worth noting:

Open.iphonedev.com

Scoop.it! – iPhone and iPad development

If you’re willing to do a little digging around for useful pieces, these are some general support collections:

Nimbus

CoconutKit

SSToolkit

Enormego’s Cocoa Helpers

And let’s finish up with a pointer to what appears to be an exceptionally high quality collection of usefulness,

Charcoal Design’s Cocoa Open Source

Just dropped the iRate library into a client project and found it quite well written, thoroughly recommended if you want to nag your users; FXLabel looks capable for easily prettifying your text;  iCarousel has some nifty navigation effects (but check commentary here); iConsole is some seriously nifty logging goodness; and … well, check them all out!

UPDATES:

Further links around here:

Interesting Collection Of Open Source Projects From iOSDevCamp 2012 Released

Top 10 Most Useful iOS Libraries to Know and Love

Cocoa Literature List collects interesting articles.

App SDKs collects non-open SDKs

Setting OmniGraphSketcher Free

Update: To-Do List, Currency Conversion, Puzzle Games, More Added To Open Source Apps List

CocoaPods is what pretty much everything Objective-C uses these days.

vsouza / awesome-ios: “A curated list of awesome iOS ecosystem.”

dkhamsing / open-source-ios-apps: “Collaborative List of Open-Source iOS Apps.”

leereilly / games: “A list of popular/awesome videos games, add-ons, maps, etc. hosted on GitHub.”

Open Source Apps for Swift and Apple Watch

open-source-iso-apps: “Collaborative List of Open-Source iOS Apps”

Awesome iOS

How to stay up to date with Swift and the Developer Community

App|Sight: “Find SDKs & services used by iOS mobile apps”

Stayin’ On Top Of Your Game — iOS Newsletters, Blogs/Developers, Companies To Follow

33 iOS open source libraries that will dominate 2017

33 awesome GitHub lists for iOS development

open-source-mac-os-apps

Source: AppReviews

Here’s a handy open-source application for the busy little iPhone programmer:

AppReviews is a tool for iPhone and iPod touch developers, allowing you to keep track of how your applications are being reviewed and rated by users across all of the iTunes App Stores worldwide…

AppReviews is open-source, the source code is available on github. You will require a copy of the iPhone SDK from Apple in order to compile the source code.

Very helpful, very nice, this fellow couldn’t get Apple to approve it so he open sources it … but wait! The plot thickens!

Today I discovered that there is a recent app in the App Store also called AppCritics, which also scrapes review data from the AppStore. I was doubly shocked by this because:

1) I submitted my AppCritics to the AppStore on 30th November 2008 and it was finally rejected in January 2009 because it scrapes data using a non-public web API (the same API iTunes uses). So how come this new app gets approved when it does the same thing?

2) I thought that I “owned” the name AppCritics in the AppStore because I still have the rejected app in my iTunes app listing, with a button that says “Resubmit Binary”. So how can someone else come along and submit an app with the same name, that does the same thing, and get approved?

This is yet another example of how inconsistent and poorly run the App Store still is.

I am emailing Apple about this matter now, I doubt that I will get any meaningful response beyond some canned auto-reply. In the meantime I will be renaming my AppCritics to AppReviews instead.

Heh. On the one hand, at least he GOT a rejection, instead of 110+ days in limbo like our Forgotten Project™, but really, approving an app that does the same thing with the same name … now, that’s just rubbing salt into the wounds, isn’t it?

h/t: LinkedIn – Cocoa Touch!

Source: XPilot

Here’s another GPL’d game ported to the iPhone, like World Challenge that we mentioned earlierXPilot, an old school multiplayer game that now has a new lease on life. But, as we pontificated in the World Challenge notes, there are those who have issues with this kind of resurrection; and in this case, it includes one of the original developers. From the Slashdot article “The Ethics of Selling GPLed Software For the iPhone”:

…We priced it at $2.99 on the App store (we don’t expect it to become the Next Big Thing, but hoped to recoup our costs — such as server charges and Apple’s annual $99 developer fee), released the source on our web page, then enthusiastically tracked down every member of the original community we could find to let them know of the hoped-for renaissance. Which is where things got muddy. After it hit the App store, one of the original developers of XPilot told us he feels adamantly that we’re betraying the spirit of the GPL by charging for it.

This would be the kind of person that Fake Steve Jobs coined the term ‘freetard’ for. The GPL not only doesn’t mandate a price of nothing, it explicitly allows the charging of whatever fee you see fit for distribution, so long as all source is made available. So nobody serious believes that said original developer has any point. But it does bring up where the real debatable point is, since you can’t recompile on your own phone or redistribute through the App Store without the $99/yr licensing fee by Apple, does that constitute a violation? If you read through the 581 and counting comments, you’ll see every shade of opinion … including a link to the one that we can take as authoritative, I have no doubt: Brett Smith. And who is Brett Smith, you ask? Why, he’s the “Licensing Compliance Officer” for the FSF. Seems that this subject was brough up last year with him over at Linux.com, and here’s the scoop: There is no barrier the FSF sees to GPLv2 compliance. However, GPLv3 is off the table:

…The iPhone Developer Program establishes Apple as the sole provider of iPhone applications. You can choose not to charge for an app you author, but the iTunes Store is the only channel through which it can be delivered to end users and installed. Apple signs the apps it approves with a cryptographic key. Unsigned apps won’t run on the iPhone.

This condition conflicts with section 6 of the GPLv3, the so-called “anti-TiVoization” provision. In particular, it prohibits Apple from distributing a GPLv3-licensed iPhone application without supplying the signing keys necessary to make modified versions of the application run, too.

Thus, you as the developer could attempt to place your code under the GPLv3, but Apple could not distribute it — and since only Apple-signed programs will run, no one else could distribute it either.

The FSF’s Smith says the fact that the author of the program (i.e., you) and the distributor of the binary (i.e., Apple) are unrelated entities makes no difference. “If a program is meant to be installed on a particular User Product, GPLv3 imposes the same requirements about providing Installation Information whether the software is directly installed on the device or conveyed separately.”

Because of the GPL’s viral nature, any app that is derived from other GPLv3 code must be licensed in a way that preserves GPLv3’s code signing requirement. But there are still projects that have chosen to retain earlier licenses, such as GPLv2, and prior versions of the GPL did not include the code signing requirement. Thus you could in theory place your work under GPLv2, as long as it was either entirely original or derived only from code licensed under GPLv2 and earlier…

So there you go, we’ve got that question officially settled then; any program licensed under GPLv2 is cool with the FSF for the App Store, long as you make the source available. Excellent. Soon as we find some free time under the couch or something we will definitely look at picking a project like these to port to the iPhone for the benefit of those who enjoy rooting through code written by their potential contract trolls.

In the meantime, support these fellows’ trailblazing efforts, pick up what all the fuss is about for a mere $1.99!

XPilot

Source: World Challenge

Now here’s something we’d sorta been pondering ourselves might be worth doing; this fellow’s taken the GPL’d crossplatform game Tux Racer and ported it to the iPhone

tuxrider

… for $3.99. Whilst providing a desktop build for free, and source downloads at the bottom of the product page which apparently this fellow feels meet the terms of the GPLv2 sufficiently.

We say “apparently”, because there is a body of opinion out there that since the casual consumer cannot edit the source code to an App Store-bought application and run the edited program directly on their phone, it is impossible to comply with the terms of the GPL with an application distributed through the App Store. We don’t subscribe to that personally, mind you; first off, nowhere in GPLv2 does it explicitly state that you must be able to run it on the distributed device — so being able to run your modified code in the simulator, which requires nothing but the freely downloadable Xcode toolchain, arguably satisfies the license adequately. And even if you do insist that the terms implicitly require that you run the modified version on the distributed device, then we don’t think that the $99/year developer program fee to Apple to be able to run whatever source you like on your phone is a condition that amounts to a GPL violation, any more than needing to buy a commercial compiler to do something useful with any desktop GPL’d source would violate it. But as the Free Software community is disproportionately populated with Apple-haters, mere logic is not always sufficient to appease them; and as this (to our knowledge) is the first GPL-licensed iPhone program that anyone has attempted to charge money for, if there is anyone out there willing to test their anti-iPhone interpretation of the GPL in court, well, this is whom they’d probably pick for a test case.

So we’ll be watching to see if any of the huffers and puffers get all indignant about this fellow’s entrepreneurial bent; and if not, we’ll probably look for some GPL’d game to port ourselves, as we would rather like to have an open source iPhone project to direct those who would like to see some demonstration of our coding practices to, and hey if it might make a buck or two that’s always great as well! In the meantime, if you’re a desktop Tux Racer fan, and not a programmer yourself — buy it to encourage more GPL’d source ports!

World Challenge

Colophon:Well, today was to be the final client-provided post of The Great WordPress Client Test, finishing up with über-text-editor

TextMate

TextMate 1.5.8!

but the actual testing ends up a DNF, as we couldn’t be bothered actually getting TextMate to work. See, its blogging extension’s bundle’s idea of configuration is to have you put your blog’s XMLRPC address in a text file. We gave it a couple tries at what we think that address should be for this blog, but it failed to make them work. And we figured we just wouldn’t bother to keep trying, since obviously there wasn’t going to be any useful conveniences here at all, so at best it would make it into the same class as the other non-WYSIWIG tools. So we’ll award it 2/10 to put it at the bottom of our ratings due to its completely beyond the pale requirement of “needing a clue about blog internals” and leave it at that.

Resources: Open Source

Let’s list off today some sites worth checking out for iPhone/Mac programming open source goodies should there not — heaven forfend! — be anything particularly appropriate already mentioned in the annals of this humble journal. Hard though that is to imagine of course!

And for a vast list of iPhone-devoted not only open source projects but everything from LinkedIn groups to useful blogs (why, it even lists us! How sweet!), the pithily named

iPhone Resources

is not to be missed.

As always, if there’s anything noteworthy we’ve missed, comment away!

Displaying PDFs

So if you want to display static content from HTML and PDF in your application, you probably know that it’s pretty easy to just throw the files into a folder and display them in a UIWebView something like this:

NSString *basePath = [[[NSBundle mainBundle] bundlePath] stringByAppendingString:@"/html/"];
NSURL *baseURL = [NSURL fileURLWithPath:basePath];
NSString *dataPath = [basePath stringByAppendingString:FILENAMEHERE];
NSString *dataType = [dataPath hasSuffix:@"pdf"] ? @"application/pdf" : @"text/html" ;
NSData *infoData = [NSData dataWithContentsOfFile:dataPath];
[infoView loadData:infoData MIMEType:dataType textEncodingName:@"UTF-8" baseURL:baseURL];

which works just fine, if your data is formatted nicely for iPhone display. Which for HTML is easy to sort; but it’s rather less likely that the PDFs you’re provided are suitable for iPhone display, they may be unduly large, inappropriate compression, yadayadayada. Well, here’s how you fix that quickly: just get the handy-dandy PDF Shrink desktop utility and apply iPhone-targeted compression settings. Convenient, yes?

But if you really want your PDFs to get displayed professionally with table of contents and everything, here’s just your thing: The fellow who published the book ‘Scientific Scripting with Python’ exclusively on the App Store has very kindly provided a detailed walkthrough of constructing the application, formatting the document for the device:

If you decide to publish your own book using the source code, here is what you will need to do:

  1. Create a document like the one I made in Pages, with the same or similar page layout and text formatting.
  2. Generate a PDF from the document, and include it in the Xcode project.
  3. Change the value of the BKPDFFileName variable in BooksViewController.m to point to your PDF file.
  4. Change the data in the TableOfContents.plist file so the table of contents is correct.
  5. Double click the ‘Python’ target, and change the name to something suitable for your book.
  6. In the Build settings of the target, change the ‘Product Name’ setting.

That should cover most of it.

Sweet! Not that we have any actual full books to publish at the moment, but hey if we ever do we certainly know where to start!

SIO2 3D engine

Here’s something we stumbled across while checking a post on the previously mentioned here cocos2d-iphone 2D open source engine for the iPhone: SIO2 a 3D open source engine for the iPhone! Some of its particularly nifty feature list entries:

  • Bullet physics engine
  • OpenAL positional and ambient sound
  • Theora video
  • Blender content creation
  • Lua scripting
  • That looks pretty darn impressive as a free foundation to build on, doesn’t it now?

YouTube demo video here; Google Code project here; main website here.

And as an aside, here is a roundup of this and other free and commercial 3D engines available and rumoured for iPhone development. Looks like we certainly won’t be short of options soon!

h/t: iPhoneintouch!

Molecules open sourced!

Here’s some good news for anyone wanting a leg up on OpenGL for the iPhone: Brad Larson, the developer of Molecules a 3D molecular visualizer available on the App Store, has now open sourced the entire project:

With the lifting of the Nondisclosure Agreement on the iPhone SDK, I’m pleased to finally make available the source code to Molecules. If you go to the main page for the application, you should now find a link to download the latest source tarball (for version 1.2) on the right-hand side. You can also download the source code here. I am working on migrating my personal Subversion setup so that you can check out the latest code and so that I can authorize contributors to commit fixes and additions.

Unfortunately, I haven’t documented the current code release as well as I would like. To make up for that, I’ll attempt to describe the structure of the application and why I do things the way I do. I don’t claim that everything here is optimal, but I hope that it can be a useful resource for those interested in OpenGL ES, SQLite, multitouch, and table views on the iPhone.

All code is released under the BSD license, so you are free to cut and paste it into your own applications without restriction…

Sweet! Also, don’t miss Messr. Larson’s earlier blogging about OpenGL ES for non-NDA-covered lessons learned in connection with Molecules’ development. Lot of great info there too.

h/t: MacResearch!