this post was submitted on 11 Aug 2023
69 points (91.6% liked)

Programming

17500 readers
37 users here now

Welcome to the main community in programming.dev! Feel free to post anything relating to programming here!

Cross posting is strongly encouraged in the instance. If you feel your post or another person's post makes sense in another community cross post into it.

Hope you enjoy the instance!

Rules

Rules

  • Follow the programming.dev instance rules
  • Keep content related to programming in some way
  • If you're posting long videos try to add in some form of tldr for those who don't want to watch videos

Wormhole

Follow the wormhole through a path of communities [email protected]



founded 1 year ago
MODERATORS
 

I am confused as to whether it is acceptable to use code produced by other people for something that is related to me and my creations. Do i have to resort to coding my portfolio website with pure css and js to demonstrate my credibility and experience as a candidate employee? Does the ideology of 'using other people's tools to create a better product' apply here in this context, or would it be considered plagiarism? Is there some sort of gradient as to how much i should use third party tools for my website for it be ethically appropriate, if it all?

top 33 comments
sorted by: hot top controversial new old
[–] CodeMonkey 75 points 1 year ago (1 children)

Yes, you should use third party tools (just don't take credit for them, maybe even credit the tools used in the footer). In a real job, you would leverage third party libraries to work more efficiently, so you should do the same when showing off your skills.

[–] [email protected] 35 points 1 year ago (1 children)

Yep, someone that insists on writing everything from scratch is sort of a red flag to me. Web development is mostly about knowing how to use third party packages and building on top of that.

[–] intelati 6 points 1 year ago

Insists != for practice.

I've been mulling a "reverse engineer" for practice. But yeah, for the portfolio, you want to use the same ethos as you would use in the job

[–] [email protected] 35 points 1 year ago (4 children)

Absolutely fine.

Could you imagine if every developer recreated the wheel for every project?

[–] [email protected] 18 points 1 year ago (2 children)

Oh boy, do I have some C++ codebases I wish I could show you.

[–] coltorl 11 points 1 year ago* (last edited 1 year ago)

Sometimes it’s easier to DIY than try to figure out the mess of a build system of a dependency! :P

[–] [email protected] 4 points 1 year ago

Ah come on, what’s a little spaghetti code between friends ;)

[–] ipkpjersi 4 points 1 year ago

There are definitely companies like that out there lol, legacy tech can be horrifying.

[–] [email protected] 3 points 1 year ago

Absolutely could! I've worked in a shop where that was the norm. It was not... fun.

[–] Deely 2 points 1 year ago

Machine codes, yes.

[–] [email protected] 32 points 1 year ago (1 children)

That would be a demonstration of your ability with said libraries/frameworks. I don’t see the issue. Unless you are talking about using just the tools with little customization, then it wouldn’t be very impressive. Still not an issue tho.

[–] [email protected] 7 points 1 year ago

Just like writing it in pure CSS and JavaScript would be showing OP's ability to use those tools, and showcasing how creative they are. (Or aren't, I guess.) Everything is built out of something, and the point of a portfolio is to show off what tools the creator is good at using to make things. Whatever it is they want to show off, they should use that skill to make a cool portfolio.

[–] [email protected] 22 points 1 year ago (2 children)

Please tell me you’re not reusing an existing web server to host your site! Employers want to see that you can handle server programming. Obviously this would be hosted on an operating system of your own design, which is handy because you need to design the CPU too. Don’t forget to smelt your own copper for the wiring!

[–] TempestTiger 5 points 1 year ago* (last edited 1 year ago)

Dude you joke, but I wanna' do that someday. Down to the fuckin' smelting. Soon as I don't think I'll set everything on fire by trying.

[–] [email protected] 4 points 1 year ago

Imagine how impressive yet fully weird that person would be. Like the second coming of Terry Davis.

[–] [email protected] 19 points 1 year ago (1 children)

It's only ethical if you build the server yourself from materials found in nature.

[–] [email protected] 1 points 1 year ago

To program from scratch you must first create the universe

[–] [email protected] 18 points 1 year ago

All of society is built upon the foundation laid by others. As long as you're not misleading people into thinking you created something you didn't, I don't see any problem.

[–] [email protected] 17 points 1 year ago* (last edited 1 year ago)

Naturally the answers to your questions depend on who is looking at the website, but from my experience...

Does the ideology of ‘using other people’s tools to create a better product’ apply here in this context

Yes.

or would it be considered plagiarism?

Absolutely not. It's showing that you can incorporate the works of others to build something great rather than spend time reinventing the wheel. Nobody's going to look at your website's source (assuming you link to it somewhere), see a bunch of .ts or .jsx files, and think "oh this person invented Typescript/React/whatever".

