Open Source projects for fun and profit!
This is Jeff Heaton, let me tell you about how you too can be
an open source author.
Like just about everything in publishing
the barriers to entry have come crashing down
in the areas of open source; for example, if someone tells you
that they are an author, what does that even
mean? It might mean that they just uploaded a PDF to
self publishing on Amazon.
Heck, I've done that. If someone tells you that they are an open source author
source contributor.
you might immediately think they are contributing to some
gigantic Apache project.
And are well received and trusted. Or it could just mean
they uploaded something to GitHub, so we're going to talk about that
What exactly is an open source project
these days? There are really several levels of that, that I will get to in a second.
GitHub is great. GitHub gives you a way to
to take source code that you've written
projects that you've worked on, that would otherwise sit
sit in your hard drive somewhere, collecting dust
until you accidentally delete them.
you can take some of thes projects that you've done
take them and polish them up a bit (so they are not an embarrasment, thats a good thing).
and put them onto GitHub, here you can see my github account.
Whats cool about this...
is that this can become a very cool part of your resume If you see, I have 1.1
basically 1,100 followers
some of my repositories have quite a few stars
my Artificial Intelligence for Humans has 700
and I've done an Encog project that has very similar
and I've also got my deep learning course, which has
560 stars. So this immediately
shows you, when you are looking at somebody's GitHub repository...
okay people are following this, or interested in this
theres people with alot more followers than me
but, this is the level to which
I've gotten.
Here you show when people have contributed to their
repository, so just looking at the amount of green there
when you're evaluating somebody's git repository, that shows you
how active they are. So, here are
the steps of progression... code sitting on a hard drive
you've worked on a project... you own the code.. its just
where you learned something new, but its sitting on your hard drive
and for me that is going to last until the next time I
reload my operating system, and then I'll lose it
next you take that code and you think hey, somebody else
might be interested in this, so you put it on your GitHub.
repository. Congratulations! You are now an open source author!
Now putting it onto GitHub, that may or may not
really do much for you.
You probably
want to have your GitHub account linked on a few places. Like on LinkedIn
and other things. LIke Twitter, I definitely do that.
But, now the next step, and my own
progression through this, is I took some of the code
that I published for the Society of Actuaries
conferences and I put it onto GitHub, just so that people could download
progressing to the next step is
you have something on GitHub that people actually care about
you'll know about this, they will start submitting issues
when you see a project on GitHub that has no issues, it does not
mean the guy wrote perfect software, it means
nobody has actually cared about it enough to actually
enter something. I ran into this, people started
using my code that I had written about in conferences
and submitted and published
and all of a sudden they start giving me issues, and I need to start
fixing this. Then you start to get into
automated builds and unit tests
this especially gets into some of the code that I have
that became my Encog Neural Network Framework
that I worked on alot, maybe 2008
to 2012 or so.
That is really challenging, you start to have people give you code
doing pushes onto GitHub
And this is great, people are contributing stuff
and you put it into your program... and... it breaks other stuff
so this is where unit tests, and automated builds are
critical as you progress through the
levels of maturity. As more and more people
cared about Encog
they asked me to put it into
Maven and NuGet, this
made it easy for them to build it into their own projects
and I started doing this as well
that is as far as I really got to
I did have other contributors working on this
but I put the infamous ???
and then big time, I don't know, where you are
a big project, like Apache, or something like that
but I never particularly planned for any of
my projects to go to that level
certainly the way this would happen, at least in my opinion
is you would have more and more people starting to
contribute to your project and it would
go from there. This is Encog
this is absolutely my biggest
on GitHub, I've worked on it
off and on since 2008
you can see there are 3,600 commits, most of them are by me
and there are 31 different contributors, so thats the number of people that just came in
from the general community and gave me code and
fixed bugs, various things
Currently 63 issues open on this, many of those are
just support questions, and I may or may not
have time to help people
with individually
This is a neural network codebase, so there is alot that people will need to
do with preprocessing, so they will sometimes just post it as an issue
and its really a support request. I do not do alot with
Encog currently, its a neural network framework
so in the world of 2019, where you've got
TensorFlow, and Keras, and all these guys
I just use the neural network libraries that the big boys put out
but this is a neural network package that I
wrote back in 2008, started out in Java and
kind of writing all this stuff from scratch.
And thats it! Think about putting code out onto GitHub, it can be a great way
to get known in the community, and you can
post your repositories
on Twitter and on other places that you
answer questions. StackOverflow is a great place
that I've used GitHub
in conjunction with
If you've found this interesting, please
go ahead and subscribe to my YouTube channel. Thank you very much.