Should you need to reinvent Javascript, your browser, your OS, etc..? Probably not, and as long as you're using something built by others to build your website (vscode, node.js, etc), there's no reason to feel like using a library wouldn't be the same. Also, for most real world projects, you'll be using libraries you didn't write. This is just showing that you know how to use them.

Where it would be unacceptable is if you claimed to have created those libraries/tools yourself.

[–] [email protected] 13 points 1 year ago (2 children)

Everyone has good answers but I would check the license of more obscure libraries to just be sure you're not violating it. GitHub has a handy feature that explains the license (if one exists) in easy to understand terms. I've never ran into this issue myself but it's a good habit to have. Especially when you're working for a company.

[–] [email protected] 5 points 1 year ago* (last edited 1 year ago) (1 children)

This is good advice. For example, here's a tricky one: https://github.com/IanLunn/Hover/blob/master/license.txt

Hover.css is made available under a free personal/open source or paid commercial licenses depending on your requirements.

Would you need to pay Ian Lunn Design to incorporate the library into your portfolio website? It's used for a commercial purpose technically, but you're not selling the website to a client. This is a source-available license, rather than a free software license. A free software license permits you to use the software for anything, with the only obligations usually being around keeping copyright notices intact and licensing your code in a certain way.

Generally, free software licenses are simpler and you'll usually be fine so long as you keep your code available under the same terms. Of course, things get a bit tricky when combining incompatible free software licenses...

Compatibility is important if you want to combine software with two different licenses into one major work.

Generally speaking, most software on Github tends to be licensed under a few free software licenses, which are interoperable with each other:

  • MIT License
  • GPL, LGPL, and AGPL Licenses, which have one major difference in obligations between them
  • ISC License
  • Apache 2.0 License
  • Mozilla 2.0 Public License

However, when you combine MIT and GPL together, you may be obligated to distribute any changes you make to the MIT-licensed portion, depending on how strongly it's associated with the GPL portion. This is because the GPL is copyleft—that is, it requires you to provide anyone you transmit the binary form of the software to the associated sources if they ask for them. The MIT license does not require this obligation.

None of this really matters for a website, though, because you're not transmitting the software; you are instead providing a service. Do keep an eye out for the AGPL, because this one applies even with server-side software interacting with clients.

I think writefreesoftware does a good job of explaining licensing for developers in simpler terms than the GNU Project: https://writefreesoftware.org/learn/licenses/

Sorry for the length...it's kind of a complex topic.

[–] [email protected] 4 points 1 year ago

It's getting into the realm of law where the answer is almost always "it depends"

[–] [email protected] 4 points 1 year ago

Thank goodness. I was concerned reading all the answers. It is this simple. Software has licenses.

[–] [email protected] 12 points 1 year ago

Yes, of course. Just make sure you're abiding by their license, that'll tell anyone who cares how it may and may not be used.

[–] [email protected] 11 points 1 year ago

Absolutely not considered plaigarism - If i built a website using React + Material UI, that shows im capable using common industry tools. That also demonstrates (to an extent) familiarity with vanilla JS and CSS.

[–] [email protected] 11 points 1 year ago

You could have an "about this website" section that lists the tools and packages you used, and so on. If I saw that on a candidates website (a little section detailing how the page was made and crediting sources) I'd be insanely impressed. That's the kind of person you know you can work alongside.

[–] [email protected] 8 points 1 year ago (1 children)

Do i have to resort to coding my portfolio website with pure css and js to demonstrate my credibility and experience as a candidate employee?

If you did that, I'd think you're an idiot. Using libraries is standard practice.

[–] [email protected] 3 points 1 year ago

Unless it's like a super minimalist web 1.0 vibe, like basically almost pure html barebones text.

[–] [email protected] 6 points 1 year ago

Would you use them when building things for a client? If yes, then yes. No one gets mad at a carpenter for buying nails.

[–] [email protected] 4 points 1 year ago

As a hiring manager, I’m always interested in seeing a candidate’s exercise of their skills. But “from absolute scratch” is not something we really do in the working world if we can possibly avoid it, so I wouldn’t expect it in your portfolio. If you’ve got some amazing JS or CSS to show off, definitely do so, but point it out because I’m otherwise expecting frameworks.

Ethically there are no problems with libraries and frameworks. If you’re using them consistently with the creators’ licenses, we’ll, that’s what those things exist for.

[–] [email protected] 3 points 1 year ago

Everyone else uses website builders for their static websites, I don't see why I wouldn't. On the job I would expect you not to reinvent the wheel if you don't have to

[–] ipkpjersi 2 points 1 year ago (1 children)

Of course. It also shows that you know how to make use of third party libraries, which a lot of employers like to see.

[–] coloredgrayscale 3 points 1 year ago

but then why would they ask candidates to write functions like binary tree traversal from scratch during interviews? /s